在MoveWindow/SetWindowPos()子窗口控件之前先判断一下子窗口的GetSafeHwnd()是否不为NULL
OnSize(...)
{
CWnd *pBoder = GetDlgItem(IDC_STATICC);
if(pBoder && pBoder->GetSafeHwnd()
{
CRect m_rBoder ;
pBoder->GetWindowRect(&m_rBoder);
ScreenToClient(&m_rBoder);
m_huanre.MoveWindow(&m_rBoder)
}}
OnSize(...)
{
CWnd *pBoder = GetDlgItem(IDC_STATICC);
if(pBoder && pBoder->GetSafeHwnd()
{
CRect m_rBoder ;
pBoder->GetWindowRect(&m_rBoder);
ScreenToClient(&m_rBoder);
m_huanre.MoveWindow(&m_rBoder)
}}
解决方案 »
- 接收不到PostMessage发送的自定义消息
- 套接字 结构体
- 为什么vs2005下IHTMLDocument3的getElementById会出错?
- 准备做一个类似二叉树的软件,每个节点可自动产生,并且节点里的内容可编辑
- 请教一个奇怪的问题,非常罕见~~~(200分,顶者亦有分)
- 如何在对话框中的两个子对话框互相传递消息?
- 如何在Tree Control 中快速显示如Windows 资源管理器左边的树状信息?
- ASSERT 用法请教?
- 谁用MSChart做过曲线图??急用!!
- 在VC中椭圆绘制的问题,想请VC图形处理高人近来指教一下!!
- 图和判读鼠标按下了哪个button
- 帮帮 WIN32 程序员进步的请求
if(pBoder.m_hWnd!=NULL)//在这里加个判断
{
..........
}
大版主和2楼都判断了句柄,这个是很重要的2.另外推荐个控件EasySizeEasySize能比较好的满足楼主需要
我从网上搜到解决方法
if(nType==SIZE_MINIMIZED)
{
//需要判断一下,是最小化则退出。
//如果是最小化,恢复的时候会BUG,因为整数除以0
return ;
}CWnd *pWnd;
pWnd = GetDlgItem(IDC_LIST); //获取控件句柄
if(pWnd)//判断是否为空,因为对话框创建时会调用此函数,而当时控件还未创建
{
CRect rect; //获取控件变化前大小
pWnd->GetWindowRect(&rect);
ScreenToClient(&rect);//将控件大小转换为在对话框中的区域坐标
// cx/m_rect.Width()为对话框在横向的变化比例 rect.left=rect.left*cx/m_rect.Width();//调整控件大小(我的问题,这里少了一个修正值的处理)
rect.right=rect.right*cx/m_rect.Width();
rect.top=rect.top*cy/m_rect.Height();
rect.bottom=rect.bottom*cy/m_rect.Height();
pWnd->MoveWindow(rect);//设置控件大小
}
GetClientRect(&m_rect);//将变化后的对话框大小设为旧大小但是有个问题,就是窗口变化时候,位置比例关系似乎不对,少了一个修正值的处理
EASYSIZE(IDC_LeftHouseSituation,ES_KEEPSIZE,ES_KEEPSIZE,ES_BORDER,ES_BORDER,0)
END_EASYSIZE_MAP对应的IDC_LeftHouseSituation的按钮不显示,要怎么修改呢,谢谢大侠,帮帮我!
CMyDoc* pDoc=GetDocument();//rect数据在Doc里
ASSERT_VALID(pDoc);
if (!pDoc)
return;
GetClientRect(&pDoc->m_viewrect);
CWnd::FromHandle(this->m_hwndeditl)->MoveWindow(0,0,
(int)(pDoc->m_viewrect.right-pDoc->m_viewrect.left)/3,
pDoc->m_viewrect.bottom-pDoc->m_viewrect.top,true);//改位置和大小
虽然我来晚了