在做Qt程序界面开发过程中,测试按组合键win + up 使 界面放大了,为了阻止界面放大,保持原状,此时需要用到PMINMAXINFO:
/*
* Struct pointed to by WM_GETMINMAXINFO lParam
*/
typedef struct tagMINMAXINFO {
POINT ptReserved; //保留参数
POINT ptMaxSize; //最大值
POINT ptMaxPosition; //最大放置点
POINT ptMinTrackSize; //最小拖动范围
POINT ptMaxTrackSize; //最大拖动范围
} MINMAXINFO, *PMINMAXINFO, *LPMINMAXINFO;
case WM_GETMINMAXINFO: MINMAXINFO *mminfo; mminfo=(PMINMAXINFO)lParam; mminfo->ptMinTrackSize.x=200; mminfo->ptMinTrackSize.y=200; mminfo->ptMaxSize.x=300; mminfo->ptMaxSize.y=300; mminfo->ptMaxPosition.x=0; mminfo->ptMaxPosition.y=0; mminfo->ptMaxTrackSize.x=300; mminfo->ptMaxTrackSize.y=300; break;
在MFC中通过相应WM_GETMINMAXINFO消息后之需要在他的基础上添加一些代码就行 利用以上的代码就可以控制窗口的大小(300,300),最大化后会出现在(0,0)位置处,鼠标拖动改变窗口大小时,最大为(300,300),最小为(200,200)。其中的单位都是像素。
QT程序中的使用:
bool xxxx::nativeEvent(const QByteArray &eventType, void *message, long *result)
{
MSG *msg = (MSG*)message;
//窗口显示时的大小的信号
if (msg->message == WM_GETMINMAXINFO)
{
//使窗口保持原状,不变
PMINMAXINFO pMinMaxInfo = (PMINMAXINFO)msg->lParam;
pMinMaxInfo->ptMaxSize.x = DLG_MINIMIZE_W; //默认窗口宽度
pMinMaxInfo->ptMaxSize.y = DLG_MINIMIZE_H; //默认窗口高度
return true;
}
return QWidget::nativeEvent(eventType, message, result);
}