WEB开发网
开发学院软件开发VC 防止用户进行正常的GUI操作 阅读

防止用户进行正常的GUI操作

 2010-07-06 20:43:56 来源:WEB开发网   
核心提示:所幸的是搞定它们很容易,屏蔽掉标题框中的最大/最小按钮,防止用户进行正常的GUI操作(2),方法是在PreCreateWindow函数中调整窗口风格:BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs){// 在标题框中去掉最大化/最小化按钮cs.style &= ~(W

所幸的是搞定它们很容易。屏蔽掉标题框中的最大/最小按钮,方法是在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);

Tags:防止 用户 进行

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接