[转]MFC学习总结(四)

本文介绍了MFC编程中的一些实用技巧,包括如何禁止对话框关闭和浮动工具条上的系统菜单、禁用窗口最大化按钮、复制对话框资源、实现点击对话框外部自动关闭、设置应用程序启动大小、获取视图指针、屏蔽标题栏右键菜单、全屏显示以及设置带背景颜色的文本等。这些技巧有助于提升MFC应用的定制性和用户体验。
摘要由CSDN通过智能技术生成
41.如何禁止对话框关闭按钮和浮动工具条上的系统菜单

1、禁止对话框中的关闭按钮有二种方法。
第一种方法,用ModiftMenu()涵数来实现:

CMenu* pMenu = this->GetSystemMenu(FALSE);
pMenu->ModifyMenu(SC_CLOSE,MF_BYCOMMAND | MF_GRAYED );

第二种方法,用EnableMenuItem()涵数来实现:

CMenu* pMenu = this->GetSystemMenu(FALSE);
pMenu->EnableMenuItem( SC_CLOSE, MF_BYCOMMAND|MF_GRAYED);

2、禁止浮动工具条上的系统菜单。
新建一个CToolBar的派生类CxxToolBar,在新类中的左键双击(CxxToolBar::OnLButtonDblClk(...))
和左键单击(CxxToolBar:: OnLButtonDown(...))涵数中分别加入下面代码既可:
if (IsFloating()) //工具条正在浮动状态中
{
  CWnd* pMiniFrame;
  CWnd* pDockBar;

  pDockBar = GetParent();
  pMiniFrame = pDockBar->GetParent();

  //去除其上系统菜单
  pMiniFrame->ModifyStyle(WS_SYSMENU, NULL);

  //重绘工具条
  pMiniFrame->ShowWindow(SW_HIDE);
  pMiniFrame->ShowWindow(SW_SHOW);
}

3、禁止窗口最大化按钮
在PreCreateWindow()涵数中去掉WS_MAXIMIZEBOX风格显示既可。
BOOL CxxFrameWnd::PreCreateWindow(CREATESTRUCT& cs)
{
  cs.style &= ~WS_MAXIMIZEBOX;
  return CFrameWnd::PreCreateWindow(cs);
}

42.如何拷贝一个工程的对话框资源到另一个工程中?

 有两种方法可以实现:
 
 1)你可以直接拷贝resource,用VC++以文本的方式或者直接用文本编辑器打开.rc文件,将有关的片段从
一个工程拷贝到另一个工程.你可以通过查找如下字样的片段(此片段用来定义对话框资源)来拷贝你要
的部分:
 
 IDD_MYDIALOG_ID DIALOG DISCARDABLE 0, 0, 235, 55
 
 这里的IDD_MYDIALOG_ID是你的对话框的ID,将到此片段结尾的部分全拷下来,通常你还要给新的工程
加一个ID(通过DevStudio的工具或者直接修改resource.h文件).

 2)可以通过DevStudio的copy/paste功能.首先,在编辑器以"auto"模式打开.rc文件,这时resource
正确的显示出来.然后,选中要拷贝的对话框的ID,在Edit菜单里选Copy或者按住Ctrl+C.然后打开目标
resource文件,在Edit菜单里选Paste或者按住Ctrl+V.

43.如何实现点一下对话框外面的区域,自动隐藏对话框?

 [问题提出]
  如果想在点击对话框外面的地方使得对话框关闭,该如何做?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值