系统主题风格影响了CListCtrl的窗口拖动的实现,怎么办?
如题:
桌面右键菜单--》属性--》外观--》效果-> 拖动时显示窗口内容,勾上和不勾上对CListCtrl程序影响很大。CListCtrl中的每一行其中的一个单元格动态创建了一个按钮,我希望在拖动列分隔条时button的位置能调整并正确显示,我重载了:
BOOL CMyListCtrl::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
HD_NOTIFY* phdn = (HD_NOTIFY*)lParam;
switch( ((NMHDR*)lParam)->code )
{
case HDN_ITEMCHANGEDA:
case HDN_ITEMCHANGEDW:
MoveButtons();
Invalidate();
break;
}
return CListCtrl::OnNotify(wParam, lParam, pResult);
}
MoveButtons中有这样一个判断:
GetItemRect(0, &robCellRect, LVIR_BOUNDS);
GetClientRect(&rcClient);
if (robCellRect.right > rcClient.right)
bButtonDisplay = false;
MoveButtons就是对创建的button重新MoveWindow,当出现button位置被隐藏后(出现水平滚动条),将其拖出来,鼠标释放时,跟到了MoveButtons的代码中,跟到了函数中的GetItemRect(0, &robCellRect, LVIR_BOUNDS);一行,发现robCellRect跟拖之前的一样,button所在的单元格显示出来了,但button并没有显示出来。这是没有勾上的情况。
但是系统设置如果勾上的话,只要点下去拖动时就会走到MoveButtons里面,而且button位置可以正确的移动并显示出来。
请问大侠们有没有什么好的解决办法?如何代码中知道系统的设置啊?