调用SetWindowRgn导致的一个bug:鼠标在子窗口点击滚动条无效

lironghua2012 2011-06-17 03:36:32
1.创建一个对话框项目
2.响应WM_CREATE和WM_SIZE消息,加入如下代码

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的初始化

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

这个帖子的方法并不能解决问题!!
...全文
215 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
taixinltd 2012-06-27
  • 打赏
  • 举报
回复
帮忙顶了,期待高手出现!
taixinltd 2012-05-09
  • 打赏
  • 举报
回复
但是我也没有解决该问题;一直在想办法,

我的情况是当borderstyle为bsnone时,使用mousemove的releasecapture进行拖动窗体多次后,特别是双显示屏时,
taixinltd 2012-05-09
  • 打赏
  • 举报
回复
我也碰过
lironghua2012 2011-06-20
  • 打赏
  • 举报
回复
难道就没人遇到过这样的问题么,求解?
lironghua2012 2011-06-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 kyotrue 的回复:]
移动后重新SetWindowRgn
[/Quote]
这个已经试过,并不能解决问题。如果你稍微有些时间的话,可以试着新建一个项目做一下看看
lironghua2012 2011-06-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 visualeleven 的回复:]
测试一下没有问题。。。
[/Quote]
多移动一下,就会发现问题了!比如拖着标题栏向左移一下,再转向右,此时点击滚动条的左右箭头,发生这个事件的概率不是100%的,可是却非常频繁。这个问题很隐蔽~
Eleven 2011-06-17
  • 打赏
  • 举报
回复
测试一下没有问题。。。
kyotrue 2011-06-17
  • 打赏
  • 举报
回复
移动后重新SetWindowRgn

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧