关于窗口最大化后自动调整控件大小和位置的,我参考了http://community.csdn.net/Expert/topic/3554/3554001.xml?temp=.1476404
结果执行以下代码时就非法报错,请问时怎么回事啊??谢谢CRect lpRect;
GetWindowRect(&lpRect);
CSize szMWD = lpRect.Size();
int a = szMWD.cx;
int b = szMWD.cy;
GetDlgItem(IDC_LIST1)->MoveWindow( (1024 - a)/2, (768 - b)/2,a , b ,TRUE);
结果执行以下代码时就非法报错,请问时怎么回事啊??谢谢CRect lpRect;
GetWindowRect(&lpRect);
CSize szMWD = lpRect.Size();
int a = szMWD.cx;
int b = szMWD.cy;
GetDlgItem(IDC_LIST1)->MoveWindow( (1024 - a)/2, (768 - b)/2,a , b ,TRUE);
解决方案 »
- CListCtrl虚表的颜色问题
- HP 8594E 用户编程手册(主要是发命令控制机器这一块),谁有谢谢?
- 怎样获取QQ验证码的位图
- 我实在没办法~~
- 如何实现记录登录本机的用户账号到文件?
- 为什么MSComm控件一旦打开串口失败,关闭程序时总有内存泄漏。怎么解决?
- 一个程序员一天的工作过程
- 怎么让文件给数组赋值,C语
- 谁能详细介绍一下SDI程序的视图分割,按照书上写的都不行,一运行就出错。帮忙!!!
- **************************菜鸟问题,大侠请进********************************
- 更新数据库,请帮看看是什么回事?谢谢
- 帮忙解释一下HTTP头的代码.
if(m_bFirst)
{
m_bFirst = FALSE;
}
else
{
//修改控件大小
}
CRect l_rect,l_clrect;
//GetWindowRect(l_clrect);//视大小
GetClientRect(l_rect);
nWidth=l_rect.Width();
nHeight=l_rect.Height();
int l_x,l_y,l_wdt,l_hgt;
if(m_list.GetSafeHwnd())
{
m_list.GetWindowRect(l_clrect);
l_x=l_rect.left+nWidth*5/1000;
l_y=l_rect.top+nHeight*5/1000;
l_wdt=nWidth*138/1000;
l_hgt=nHeight*505/1000;
m_list.SetWindowPos(this,l_x,l_y,l_wdt,l_hgt,SWP_SHOWWINDOW|SWP_NOZORDER);
}
然后用MoveWindow来成比例的调整控件的大小和位置
这个是居中,我想自动调整每个控件的大小,而不是居中,比例很难调整啊好像
其中,你要获取当前屏幕的Rect,用getClientRect,就这样,挺容易。
GetWindowRect(&lpRect);
CSize szMWD = lpRect.Size();
int a = szMWD.cx;
int b = szMWD.cy;
CWnd *wnd= GetDlgItem(IDC_LIST1);
if(wnd->m_hwnd!=NULL)
wnd->MoveWindow( (1024 - a)/2, (768 - b)/2,a , b ,TRUE);
第一次执行时控件还没初始化,所以不能使用,等到控件初始化后,再次出现此消息时执行改变大小.
在vc中只有手工调整控件位置
MoveWindow或者SetWindowPos