我先说说我的理解,dialog的客户区就是除了最上面的蓝条,剩下的就是客户区了吧,我想把客户区分成3 * 3 九块,鼠标滑过每一块的时候有不同的响应,问题来了,我在客户区还有一个picturectrl控件,用于封装OpenGL,每次鼠标滑过picturectrld的时候,并没有产生响应,但滑到其他地方却有响应,不知道应该怎么解决,下面是dlg.cpp中OnInitDialog()的部分代码。rect,dlg,rect1都是CRECT类型,在.h文件里已经定义好了。rect1是9个小格子最左上角的那个。//控件显示
GetDlgItem(IDC_OPENGL)->GetWindowRect(rect);//屏幕坐标
ScreenToClient(rect);//控件的客户区坐标 rect.top=0;
rect.left=0;
rect.bottom-=rect.top;
rect.right-=rect.left; m_openGL.Create(rect, GetDlgItem(IDC_OPENGL)); this->GetClientRect(dlg);

//客户区划分
ScreenToClient(rect1);
rect1.left = 0;
rect1.top = 0;
rect1.right = 1.0/3.0 * dlg.right;
rect1.bottom = 1.0/3.0 * dlg.bottom;

解决方案 »

  1.   

    我说的好像不太对,picturectrl让我改写了,里面其实是COPENGL这个类,COPENGL继承了CWND
      

  2.   

    确保是在你的 picturectrl控 里处理的!你描述的现象好像不是
      

  3.   

    你做的是自定义控件吧
    最好不要用PictureCtrl
    这篇文章你或许可以参考一下
    http://blog.csdn.net/xianglitian/article/details/6164103
      

  4.   

    谢谢您的关注,我是个学生,不太懂MFC,我尽力再描述一下。
    对话框上有个PICTURECTRL,ID 是IDC_OPENGL,对话框里有如下语句GetDlgItem(IDC_OPENGL)->GetWindowRect(rect);
    m_openGL.Create(rect, GetDlgItem(IDC_OPENGL));m_opengl是COPENGL的一个对象,COPENGL继承了CWND
      

  5.   

    在窗口中处理WM_NCMOUSEMOVE消息。