| 
임펠리테리입니다.
며칠 팁을 쉬었군요. 죄송합니다.
 
 오늘의 팁은, 어플리케이션을 작업표시줄에 따악~ 엎드린 상태로 안튀어나오게
 만드는 겁니다. 작업표시줄에는 나타나야하지만 메인폼을 보여주면 안될 경우
 써먹으면 되겠죠?
 
 이 팁의 주인공은 WM_QUERYOPEN 메시지입니다. 이 메시지는 최소화되어있는 어플을
 클릭하거나 해서 원래의 윈도우로 복원시키려 할때 발생합니다. 요 메시지를
 잡아먹어(?) 버리면 작업표시줄의 아이콘(달라붙어있는 어플의 바)를 클릭해도
 아무일도 안생깁니다. 이런 처리를 위해서는, 폼에 들어오는 메시지중 WM_QUERYOPEN
 메시지만 무시하도록 메시지 핸들러를 만들어버리면 됩니다. 방법은 강좌에서도
 언급한 메시지맵을 사용하도록 합시다.
 다음은 폼 클래스내의 protected: 섹션에(다른 섹션에 해도 큰 문제는 없습니다만
 프로텍티드로 하는 것이 일반적입니다. 왜 그런지를 잘 이해하시지 못하신다면
 짬을 내셔서 클래스를 다시한번 공부해보시는게 좋겠습니다.) 추가합니다.
 
 void virtual __fastcall WMQueryOpen(TMessage& Msg);
 
 그리고 폼의 생성자가 있는 public: 섹션의 가장 마지막에, 그러니까 클래스선언을
 끝내기 직전부분에 다음과 같은 메시지맵을 작성합시다.
 
 BEGIN_MESSAGE_MAP
 MESSAGE_HANDLER(WM_QUERYOPEN, TMessage, WMQueryOpen)
 END_MESSAGE_MAP(TForm)
 
 그럼, 이제 폼의 유닛 파일에 메시지핸들러를 정의해주면 되겠죠?
 내용은 무식합니다.
 
 void __fastcall TForm1::WMQueryOpen(TMessage& Msg)
 {
 Msg.Result = 0;
 }
 
 더럽게(?) 무식하죠? ^^ 이 메시지핸들러의 역할은, WM_QUERYOPEN 메시지가 들어
 왔을때 그걸 꿀꺽~ 삼켜버리는 겁니다. 그러니 당연히 폼은 리스토어 되지 않겠죠?
 
 만약 상황에 따라 폼이 복원되어야 할때도 있고 복원되어서는 안될 경우도 있다면
 위 메시지핸들러 내에서 if 등으로 검사해주면 되겠네요.
 
 그럼, 모두들 하루 잘 마무리 하시길 바라면서, 이만...
 
 (이 팁은 인프라이즈의 빌더 FAQ를 참고로 하여 작성하였습니다.)
 
 
 
 
 독립문에서 임펠리테리였습니다.
 
 
 |