1. 程式人生 > >MFC SendMessage小bug記錄

MFC SendMessage小bug記錄

MFC傳送自定義訊息

dlg.h

afx_msg LRESULT test(WPARAM a, LPARAM b);

dlg.cpp

BEGIN_MESSAGE_MAP(videoDialog, CDialogEx)
	ON_WM_SYSCOMMAND()

    //自定義訊息
	ON_MESSAGE(0x9878, test)
END_MESSAGE_MAP()
LRESULT videoDialog::test(WPARAM a , LPARAM b)
{
	// TODO: 在此新增控制元件通知處理程式程式碼
	MessageBox(_T("get test message"), _T(""));

	return 12138;
}

dlg.cpp中觸發或者其他視窗中觸發,SendMessage即可

 

問題記錄:

SendMessage已經返回,但是響應函式沒任何反應

測試過程:

1.傳送自定以訊息改為傳送WM_SYSCOMMAND,wParam改為原來的訊息值,

void videoDialog::OnSysCommand(UINT nID, LPARAM lParam)

OnSysCommand中可以正常響應,證明系統的傳送訊息機制運轉正常

2.傳送訊息值改為0x9878可以用,證明自定義訊息頁沒異常,

 

原因,

1.WM_MSG訊息值設定的太大,以前使用過sendMessage,沒出現過問題,所以過於自信,懶得定義WM_USER+1這種巨集,隨便些了一個數值,0x49987,結果數值太大,接收不了

2.ON_MESSAGE(0x9878, test),寫成ON_MESSAGE(0x9878, &videoDialog::test),是仿照按鈕點選事件的方式寫的,VS2017中可以正常執行按鈕點選事件,卻沒有執行我的test函式,可能是好久沒有寫MFC程式的原因,