->为什么用moveWindow函数不能控制控件的大小呢? 我想在父窗体改变大小的同时,使子控件随之按比例改变大小,用movewindow好像没有反映啊,望高手指点。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 MoveWindow前面要使用该控件的对象,是吧?这样做的话没问题的 CRect r(10,10,100,100); m_btn.MoveWindow(r, TRUE);//此处不能为FALSE m_btn是一个按钮不会吧,我用着挺顺的 是在父窗体的OnSize()事件中实现的么?应该没问题的 //m_pwndTblCtrl为我所使用的控件if(m_pwndTblCtrl){ RECT rct; GetClientRect(&rct); rct.bottom; rct.left; //m_pwndTblCtrl->MoveWindow(&rct);//此用法会抛出异常,改用api函数如下: ::MoveWindow(m_pwndTblCtrl->m_hWnd,rct.left,rct.top,rct.right-rct.left,rct.bottom-rct.top,false);//此函数只在程序初始化时有效,初始化后就失效了 } 你的这些代码应该放在OnSize里面,是么?//m_pwndTblCtrl为我所使用的控件if(m_pwndTblCtrl){ RECT rct; GetClientRect(&rct); rct.bottom; rct.left; //m_pwndTblCtrl->MoveWindow(&rct);//此用法会抛出异常,改用api函数如下: ::MoveWindow(m_pwndTblCtrl->m_hWnd,rct.left,rct.top,rct.right-rct.left,rct.bottom-rct.top,false);//此函数只在程序初始化时有效,初始化后就失效了 } >你的这些代码应该放在OnSize里面,是么?对啊,对啊,是放在onsize里 先添加一个windows的onsize消息函数 然后void CXXXXView::OnSize(UINT nType, int cx, int cy) { CView::OnSize(nType, cx, cy); ////m_pGridCtrl是你的控件控制变量 if (m_pGridCtrl->GetSafeHwnd()) { CRect rect; GetClientRect(rect); m_pGridCtrl->MoveWindow(rect); } } 我确实是这样做的,不过老是出现异常,值得注意的是我的CTableForm是用CSplitterWnd分割得到的窗体void CTableForm::OnSize(UINT nType, int cx, int cy){ CFormView::OnSize(nType, cx, cy); if(m_pwndTblCtrl->GetSafeHwnd()) { RECT rct; GetClientRect(&rct); m_pwndTblCtrl->MoveWindow(&rct);//异常处 } // TODO: 在此添加消息处理程序代码} ::MoveWindow(m_pwndTblCtrl->m_hWnd,rct.left,rct.top,rct.right-rct.left,rct.bottom-rct.top,false);//TRUE);//此处不能为FALSE m_btn是一个按钮 看来麻烦大了,我用了SetWindowPos()同样出现断言异常,好烦啊,烦死人了,一个简单的程序都要出毛病, void CChildForm::OnSize(UINT nType, int cx, int cy){ CFormView::OnSize(nType, cx, cy); m_wndMyTree.MoveWindow(0, 0, cx/3, cy, TRUE); m_wndMyTree.SetBkColor(RGB(0, 255, 0)); //::MoveWindow(m_wndMyTree.m_hWnd, 0, 0, cy, cx, TRUE);}我的更晕.执行后FORMVIEW上就多一个TREECTRL,位置是新的位置,而原有的TREECTRL则原地不动. 谁懂怎么释放资源。。。。 利用ADO连接SQL server 执行到Execute时程序自动退出? 返回时间大于心跳包的间隔时间然后重新连接 返回时间怎么得到啊? VC怎么实现拼图游戏,把一张分成几张图,然后获取在图在的鼠标点击事件 大家来说说不能退出的原因是什么 有序数组用哪种查找算法快? 请问那里有VC下?现在急需! CTL_CODE宏问题 视频传输系统中客户端录像文件如何控制播放速度??? 求助:在vc里写标准c++程序. 急啊!!怎样用VC++程序建立和删除目录?各位帮忙呀! 我建了一个 C/C++/VC的群4296702! 欢迎大家来讨论!
m_btn.MoveWindow(r, TRUE);//此处不能为FALSE m_btn是一个按钮
不会吧,我用着挺顺的
if(m_pwndTblCtrl)
{ RECT rct;
GetClientRect(&rct);
rct.bottom;
rct.left;
//m_pwndTblCtrl->MoveWindow(&rct);//此用法会抛出异常,改用api函数如下:
::MoveWindow(m_pwndTblCtrl->m_hWnd,rct.left,rct.top,rct.right-rct.left,rct.bottom-rct.top,false);//此函数只在程序初始化时有效,初始化后就失效了
}
if(m_pwndTblCtrl)
{ RECT rct;
GetClientRect(&rct);
rct.bottom;
rct.left;
//m_pwndTblCtrl->MoveWindow(&rct);//此用法会抛出异常,改用api函数如下:
::MoveWindow(m_pwndTblCtrl->m_hWnd,rct.left,rct.top,rct.right-rct.left,rct.bottom-rct.top,false);//此函数只在程序初始化时有效,初始化后就失效了
}
对啊,对啊,是放在onsize里
void CXXXXView::OnSize(UINT nType, int cx, int cy)
{
CView::OnSize(nType, cx, cy);
////m_pGridCtrl是你的控件控制变量
if (m_pGridCtrl->GetSafeHwnd())
{
CRect rect;
GetClientRect(rect);
m_pGridCtrl->MoveWindow(rect);
}
}
void CTableForm::OnSize(UINT nType, int cx, int cy)
{
CFormView::OnSize(nType, cx, cy);
if(m_pwndTblCtrl->GetSafeHwnd())
{ RECT rct;
GetClientRect(&rct);
m_pwndTblCtrl->MoveWindow(&rct);//异常处
}
// TODO: 在此添加消息处理程序代码
}
{
CFormView::OnSize(nType, cx, cy);
m_wndMyTree.MoveWindow(0, 0, cx/3, cy, TRUE);
m_wndMyTree.SetBkColor(RGB(0, 255, 0)); //::MoveWindow(m_wndMyTree.m_hWnd, 0, 0, cy, cx, TRUE);}
我的更晕.执行后FORMVIEW上就多一个TREECTRL,位置是新的位置,而原有的TREECTRL则原地不动.