16,472
社区成员
发帖
与我相关
我的任务
分享
LRESULT CALLBACK DialogProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_KEYDOWN:
switch (wParam)
{
case VK_UP:
MessageBox(NULL, L"按下↑键", L"", MB_OK);
break;
default:
break;
}
case WM_INITDIALOG:
return TRUE;
case WM_COMMAND:
{
switch (wParam)
{
case IDCANCEL:
PostQuitMessage(0);
break;
case IDOK:
MessageBox(NULL, L"OK", L"", MB_OK);
break;
default:
break;
}
break;
}
case WM_DESTROY:
PostQuitMessage(0);
break;
}
return FALSE;
}
int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPWSTR lpCmdLine,
_In_ int nCmdShow)
{
MSG msg;
DialogBox(NULL, MAKEINTRESOURCE(IDD_DIALOG1), NULL, (DLGPROC)DialogProc);
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
WNDPROC m_pOldDlgProc = NULL;
LRESULT CALLBACK MyDlgProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
LRESULT lRet = CallWindowProc(m_pOldDlgProc, hWnd, message, wParam, lParam);
switch(message)
{
case(WM_SETFOCUS):
{
SetFocus(hWnd);
return 0;
}
case(WM_GETDLGCODE):
{
lRet |= (DLGC_WANTALLKEYS|DLGC_WANTCHARS|DLGC_WANTMESSAGE);
break;
}
case(WM_KEYDOWN):
case(WM_KEYUP):
{
TCHAR szMsg[64];
_stprintf_s(szMsg, _T("msg=%d, wParam=%08X, lPara=%08X\r\n"),
message, wParam, lParam);
OutputDebugString(szMsg);
break;
}
}
return lRet;
}
LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG:
{
m_pOldDlgProc = (WNDPROC)SetWindowLongPtr(hDlg, GWL_WNDPROC, (LONG_PTR)MyDlgProc);
SetFocus(hDlg);
return FALSE;
}
case WM_DESTROY:
{
if(m_pOldDlgProc)
{
SetWindowLongPtr(hDlg, GWL_WNDPROC, (LONG_PTR)m_pOldDlgProc);
m_pOldDlgProc = NULL;
}
break;
}
case WM_COMMAND:
{
if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
{
EndDialog(hDlg, LOWORD(wParam));
return TRUE;
}
break;
}
}
return FALSE;
}