做了一个界面  上面有几个编辑框 列表框 按钮和picture control当我在编辑框填完参数 按button输入之后 就在picture中显示图形  我在picture上实现按键盘上 上下左右 按键对图形进行操作的功能 但是我一按上下左右按键 就会在几个控件之内进行焦点切换  我只想对picture上的图形进行操作  怎样才可以实现

解决方案 »

  1.   

    是对话框?windows 对话框管理器首先处理了几个键盘消息,
    不过你还是可以预先处理,在主循环里头PreProcessMessage 或者 Filter.
      

  2.   

    BOOL CBlendTableDlg::PreTranslateMessage(MSG* pMsg)
    {
    if(pMsg -> message == WM_KEYDOWN)
    {
    if(pMsg-> wParam   ==   VK_LEFT)     // <-键
    {
    msgFlag = KEY_LEFT;
    LeftKeyDown();
    }
                    else if
                    (
                     。
    }
    return CDialog::PreTranslateMessage(pMsg);
    }
    LeftKeyDown()中就是对图形的处理  但是还是会影响到上面几个控件之间的焦点切换
      

  3.   

    return CDialog::PreTranslateMessage(pMsg);返回你自己的值, TRUE 或者 FALSE 忘记了.
      

  4.   

    重载 CDialog 的预处理不知是否可行,那个判断是发生在主消息循环中的.
    你试试先.
      

  5.   


    试了一下  返回TURE 整个界面就变白了  返回FALSE 的话 tab键就无法切换控件之间的焦点了  按上下左右键倒不会切换控件 但是直接去切换tab control的其他标签页了 我这些控件是做在其中一个标签页上的 
    返回我自己的值? 我随便define一个吗 后面会用到吗
      

  6.   

    if(pMsg-> wParam == VK_LEFT) // <-键
    {
    msgFlag = KEY_LEFT;
    LeftKeyDown();
    return TRUE;
    }
      

  7.   

    就是用PreTranslateMessageTRUE和FALSE区别在于
    TRUE消息会继续转发
    FALSE消息不会继续转发应该是TRUE(会保留你原来自动选中其他控件的功能)
    在Return TRUE之前可以发个自定义消息给Picture Control来控制。也可以自己控制