|
[헤더 파일]
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
private: // User declarations
void __fastcall MessageProcess(TMessage &Msg);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_NCPAINT, TMessage, MessageProcess);
END_MESSAGE_MAP(TForm);
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
[소스 파일]
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::MessageProcess(TMessage &msg)
{
switch(msg.Msg) {
case WM_NCPAINT : {
Form1->Caption = TimeToStr(Time());
break;
}
// 이 곳에 Message Map에서 설정한 여러가지 메세지를 받아 개별처리 할 수 있습니다.
}
TForm::Dispatch(&msg);
}
만약, WM_NCPAINT의 이전 기능을 죽이실때는, Dispatch를 빼주시면 됩니다.
DAK 님이 쓰신 글 :
: 안녕하세요... 답글 감사드립니다...
: 죄송하지만 메세지 맵으로 구현하는 예제를 부탁드립니다...
: 좋은 소스를 보고 싶네요.. ^^
: 다시한번 감사드립니다.. 좋은 하루 되세요...
:
: 유영인.Chris 님이 쓰신 글 :
: : WH_GETMESSAGE를 직접 후킹하시는 것보다, 메세지 맵을 만드셔서 하시는 것이 좋으실 것 같습니다. 키보드나 마우스 같은 경우에는 후킹이 꼭 필요하지만, 일반 어플리케이션에서는 WM_NCPAINT에서 후킹이 꼭 필요할 것 같지는 않네요. 후킹을 사용하시면 프로그램을 짤 때, 제약을 해야 하는 부분이 많고 생각을 해야하는 부분이 많아, 메세지 맵으로 처리가 가능하다면 이 방법을 사용하시는 것을 추천해 드리고 싶습니다.
: :
: : 메세지 맵을 만드셔서 하시는 예제를 원하신다면 리플을 달아주세요. 집에 있는줄 알고 찾아보니깐 회사에 있나보네요.
: :
: :
:
|