因为每当窗口大小发生变化时windows就向窗口发送WM_SIZE消息,传给窗口过程的lParam参数的低位字中包含客户区的宽度;高位字中包含客户区的高度。所以可以在窗口过程中处理WM_SIZE消息:
static int cxClient,cyClient;
case WM_SIZE:
想要的是窗口改变后的尺寸。现在是当窗口点最大化与还原时等到的都是窗口变化前的尺寸信息。最大化时得到的是最大化的尺寸,还原窗口时得到的是最大化时的尺寸。
子窗口是在视图上动态创建的。
框架窗口在OnSize时发送给所有子窗口一个消息,消息中再MOVEWINDOW各个子窗口。
void CMainFrame::OnSize(UINT nType, int cx, int cy)
{
::SendMessage(g_pCW->m_hWnd,WM_CWRESIZE,0,0);
CFrameWndEx::OnSize(nType, cx, cy);
}
LRESULT CChildWnd::OnCwResize(WPARAM wp,LPARAM lp)
{
double x=0,y=0,w=0,h=0;//用窗口保存各位子窗口相对于视图的比例
for(int i=0;i<g_vecStruChildWndsize();i++)
{
x=(double)g_vecStruChildWnd[i]pt1x/(double)g_rtViewOfWindowsWidth();
y=(double)g_vecStruChildWnd[i]pt1y/(double)g_rtViewOfWindowsHeight();
w=(double)(g_vecStruChildWnd[i]pt2x-g_vecStruChildWnd[i]pt1x)/(double)g_rtViewOfWindowsWidth();
h=(double)(g_vecStruChildWnd[i]pt2y-g_vecStruChildWnd[i]pt1y)/(double)g_rtViewOfWindowsHeight();
struResizex=x,struResizey=y,struResizew=w,struResizeh=h;
vecpush_back(struResize);
}
//遍历容器并使各个了窗口movewindow
for(int i=0;i<g_vecStruChildWndsize();i++)
{
g_vecStruChildWnd[i]pWnd->MoveWindow(vec[i]xg_rtViewOfWindowsWidth(),vec[i]yg_rtViewOfWindowsHeight(),vec[i]wg_rtViewOfWindowsWidth(),vec[i]hg_rtViewOfWindowsHeight());
}
return 0;
}
通过快捷方式启动IE,例如通过快速启动工具栏中的图标启动IE时,您可以右击“快捷方式图标”,选择“属性”,在“快捷方式”选项卡中的“运行方式”选项栏中选择“最大化”,然后单击“确定”按钮。此后,无论什么时候您通过这个快捷方式启动IE,浏览器的窗口总处于最大化状态。
通过桌面的“Internet Explorer”图标启动IE时,因为这不是一个标准的快捷方式,所以没有最大化选项。幸运的是,这个图标可以记住最近一次您使用浏览器的窗口的设置情况。因此,如果当您退出IE前将窗口最大化,那么下次启动IE时仍然会保持此次退出时的窗口设置。
以上就是关于VC++如何获取窗口客户区的大小全部的内容,包括:VC++如何获取窗口客户区的大小、如何获取windows窗口的边框大小 csdn、窗口大小怎么调等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)