VC++如何获取窗口客户区的大小

VC++如何获取窗口客户区的大小,第1张

因为每当窗口大小发生变化时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、窗口大小怎么调等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9578703.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存