防止用户进行正常的GUI操作
2010-07-06 20:43:56 来源:WEB开发网所幸的是搞定它们很容易。屏蔽掉标题框中的最大/最小按钮,方法是在PreCreateWindow函数中调整窗口风格:
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
// 在标题框中去掉最大化/最小化按钮
cs.style &= ~(WS_MINIMIZEBOX|WS_MAXIMIZEBOX);
return CFrameWnd::PreCreateWindow(cs);
}
要从系统菜单中去掉那几个不想要的命令,必须在CMainFrame ::OnCreate函数中加上以下代码:
static UINT BadCommands[] = {
SC_SIZE, SC_MOVE,
SC_MINIMIZE, SC_MAXIMIZE, SC_RESTORE, 0
};
CMenu *pSysMenu = GetSystemMenu(FALSE);
for (int i=0; BadCommands[i]; i++) {
pSysMenu->RemoveMenu(BadCommands[i], MF_BYCOMMAND);
}
现在系统菜单变成了如下图四的样子,
图四
你可能认为这下万事大吉了,但是还有一个漏洞,想一想还有哪里可以让用户移动窗口或调整窗口的大小?记住Windows中是有很多猫腻的!。
用MFC建立的应用程序一般都会有状态条,这个状态条最右边的下角有一个三角形的尺寸手柄,
图五
用这个小玩意儿可以调整窗口的大小。
如何搞掂它呢?用下列代码即可:
// 在 CMainFrame::OnCreate 中
ModifyStyle(WS_THICKFRAME,0);
// 去掉粗框架
m_wndStatusBar.Create(...);
ModifyStyle(0,WS_THICKFRAME);
更多精彩
赞助商链接