木头木木头 2013-06-03 07:30 采纳率: 0%
浏览 5020

Win32消息,子窗口如何接受WM_KEYDOWN消息

我有一个主窗口,里面创建了一个子窗口。所有的操作其实都是为了对子窗口里的图片进行处理。但是一些控件如Button等放在主窗口。现在我想要这个子窗口处理我的PAGEUP和PAGEDOWN键盘消息,但是在主窗口的消息处理函数中可以接收到WM_KEYDOWN消息,而在子窗口中却不能接收到。我知道可以通过主窗口主动POST消息给子窗口实现,但是我想知道能不能直接在子窗口里接收消息。比如,主窗口放弃处理这个消息,并传递给子窗口。我对Windows的消息传递机制一直不是很清楚,希望有懂的大神简单讲解一下这个问题,非常感谢。
case WM_KEYDOWN:
switch (wParam)
{
case VK_LEFT: // LEFT ARROW
MessageBox(hWnd,"Left","Left", MB_YESNO);
break;
case VK_RIGHT: // RIGHT ARROW
MessageBox(hWnd,"Right","Right", MB_YESNO);
break;
case VK_UP: // UP ARROW
MessageBox(hWnd,"UP","UP", MB_YESNO);
break;
case VK_DOWN: // DOWN ARROW
MessageBox(hWnd,"DOWN","DOWN", MB_YESNO);
break;
case VK_HOME: // HOME
MessageBox(hWnd,"HOME","HOME", MB_YESNO);
break;
case VK_END: // END
MessageBox(hWnd,"END","END", MB_YESNO);
break;
case VK_PRIOR: // PAGE UP
MessageBox(hWnd,"PAGEUP","PAGEUP",MB_YESNO);
break;
case VK_NEXT: // PAGE DOWN
MessageBox(hWnd,"PAGEDOWN","PAGEDOWN",MB_YESNO);
break;
default:
break;
}
break;

  • 写回答

2条回答

  • shiter 人工智能领域优质创作者 2015-01-15 12:40
    关注

    case COMMAND_GET_DIRECTORY:
    {
    CmdAndHost cmdhost;
    memset(&cmdhost,0,sizeof(CmdAndHost));
    memcpy(&cmdhost.cmd,&cmd,sizeof(Command));
    cmdhost.host = host;
    ::SendMessage(((CFileManagerDlg*)cmd.hWind)->m_hWnd,WM_FILE_ONRECEIVE,0,(LPARAM)(&cmdhost));
    break;
    }
    上面是主窗口的接受消息,下面是消息处理:

        LRESULT CFileManagerDlg::OnReceiveData(WPARAM wParam, LPARAM lParam)//加载上线信息
    

    {
    CmdAndHost cmdandhost = (CmdAndHost *)lParam;
    Command * cmd = &(cmdandhost->cmd);
    m_host = (mdk::NetHost
    )cmdandhost->host;
    switch(cmd->order)
    {
    case COMMAND_GET_DIRECTORY:
    {
    unsigned char * buf = (unsigned char * )malloc(cmd->datasize);
    while ( !m_host->Recv(buf, cmd->datasize) )
    Sleep(500);
    AddToList(cmd->datasize, (LPARAM )buf);
    free(buf);

                break;
            }
        case COMMAND_WRONG_DIRECTORY:
            {
                MessageBox("目录为空或不可读","警告",MB_OK);
    
                break;
            }
    
    }
    
    return 0;
    

    }

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题