MFC中添加自己定義的消息

由於自己要做一個拼音輸入模塊,比如我按下a鍵後,讓它產生一個消息,在消息處理函數裏去搜尋a所對應的漢字。由於系統似乎沒有提供相應的消息,所以我自己定義了一個!

具體做法如下:

集成開發環境vs2005

基於MFC對話框的程序

首先在xxxdlg.h的開頭添加:#define WM_MYMESSAGE WM_USER+100

然後在xxxdlg.h的頭文件中定義

	// Generated message map functions
	virtual BOOL OnInitDialog();
	afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	DECLARE_MESSAGE_MAP()
public:
	afx_msg void OnBnClickedBtnA();
	afx_msg void OnBnClickedBtnE();
	afx_msg LRESULT OnMymessage(WPARAM wparam,LPARAM lparam);
	afx_msg void OnBnClickedBtnQ();
	afx_msg void OnBnClickedBtnW();
	afx_msg void OnBnClickedBtnR();
其中afx_msg LRESULT OnMymessage(WPARAM wparam, LPARAM lparam);是我自己聲明的消息處理函數

然後到xxxdlg.cpp的文件中的消息映射表中添加映射:

BEGIN_MESSAGE_MAP(CpytestDlg, CDialog)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_MESSAGE(WM_MYMESSAGE, OnMymessage)
	//}}AFX_MSG_MAP
	ON_BN_CLICKED(IDC_BTN_A, &CpytestDlg::OnBnClickedBtnA)
	ON_BN_CLICKED(IDC_BTN_E, &CpytestDlg::OnBnClickedBtnE)
	ON_BN_CLICKED(IDC_BTN_Q, &CpytestDlg::OnBnClickedBtnQ)
	ON_BN_CLICKED(IDC_BTN_W, &CpytestDlg::OnBnClickedBtnW)
	ON_BN_CLICKED(IDC_BTN_R, &CpytestDlg::OnBnClickedBtnR)
	ON_BN_CLICKED(IDC_BTN_T, &CpytestDlg::OnBnClickedBtnT)

其中ON_MESSAGE(WM_MYMESSAGE, OnMymessage)就是我們自己的消息映射

最後則是充實消息響應函數,我自己的如下所示:

LRESULT CpytestDlg::OnMymessage(WPARAM wParam, LPARAM lParam) 
{ 
	// TODO: 處理用戶自定義消息 
	int i = 0;
	for(i=0;i<396;i++)
	{
		if(input ==index[i].PY_input)
		{SetDlgItemText(IDC_EDT_DEMO, *index[i].PY_mb);
		break;}
	}
	return 0; 
} 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章