java 自定义消息_Vc中自定义消息及其触发使用
Vc中自定義消息及其觸發使用
如何在VC++中加入自定義消息,我的做法:
這里我以一個對話框為例子,環境:VS 2008,新建一個工程,選擇對話框:以編譯器給出的對話框為藍本,自己新建一個按鈕如圖:
把名字改成如圖的,其他比如ID什么的都不改了,默認。
1首先在ownermessageDlg.h中定義消息:例如
define WM_MYMESSAGE (WM_USER+100)
2在.H文件中,加入消息響應函數,如:
afx_msg LRESULT OnMyMessage(WPARAM w,LPARAM l);
該函數有規定的格式:
afx_msg LRESULT Function_Name(WPARAM w,LPARAM l);
3在ownermessageDlg.cpp中加入消息響應宏
在響應該消息的類中,在消息響應塊中,
BEGIN_MESSAGE_MAP(CownermessageDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
加入以下語句:
ON_MESSAGE(WM_MYMESSAGE, OnMyMessage)
成為如下樣式:
BEGIN_MESSAGE_MAP(CownermessageDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_MESSAGE(WM_MYMESSAGE,OnMyMessage)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
4在.CPP文件中,編輯消息響應函數,如下:
LRESULT CownermessageDlg::OnMyMessage(WPARAM wParam, LPARAM lParam) {
MessageBox(_T("My Message!"));
return 1;
}
5.在對話框中為新增的按鈕添加單擊響應,ownermessageDlg.cpp中的MESSAGE_MAP變成:
BEGIN_MESSAGE_MAP(CownermessageDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_MESSAGE(WM_MYMESSAGE,OnMyMessage)
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_BUTTON1, &CownermessageDlg::OnBnClickedButton1)
END_MESSAGE_MAP()
voidCownermessageDlg::OnBnClickedButton1()
{
// TODO: Add your control notification handler code here
//::PostMessage(
PostMessage(WM_MYMESSAGE, IDC_BUTTON1);
}
PostMessage(……)這個就是響應WM_MYMESSAGE消息的,其實這樣寫也是可以的:
PostMessage(WM_MYMESSAGE);
我們來看看這個消息的函數原型:
在CWnd::PostMessage中定義
BOOLPostMessage(
UINTmessage,
WPARAMwParam= 0,
LPARAMlParam= 0
);
Parameters:
message
Specifies the message to be posted.
wParam
Specifies additional message information. The content of this parameter depends on the message being posted.
lParam
Specifies additional message information. The content of this parameter depends on the message being posted.
Return Value
Nonzero if the message is posted; otherwise 0.
所以一般的當點擊時,消息觸發就會發送一個WM_MYMESSAGE消息,故而調用CownermessageDlg::OnMyMessage(WPARAM wParam, LPARAM lParam)這個函數。
分享到:
2008-01-22 10:57
瀏覽 564
評論
總結
以上是生活随笔為你收集整理的java 自定义消息_Vc中自定义消息及其触发使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 推箱子java下载_Java实现简单推箱
- 下一篇: 杭电oj java printf_杭电o