我在对话框上建立两个控件,一个Edit和另一个其他控件(ListCtrl或Button)
这个Edit控件下面一半的区域和另一个控件重叠。而且Edit是后放置的(即,比其它控件的Order值要大),现在问题来了……  这时鼠标移动到Edit控件的上面一半时,鼠标变成“编辑光标”形式,可以进行Edit编辑定位,而鼠标移到Edit控件的下面一半时,就变成了Button控件接收的指针形式,不能进行Edit编辑定位。  问:怎么样才能使鼠标移动到Edit内的任何地方都是“编辑光标”形式?

解决方案 »

  1.   

    可以通过事件来动态的显示和消隐(或者将其设为不可用SetWindowEnable(false))上面的控件,这样就可以在编辑CEdit时正常了。当不需要编辑时,重新设置上面的控件。
      

  2.   

    broadoceans:
    好像没有SetWindowEnable()这个函数吧,只有EnableWindow()
    但是EnableWindow()不是我想要得。因为它使控件失效(disable),而我是想得到两个部分重叠控件都在enable和visible情况下时,只有上面控件完全接收鼠标信息。请你们大家都试一下,很简单的:
    在对话框上新建一个Button,再跟Button有部分重叠新建一个Edit
    运行你就明白我的意思了……
      

  3.   

    经过查阅网上资料,再自己试验总结,我已成功解决自己的问题!OK,搞定!
    默认的控件显示和响应关系
    放置先后               先
    Tab顺序      前
    在资源管理器里的位置   上
    在程序运行时的位置      下
    实际响应效果           捕获BringWindowToTop()可以改变控件的Z-order,即把控件设置成接收消息的控件,但却跑到其它控件的下面去了。ModifyStyle(ModifyStyle(0,WS_CLIPSIBLINGS)可以将控件的非消息响应区域裁剪掉。运用这两个方法就可解决重叠控件的显示和响应问题了。
      

  4.   

    不好意思
    “ModifyStyle(ModifyStyle(0,WS_CLIPSIBLINGS)可以将控件的非消息响应区域裁剪掉。”因该是
    “ModifyStyle(0,WS_CLIPSIBLINGS)可以将控件的非消息响应区域裁剪掉。”
      

  5.   

    呵呵,其实用显示,消隐完全可以实现的。
    函数是ShowWindow(m_hWnd, SW_HIDE);
    具体的你要自己看了。
      

  6.   

    算了,结贴,小顽童发我邮箱吧,
    [email protected]