拉伸窗口跟最大化窗口有什么不同?
我在主窗口和子窗口(对话框)的WM_SIZE消息中,根据拉伸的比例移动和改变子窗口和子窗口控件的大小位置。拉伸的时候,窗口和控件显示是正常的,但是我双击主窗口标题栏或者单击最大化按钮的时候,子窗口的缩放和位置是正常的,但是在子窗口上面的控件则不显示,难道最大化的处理,不是在WM_SIZE消息中处理的吗?断点跟踪时,有看到缩放部分的代码有执行。我之前有怀疑是控件的坐标和宽高有问题,但是跟踪查看的时候,也没有看到异常的坐标数据噢。我还怀疑是移动控件和子窗口之后,没有进行ShowWindow处理,但是,子窗口的缩放又是对的,也显示。求解……
以下附上主要的代码……
响应主窗口WM_SIZE消息函数
响应子对话框WM_SIZE消息
延迟移动窗口函数 子窗口和控件的句柄和坐标宽高都已经存到单向链表中,拉伸的时候,显示正常。
以下附上主要的代码……
响应主窗口WM_SIZE消息函数
LRESULT MainWND_OnSize(HWND hwnd,WPARAM wParam,LPARAM lParam)
{
RECT rect;
GetWindowRect(hwnd,&rect);
//1.0 make expression effective .otherwise 1/3 = 0
fH_Stretch_ratio = (rect.right-rect.left-g_nFrameWidth)*1.0/nWindow_cx;
fV_Stretch_ratio = (rect.bottom-rect.top-g_nFrameHeight)*1.0/nWindow_cy;
if (!g_cdMainwindowManager.EmptyList())
{
g_cdMainwindowManager.DeferMoveItemCtrlDimen(fH_Stretch_ratio,fV_Stretch_ratio);
}
return 0;
}响应子对话框WM_SIZE消息
BOOL HLPDLG_OnSize(HWND hwnd,WPARAM wParam,LPARAM lParam)
{
if (!g_cdDLPdlgCtrlManager.EmptyList())
{
//g_cdDLPdlgCtrlManager.MoveItemCtrlDimen(fH_Stretch_ratio,fV_Stretch_ratio);
g_cdDLPdlgCtrlManager.DeferMoveItemCtrlDimen(fH_Stretch_ratio,fV_Stretch_ratio);
}
return TRUE;
}延迟移动窗口函数 子窗口和控件的句柄和坐标宽高都已经存到单向链表中,拉伸的时候,显示正常。
BOOL CCtrlDimen::DeferMoveItemCtrlDimen(float fhratio,float fvratio)
{
int nCtrlnum = 0;
Node * p = head;
while (p->pnext != NULL)
{
nCtrlnum++;
p = p->pnext;
}
if (nCtrlnum == 0 )
{
return FALSE;
}
HDWP hdwpbe = BeginDeferWindowPos(nCtrlnum);
HDWP hdwp;
p = head;
do
{
p = p->pnext;
hdwp = DeferWindowPos(hdwpbe,(HWND)p->hHandle,HWND_TOP,
p->nleft*fhratio,p->ntop*fvratio,p->nwidth*fhratio,p->nheight*fvratio,SWP_SHOWWINDOW);
} while (p->pnext != NULL);
EndDeferWindowPos(hdwp);
return TRUE;
}
...全文
相关推荐
pyqt5 禁止窗口最大化和禁止窗口拉伸的方法
如下所示: 在def __init__(self):函数里添加 self.setFixedSize(self.width(), self.height()) 以上这篇pyqt5 禁止窗口最大化和禁止窗口拉伸的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。 您可能感兴趣的文章:PyQt5笔记之弹出窗口大全PyQt5创建一个新窗口的实例pyqt5 实现多窗口跳转的方法对PyQt5基本窗口控件 QMainWindow的使用详解PyQt5 多窗口连接实例pyqt5对用qt designer设计的窗体实现弹出子窗口
QtQuick实现无边框窗口的拉伸,拖拽
使用QtQuick实现一个无边框框架,支持标题栏双击最大化-普通窗口,支持最大按钮,最小按钮和普通那妞,支持窗体边缘拉伸,窗体拖拽等。
PyQt5窗口无边框+窗口拖动+窗口拉伸全部实现
PyQt5窗口无边框+窗口拖动+窗口拉伸全部实现,源码分享给大家。
[转载]MFC对话框控件和背景图片自适应窗口最大化和拉伸缩放的实现
步骤一:把easysize.h拷贝到CMyDlg项目文件夹中,同时在CMyDlg的.h文件和.cpp文件中加 入#include "easysize.h"; 步骤二:在CMyDlg类的h文件中,加入DECLARE_EASYSIZE,注意结尾处不要加“;”
Qt无边框窗口移动、拉伸、缩放
Qt无边框窗口的移动、拉伸边框、鼠标滚轮缩放大小


