sendmessage 사용자 정의 메시지 --------------
방법1,수동으로 메시지 및 처리 함수를 연결하여 ONMESSAGE( , )
1. CxxDlg의 h 파일에서 메시지 정의
4
#define WM_MY_DOSOME WM_USER+1 // do something
CxxDlg의 h 파일에서 AFXMSG에 메시지 처리 함수 한 줄을 추가하는 성명, afxmsg LRESULT DoSomeThing(WPARAM iParam1,LPARAM iParam2);아래와 같다 //{{AFX_MSG(CTestmessageDlg)
afx_msg LRESULT DoSomeThing(WPARAM iParam1,LPARAM iParam2);
//}}AFX_MSG
2.CxxDlg의 cpp 파일에서 AFXMSG_MAP에 메시지 한 줄과 메시지 처리 함수 매핑, ONMESSAGE(WM MY DOSOME, DoSomeThing)4
//{{AFX_MSG_MAP(CTestmessageDlg)
ON_MESSAGE(WM_MY_DOSOME,DoSomeThing)// WM_MY_DOSOME DoSomeThing
//}}AFX_MSG_MAP
CxxDlg의 cpp 파일에 메시지 처리 함수 정의를 추가합니다.4
LRESULT CTestmessageDlg::DoSomeThing(WPARAM iParam1,LPARAM iParam2)
{
MessageBox(" , 。"," ",MB_OK);
// iParam1,iParam2 。
return 0;
}
CxxDlg의 cpp 파일에 필요한 곳에 메시지를 보내는 코드를 추가합니다.::SendMessage(this->m_hWnd, WM_MY_DOSOME, (WPARAM) 0, (LPARAM) 0);
//this->m_hWnd 수신자 핸들//WM_MY_DOSOME 메시지
//0,0 매개변수
방법 2.기존 가상 함수 윈도우 Proc 창 함수를 사용하여 메시지 수신 및 처리
1. CxxDlg의 h 파일에서 메시지 정의
#define WM_MY_DOSOME WM_USER+1 // do something
2.ctrl+w는 CxxDlg 클래스에 가상 함수인 WindowProc를 추가하여 함수체를 다음과 같이 채웁니다.LRESULT CTestmessage1Dlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: Add your specialized code here and/or call the base class
if (message==WM_MY_DOSOME)
{
AfxMessageBox("i got it");
}
return CDialog::WindowProc(message, wParam, lParam);
}
3.CxxDlg의 cpp 파일에 메시지를 보내는 코드를 추가합니다.::SendMessage(this->m_hWnd, WM_MY_DOSOME, (WPARAM) 0, (LPARAM) 0);
물론 시스템이 미리 정의한 일부 메시지를 보낼 수도 있고, 일부 메시지는 미리 정의된 처리 함수를 거치면
예를 들어 창에 닫기 메시지를 보내면 창을 닫을 수 있다
void CtseT1Dlg::OnBnClickedButton1()
{
//::SendMessage(this->m_hWnd, WM_CLOSE, (WPARAM) 0, (LPARAM) 0);
SendMessageW( WM_CLOSE, (WPARAM) 0, (LPARAM) 0);
}
refer to http://www.cnblogs.com/wqj1212/archive/2008/03/03/1089298.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ios background location updateAbout positioning There are three official recommendations The significant-change location service (Recommended) Foregro...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.