为何对ListCtrl控件MoveWindow会出错?

hahahawk 2003-04-16 07:32:44
我有以CFromView为基类的CMyView类,在其相当于Dialog的view上有一ListCtrl控件。我希望该控件能随窗口大小改变而改变。
void CmytelView::OnSize(UINT nType, int cx, int cy)
{
CFormView::OnSize(nType, cx, cy);
//TODO:
CListCtrl* p = (CListCtrl*)(this->GetDlgItem(IDC_LIST1));
CRect myRect;
this->GetClientRect(&myRect);
ClientToScreen(&myRect);
p->MoveWindow(myRect.left,myRect.top,myRect.Width() - 10,myRect.Height() - 10,TRUE);
}
Debug时候调用MoveWindow,在其内部出错:
void CWnd::MoveWindow(int x, int y, int nWidth, int nHeight, BOOL bRepaint)
{
ASSERT(::IsWindow(m_hWnd) || (m_pCtrlSite != NULL));//箭头指向这里
if (m_pCtrlSite == NULL)
::MoveWindow(m_hWnd, x, y, nWidth, nHeight, bRepaint);
else
m_pCtrlSite->MoveWindow(x, y, nWidth, nHeight);
}
不知为何出错?运行时还有什么办法可以改变ListCtrl的大小?
...全文
123 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hanluota 2003-05-15
  • 打赏
  • 举报
回复
mark
maoxianwang 2003-04-17
  • 打赏
  • 举报
回复
if(IsWindow(GetDlgItem(IDC_LIST1)->GetSafeHwnd()))

move去吧
hahahawk 2003-04-17
  • 打赏
  • 举报
回复
感谢Mackz,一句注释让我明白了。
maoxianwang的解决方法也不错。
也感谢zhdleo,FANCHEN的参与。我要结贴啦。
菜牛 2003-04-16
  • 打赏
  • 举报
回复
void CmytelView::OnSize(UINT nType, int cx, int cy)
{
CFormView::OnSize(nType, cx, cy);
//TODO:
CListCtrl* p = (CListCtrl*)(this->GetDlgItem(IDC_LIST1));
if (!p)
return; //必须对p是否有效进行判断,因为最初的OnSize消息里,控件还没有创建。

CRect myRect;
this->GetClientRect(&myRect);
ClientToScreen(&myRect);
p->MoveWindow(myRect.left,myRect.top,myRect.Width() - 10,myRect.Height() - 10,TRUE);
}
zhdleo 2003-04-16
  • 打赏
  • 举报
回复
这个断言一般来说应该值可能前半部分错!
IsWindow(m_hWnd)

所以我也对你的p表示怀疑。


CListCtrl* p = (CListCtrl*)(this->GetDlgItem(IDC_LIST1));
CRect myRect;
this->GetClientRect(&myRect);
ClientToScreen(&myRect);
p->MoveWindow(myRect.left,myRect.top,myRect.Width() - 10,myRect.Height() - 10,TRUE);
给这五句各一个断点,调试的时候看看p的变化再说。
hahahawk 2003-04-16
  • 打赏
  • 举报
回复
p没有问题啊。
FAICHEN 2003-04-16
  • 打赏
  • 举报
回复
p错?

16,465

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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