//源文件如下:
//在对话框中的WM_KEYDOWN好像都没进去,为什么???
// Dialog1.cpp : Defines the entry point for the application.
//#include "stdafx.h"
#include "resource.h"LRESULT CALLBACK lpDlgProc( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam );BOOL bChecked = FALSE;
BOOL bRadio1 = TRUE;
int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
  // TODO: Place code here.
HWND hwnd = CreateDialog( hInstance, "TESTDIALOG", NULL, (DLGPROC)lpDlgProc);
ShowWindow( hwnd, SW_SHOW );
UpdateWindow( hwnd ); MSG msg;
while( GetMessage( &msg, NULL, 0, 0 ) )
{
if( !IsWindow( hwnd ) || !IsDialogMessage( hwnd, &msg ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
}
return 0;
}LRESULT CALLBACK lpDlgProc( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
switch( uMsg )
{
case WM_INITDIALOG:
CheckDlgButton( hwndDlg, IDC_CHECKBOX, bChecked ? BST_CHECKED:
BST_UNCHECKED );
CheckRadioButton( hwndDlg, IDC_RADIO1, IDC_RADIO2, 
bRadio1 ? IDC_RADIO1 : IDC_RADIO2 );

break;
case WM_COMMAND:
switch( LOWORD( wParam ) )
{
case IDC_CHECKBOX:
bChecked = !(IsDlgButtonChecked( hwndDlg, IDC_CHECKBOX )
== BST_CHECKED );
CheckDlgButton( hwndDlg, IDC_CHECKBOX, bChecked ? 
BST_CHECKED : BST_UNCHECKED );
break;
case IDC_RADIO1:
bRadio1 = TRUE;
CheckRadioButton( hwndDlg, IDC_RADIO1, IDC_RADIO2, 
IDC_RADIO1 );
break;
case IDC_RADIO2:
bRadio1 = FALSE;
CheckRadioButton( hwndDlg, IDC_RADIO1, IDC_RADIO2,
IDC_RADIO2 );
break;
case IDCANCEL:
DestroyWindow( hwndDlg );
break;
case IDOK:
DestroyWindow( hwndDlg );
break;
}
break;
case WM_DESTROY:
PostQuitMessage( 0 );
break;
case WM_KEYDOWN:
MessageBox( hwndDlg, "d", "d", MB_OK );
break;
default:
return FALSE;
}
return TRUE;
}

解决方案 »

  1.   

    SDK的话系统进行了处理,屏蔽了KEY消息,
    可以使用HOOK处理
      

  2.   

    case WM_SETFOCUS:
      SetFocus ( getSelWnd() ) ;设置输入焦点
      

  3.   

    while( GetMessage( &msg, NULL, 0, 0 ) ) 

      if(msg.message == WM_KEYDOWN)//加一个跟踪看看是否有键盘消息
      {
        OutputDebugString(_T("键盘消息"));
      }
     ……
      
      

  4.   

    屏蔽?不是吧?
    我几个月前还写了个小游戏键盘控制人物移动了,应该是其它问题吧!
    刚测试了,没屏蔽WM_KEYDOWN....
      

  5.   

    刚看了资料,说是因为,SDK子对话框无法响应鼠标消息