小弟刚刚接触API,想实现按键盘上的字母,弹出对话框显示键入的是多少,添加的相应如下:
case WM_CHAR:
                          switch (msg->wParam)
{
case VK_SPACE:
MessageBox(NULL,"space","键盘",0);
return 0;
}
可编译显示msg没有定义,那请问怎么使用存在键盘消息内的wParam呢?

解决方案 »

  1.   

    修改:
    LRESULT APIENTRY WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam) 
      

  2.   

    你是win32程序吧,那么:
    LRESULT APIENTRY WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
    有一个输入参数“message”,你写的是“msg”,这2个要一样,编译器才知道什么叫msg
      

  3.   

    Sorry,I never use QQ.
      

  4.   

         case WM_CHAR:
    MSG* pMsg;
    pMsg->message;
                   switch (pMsg->wParam)
    {
    case VK_SPACE:
    MessageBox(NULL,"space","键盘",0);
    return 0;
    }
    case WM_LBUTTONDOWN:
    MessageBox(hWnd,"左键被单击","左键",0);
    return 0;
    case WM_RBUTTONDOWN:
    MessageBox(hWnd,"右键被单击","右键",0);
    return 0;

    小弟已经修改成这样,可是有个警告,是说pMsg没有初始化,运行是键入字母后,程序直接错误关闭,请问是怎么回事呢?
      

  5.   

    应该是:
    switch(message) 
    {
    你:
    MSG* pMsg;//就算=0 ,初始化也没用的
    pMsg->message;//这里是没东西的
      switch (pMsg->wParam)
    是错的。
      

  6.   

    case WM_CHAR:
                switch (message)
    {
    case VK_SPACE:
    MessageBox(NULL,"space","键盘",0);
    return 0;
    }
    case WM_LBUTTONDOWN:
    MessageBox(hWnd,"左键被单击","左键",0);
    return 0;
    case WM_RBUTTONDOWN:
    MessageBox(hWnd,"右键被单击","右键",0);
    return 0;
    可是我改成这样后,即使是按space ,它也显示的是 “左键被单击”,而不是我想要的按space显示space
      

  7.   

    WM_CHAR: 
    chCharCode = (TCHAR) wParam;    // character code 
    lKeyData = lParam;              // key data 是这样:
    switch (message)
    {
    case WM_CHAR:
    char str[2];
    str[0] = wParam;
    str[1]=0;//sz
    MessageBox(NULL,str,"键盘",0);
    break;
      

  8.   

    chCharCode = (TCHAR) wParam; // character code  
    lKeyData = lParam; // key data  
    这两条是什么意思?是自动执行的吗?是不是在WM_CHAR: 情况下,wParam中保存的就是ASCII码啊? char str[2];
     str[0] = wParam;
     str[1]=0;//sz
    这三条的原理是?
      

  9.   

    WM_CHAR:  
    chCharCode = (TCHAR) wParam; // character code  
    lKeyData = lParam; // key data  
    这3句是WM_CHAR消息时对应的参数说明。(每个都有,你不明白时要查帮助)因为一个ASCII字母(A到Z)对应一个字节,所以用2个字节的数组表示这个字符串。MEssagebox要一个字符串。str[0] = wParam;字符 str[1] = 0;C中的字符串结束标记。如果输入汉字就要str【3】了。