|
OnCreate는 그 폼이 만들어질 때, 발생하는 이벤트 입니다.
폼이 만들어지는 순서는, Project - Option - Form 메뉴에 보시면, 폼이 쭉 나열된 것을 보실 수 있는데, 이 순서가 폼이 만들어지는 순서구요.
만약, 첫번째 순서에 있는 폼의 OnCreate 발생시점에서 두번째 폼을 ShowModal 시켰다면, 두번째 폼은 아직 만들어지지 않은 상태이니 에러가 납니다.
만약 세 폼을 모두 띄우고 싶으시다면, 각 폼의 OnCreate에서 해당 폼만 ShowModal 시키는 루틴을 추가시켜 주시거나, 아니면, Main 폼의 OnActivate 에서 이전과 똑같이 작업을 해주시면 됩니다. OnActivate의 이벤트 발생 시점은 모든 폼이 만들어지고 메인 폼이 떠서 활성화가 될 때 발생합니다.
하지만, 만약 OnActivate 을 사용하시려면, 다른 초기화 변수 하나를 두어, 한번만 실행이 되게 하셔야 합니다. 그렇지 않으면 폼을 옮겨다닐때마다, 계속 발생하니깐요.
미혜 님이 쓰신 글 :
: 제가 폼이 3개가 있는데요..
: main폼에서 English를 선택하면 FrmEng폼, Korean을 선택하면 FrmKor폼..
: 이렇게요..
:
: 그냥 처음에 oncreate에서 세개의 폼을 다 열고
: 소스에서 Show(), hide()하면 잘되는데요.. 문제는요..
: 이 프로그램이 실행하고 재부팅이 되거든요. 재부팅시 다시 이프로그램을
: 자동실행을 한번 해주어야하거든요.
: 그래서 레지스트리에 자동실행까지 등록을 시켰어요. 그리고 실행하면서 다시 삭제를 시키구요.
: 한번만 자동실행 되면 되니까요.
: 그리고 자동실행이 되었을 경우는 main 폼이 아닌 FrmEng 또는 FrmKor폼이 떠야 해요.
: 그래서 레지스트리에 자동실행이 등록되어 있을 경우는
:
: if (레지스트리에 등록되어있을경우)
: FrmKor->show();
: FrmMain->hide();
: 를 하니까요. 에러가 뜨더군요..
:
: 그래서 oncreate에 3개의 폼을 모두 뛰우는 것이 문제인듯 싶어서요.
: frmMain만 열고, showModal()로 폼을 뛰우려 하니 에러가 떠요..
: 제 기존 폼에서 잘못되었나 싶어서 완전이 새 프로젝트에 폼 2개, 버튼 하나만 만들어서,
: Frm2->ShowModal();을 하니(물론 cpp에 Frm2헤더화일 추가하였습니다.)역시 같은 에러가..
: 그 에러는요..
:
: Project Pro1.exe raised exception class EAccess Violation with message
: 'Access violation at address 004016D3 in module 'Pro1.exe'. Read of address 00000000'.
: Process stopped.Use Step or Run to continue.
:
:
: 이거에요.. ok버튼을 누르면 축소된 에러가 뜨구요. 또 ok버튼을 누르면 계속 실행을 되더라구요.
: 제발 봐주시기 바랍니다.~~~~
:
:
: 저기요..제가 너무 급하고 답답해서 그런데요..
: 정말 고수님들 kmihye@sorimail.net 여기로 전화번호 남겨주시면 제가
: 통화좀 하고 싶거든요..(지금 저의 과장님이 해외 출장중이셔서 물어볼 사람이 없어요.ㅠㅠ)
:
:
|