SetWindowRgn引发的血案

时间:2022-03-17 07:13:26
1.创建一个对话框项目
2.响应WM_CREATE和WM_SIZE消息,加入如下代码
C/C++ code
    CRect rtWnd;
    GetWindowRect(&rtWnd);
    CRgn rgn;
    rgn.CreateRoundRectRgn(0,0,rtWnd.Width(),rtWnd.Height(),15,15);

    SetWindowRgn(0,true);
    SetWindowRgn((HRGN)rgn,true);

         Invalidate();


3.对话框添加一个listctrl
4.在WM_INITDIALOG添加licstrl的初始化
C/C++ code
    m_list.SetExtendedStyle(LVS_EX_FLATSB
        |LVS_EX_FULLROWSELECT
        |LVS_EX_HEADERDRAGDROP
        |LVS_EX_ONECLICKACTIVATE
        |LVS_EX_GRIDLINES);

    m_list.InsertColumn(0,_T("上海探戈"),LVCFMT_CENTER,100);
    m_list.InsertColumn(1,_T("白发魔女传"),LVCFMT_CENTER,100);
    m_list.InsertColumn(2,_T("笑傲江湖"),LVCFMT_CENTER,100);
    m_list.InsertColumn(3,_T("射雕英雄"),LVCFMT_CENTER,100);
    m_list.InsertColumn(4,_T("沧海一声笑"),LVCFMT_CENTER,100);

    for(int i=0;i<=3;i++)
    {
        m_list.InsertItem(i,L"许文强");
        m_list.SetItemText(i,1,L"卓一航");
        m_list.SetItemText(i,2,L"东方不败");
        m_list.SetItemText(i,3,L"大漠飞鹰");
        m_list.SetItemText(i,4,L"滔滔两岸潮");
    }



:注意listctrl要显示水平滚动条

OK,此时编译和开启程序都没什么问题,但是, 鼠标移动主窗口后,再点击listctrl的滚动条箭头时发现没响应。

 遇到问题跟下面帖子现象类似。
http://topic.csdn.net/u/20091026/11/72393896-6c8c-4c9d-83be-9859577935b2.html

这个帖子的方法并不能解决问题!!


急!急!!急!!!
求解

14 个解决方案

#1


我试了一下,没问题呀!

#2


将SetWindowRgn代码放在对话框初始化OnInitDialog()函数中应该没问题了吧

#3


在多个工程里应用过SetWindowRgn,并未发现对子窗口有影响.

#4


把怀疑可能引发问题的代码屏蔽了,再看是否正常

#5


SetWindowRgn引发的血案路过的说

#6


SetWindowRgn引发的血案

#7


SetWindowRgn放到OnInitDialog里面,初始化的时候把对话框切割

#8


引用 3 楼 cometnet 的回复:
在多个工程里应用过SetWindowRgn,并未发现对子窗口有影响.


多谢关注,请下载这个项目:
http://download.csdn.net/source/3392387
release是生成的问题程序,鼠标拖动窗口标题栏,往左移动一个距离,鼠标按住不放,再往右拖动一下,此时点击listctrl滚动条的左右箭头,你将会发现系统的滚动条不做任何响应!

#9


引用 2 楼 czydxj 的回复:
将SetWindowRgn代码放在对话框初始化OnInitDialog()函数中应该没问题了吧


可以百分百确定是SetWindowRgn引起的,请下载:
http://download.csdn.net/source/3392387

#10


引用 9 楼 lironghua2012 的回复:
引用 2 楼 czydxj 的回复:
将SetWindowRgn代码放在对话框初始化OnInitDialog()函数中应该没问题了吧


可以百分百确定是SetWindowRgn引起的,请下载:
http://download.csdn.net/source/3392387

“鼠标移动主窗口后,再点击listctrl的滚动条箭头时发现没响应。”这样操作吗,下载了你的exe直接运行没问题啊? SetWindowRgn引发的血案

#11


引用 10 楼 pop1210 的回复:
引用 9 楼 lironghua2012 的回复:
引用 2 楼 czydxj 的回复:
将SetWindowRgn代码放在对话框初始化OnInitDialog()函数中应该没问题了吧


可以百分百确定是SetWindowRgn引起的,请下载:
http://download.csdn.net/source/3392387

“鼠标移动主窗口后,再点击listctrl的滚动条箭头……


看来这个问题果然很隐蔽,请参看我录制的操作录像:
http://download.csdn.net/source/3392603
可以很明显的看到滚动条失去了作用

#12


这个问题我也遇到过,不过没用SetWindowRgn
应该是电脑或系统的问题..

#13


引用 12 楼 lyyscf 的回复:
这个问题我也遇到过,不过没用SetWindowRgn
应该是电脑或系统的问题..


去除SetWindowRgn后,一切正常了

#14


http://topic.csdn.net/u/20091026/11/72393896-6c8c-4c9d-83be-9859577935b2.html


正解!!!

#1


我试了一下,没问题呀!

#2


将SetWindowRgn代码放在对话框初始化OnInitDialog()函数中应该没问题了吧

#3


在多个工程里应用过SetWindowRgn,并未发现对子窗口有影响.

#4


把怀疑可能引发问题的代码屏蔽了,再看是否正常

#5


SetWindowRgn引发的血案路过的说

#6


SetWindowRgn引发的血案

#7


SetWindowRgn放到OnInitDialog里面,初始化的时候把对话框切割

#8


引用 3 楼 cometnet 的回复:
在多个工程里应用过SetWindowRgn,并未发现对子窗口有影响.


多谢关注,请下载这个项目:
http://download.csdn.net/source/3392387
release是生成的问题程序,鼠标拖动窗口标题栏,往左移动一个距离,鼠标按住不放,再往右拖动一下,此时点击listctrl滚动条的左右箭头,你将会发现系统的滚动条不做任何响应!

#9


引用 2 楼 czydxj 的回复:
将SetWindowRgn代码放在对话框初始化OnInitDialog()函数中应该没问题了吧


可以百分百确定是SetWindowRgn引起的,请下载:
http://download.csdn.net/source/3392387

#10


引用 9 楼 lironghua2012 的回复:
引用 2 楼 czydxj 的回复:
将SetWindowRgn代码放在对话框初始化OnInitDialog()函数中应该没问题了吧


可以百分百确定是SetWindowRgn引起的,请下载:
http://download.csdn.net/source/3392387

“鼠标移动主窗口后,再点击listctrl的滚动条箭头时发现没响应。”这样操作吗,下载了你的exe直接运行没问题啊? SetWindowRgn引发的血案

#11


引用 10 楼 pop1210 的回复:
引用 9 楼 lironghua2012 的回复:
引用 2 楼 czydxj 的回复:
将SetWindowRgn代码放在对话框初始化OnInitDialog()函数中应该没问题了吧


可以百分百确定是SetWindowRgn引起的,请下载:
http://download.csdn.net/source/3392387

“鼠标移动主窗口后,再点击listctrl的滚动条箭头……


看来这个问题果然很隐蔽,请参看我录制的操作录像:
http://download.csdn.net/source/3392603
可以很明显的看到滚动条失去了作用

#12


这个问题我也遇到过,不过没用SetWindowRgn
应该是电脑或系统的问题..

#13


引用 12 楼 lyyscf 的回复:
这个问题我也遇到过,不过没用SetWindowRgn
应该是电脑或系统的问题..


去除SetWindowRgn后,一切正常了

#14


http://topic.csdn.net/u/20091026/11/72393896-6c8c-4c9d-83be-9859577935b2.html


正解!!!