|
여러가지 방법이 있겠지만 저는 주로 메세지 교환 방식을 사용합니다.
Unit1.h
//---------------------------------------------------------------------------
#define WM_FORMLOADED WM_USER + 5050
class TForm1 : public TForm
{
__published: // IDE-managed Components
void __fastcall FormShow(TObject *Sender);
private: // User declarations
void __fastcall wmFormLoaded(TMessage& Msg);
BEGIN_MESSAGE_MAP
VCL_MESSAGE_HANDLER(WM_FORMLOADED, TMessage, wmFormLoaded);
END_MESSAGE_MAP(TForm)
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
Unit1.cpp
//---------------------------------------------------------------------------
void __fastcall TForm1::FormShow(TObject *Sender)
{
PostMessage(Handle, WM_FORMLOADED, 0, 0);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::wmFormLoaded(TMessage& Msg)
{
Application->ProcessMessages();
Sleep(1000);
ShowMessage("폼 다 떴시다~~!");
}
//---------------------------------------------------------------------------
위에서 Sleep() 을 넣은것은 폼이 뜰때 아무 하는일이 없으니 워낙 순식간에 뜨니까 별로 재미가 없어서 폼이 보여지고 나서 약 1초 가량 지연해서 보여주기 위해서 그런겁니다. 메세지외에 시간이 필요한 작업을 이 안에서 해도 괜찮겠죠. 그럼 수고하세요..
용준 님이 쓰신 글 :
: 궁금이 님이 쓰신 글 :
: : 용준 님이 쓰신 글 :
: : : 폼의 show 이벤트에 메시지박스를 보이게 했더니 폼이 보이기 전에 메시지박스가 먼저 보이더군요..
: : : 폼이 먼저 뜨고난 후에 메시지박스가 뜨게끔 하는 방법은 없을까요?
: : : 도움 부탁드립니다.
: : 폼 Active이벤트에 넣어 보심이.. 어떨런지..
:
: 그렇게하면 입력포커스를 옮길때마다 이벤트가 발생하지 않나요?
: 그렇게 하면 안되거든요
: 폼이 다시 보여질때만 이벤트를 발생시키려고요....
:
:
|