首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在 win32/mfc 应用程序中隐藏/折叠主菜单

在 Win32/MFC 应用程序中隐藏/折叠主菜单,可以通过以下几种方法实现:

  1. 使用 SetMenu 函数将主菜单设置为 NULL

在 MFC 应用程序中,可以使用 SetMenu 函数将主菜单设置为 NULL 来隐藏主菜单。例如,在派生自 CFrameWnd 的主窗口类中,可以添加以下代码:

代码语言:cpp
复制
void CMainFrame::OnHideMenu()
{
    SetMenu(NULL);
}
  1. 使用 CheckMenuItem 函数将菜单项设置为 MF_CHECKEDMF_UNCHECKED

可以使用 CheckMenuItem 函数将菜单项设置为 MF_CHECKEDMF_UNCHECKED 来折叠主菜单。例如,在派生自 CFrameWnd 的主窗口类中,可以添加以下代码:

代码语言:cpp
复制
void CMainFrame::OnToggleMenu()
{
    CMenu* pMenu = GetMenu();
    if (pMenu != NULL)
    {
        UINT uState = pMenu->GetMenuState(ID_FILE_EXIT, MF_BYCOMMAND);
        if (uState & MF_CHECKED)
        {
            pMenu->CheckMenuItem(ID_FILE_EXIT, MF_BYCOMMAND | MF_UNCHECKED);
            SetMenu(NULL);
        }
        else
        {
            pMenu->CheckMenuItem(ID_FILE_EXIT, MF_BYCOMMAND | MF_CHECKED);
            SetMenu(pMenu);
        }
    }
}
  1. 使用 ShowWindow 函数将主菜单隐藏

可以使用 ShowWindow 函数将主菜单隐藏。例如,在派生自 CFrameWnd 的主窗口类中,可以添加以下代码:

代码语言:cpp
复制
void CMainFrame::OnHideMenu()
{
    CMenu* pMenu = GetMenu();
    if (pMenu != NULL)
    {
        pMenu->ShowWindow(SW_HIDE);
    }
}
  1. 使用 ModifyMenu 函数将菜单项设置为 MF_BYPOSITION | MF_HIDDEN

可以使用 ModifyMenu 函数将菜单项设置为 MF_BYPOSITION | MF_HIDDEN 来隐藏菜单项。例如,在派生自 CFrameWnd 的主窗口类中,可以添加以下代码:

代码语言:cpp
复制
void CMainFrame::OnHideMenuItem()
{
    CMenu* pMenu = GetMenu();
    if (pMenu != NULL)
    {
        pMenu->ModifyMenu(0, MF_BYPOSITION | MF_HIDDEN, NULL);
    }
}

以上是在 Win32/MFC 应用程序中隐藏/折叠主菜单的一些方法。具体实现方式可以根据应用程序的需求进行选择。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何让WIN32应用程序支持MFC类库

那是不是就没办法了呢,当然不是,我们可以选择在VS制作Win32应用程序来解决,它虽然是窗口程序,但是我们可将窗口隐藏掉就不会像之前有闪烁的现象,但是默认生成的Win32应用程序又不能使用MFC类库,...给我们编程造成不便,下面我就来教大家怎样在WIN32应用程序中支持MFC类库的方法,让我们接着开始吧!...核心组件和标准组件 #include // MFC 扩展 上面这段代码可以放在预编译头文件stdafx.h,位置自己可定 然后在_tWinMain的开始加入 if...AfxWinInit(hInstance, NULL, lpCmdLine, 0)) { MessageBox(NULL,_T("MFC init error!"),_T("Error!")...,MB_OK); return 0; } 然后在菜单依次选择"项目->属性->配置属性->常规->MFC的使用"中选择"在共享DLL中使用MFC";

24630

LNK2019 无法解析的外部符号 WinMain,该符号在函数 int __cdecl invoke_main(void) (?invoke_main@@YAHXZ) 中被引用

大概这项目本来是win32工程,后来被改成mfc工程,只改了release版 debug版配置项还有这问题 方法四: 如果是windows程序: 1.菜单中选择 Project->Properties...Windows(/SUBSYSTEM:WINDOWS) 如果是控制台程序: 1.菜单中选择 Project->Properties, 弹出Property Pages窗口 2.在左边栏依次选择:Configuration...)做为函数入口(函数); 所以出现了以上报错,意思就是函数和当前项目不匹配。...接下来说一下win32控制台应用程序win32项目、mfc项目这几个货的区别: 我的理解,我首先把这几个货分为两大类;第一类包括win32控制台应用程序,第二类就是剩下那俩货。...MFC应用程序:本质上是个win32工程,只是默认帮你引用了mfc框架的头文件和库,并且程序入口由mfc框架提供,不需要自己写。

16.6K51
  • VC2008如何为MFC应用程序添加和删除消息响应函数

    一、VC2008自动添加消息响应函数       举一个《MFC Windows应用程序设计》的MFC单文档应用程序的例子,如下:        例4-9  设计一个利用CClientDC绘图,在窗口单击鼠标左键之后...(1)  在MFC AppWizard创建一个名称为MFCexp4_9的单文档应用程序。        (2)  在视图类的OnLButtonDown()函数输入如下代码。...新浪博百里无二转载的一篇博文很简洁:             VC2008 添加MFC消息处理函数具体步骤如下: · 1.在类视图中,右键需要添加处理函数的类,选择属性。...手动删除消息响应函数需要删掉三个地方,以删除菜单响应函数为例时包括以下三个部分:             1、头文件的定义,afx_msg void OnDialogModel();            ...CMyboleView::OnDialogModel()函数的定义实现部分:            看来以后得多使用一下VS2008这套工具,可以通过学习MFCWin32应用程序多加练习。

    1.9K20

    MFC拓展库】上海道宁与BCGSOFT合作为您带来专业的Micrisoft Windows开发业务组件

    库拥有500多个经过全面设计测试和充分记录的MFC扩展类其组件可以轻松地集成到应用程序并节省数百个开发和调试时间一、开发商介绍BCGSoft Ltd.成立于1998年,是一家专门为Microsoft...三、关于BCGPEdit(MFC)BCGPEdit(BCGSoft专业编辑器)是一个MFC扩展库,允许您将高级编辑控件合并到任何基于MFC应用程序。...XML数据可以从内部应用程序资源、外部文件或Internet加载。03、支持可折叠节点(大纲)开箱即用的大纲解析器可识别 C++ 文件,并且可以通过编程方式或使用外部 XML 文件进行自定义。...Visual Studio 2008包含的新MFC版本基于 BCGControlBar Pro技术,但MFC版本不包含一些重要的库组件,例如图表、网格、日历、编辑器等。...BCGSuite库有100多个经过彻底设计、测试和完整记录的MFC扩展类。我们的组件可以轻松集成到您的应用程序,并为您节省数百个开发和调试时间。

    5.6K20

    锁定屏幕相关知识「建议收藏」

    WH_MSGFILTER Hook 只能监视传递到菜单,滚动条,消息框的消息,以及传递到通过安装了 Hook 子程的应用程序建立的对话框的消息。...通过使用这个函数,应用程序能够在模式循环期间使用相同的代码去过滤消息,如同在消息循环里一样。...另一方面,在 Win16 环境下,所有应用程序都在同一地址空间;而在 Win32 环境下,所有应用程序都有自己的私有空间,每个进程的空间都是相互独立的,这减少了应用程序间的相互影响,但同时也增加了编程的难度...MFC 类库,因此减少了空间的占用,但是在运行时却依赖于 MFC 动态链接类库;这两种 DLL 既可以被 MFC 程序使用也可以被 Win32 程序使用。.../mouse/debug 目录; (10) 先运行几个可执行程序,然后运行 Mouse.exe 程序,把鼠标在不同窗口中移动,在 Mouse.exe 程序窗口中的编辑框内将显示出鼠标所在的应用程序窗口的标题

    1.2K11

    VC编程入门浅谈「建议收藏」

    对于没有编程基础的人首先要学习编程的基础知识,变量,语句,基本的算法等,然后写一些小的程序,实现些常用算法对自己的思维是很好的锻炼,对以后的学习大有好处。...注意,C++是一门语言,而VC则是讲解如何在VC环境下使用MFC类库,学习VC应建立在充分了解C++的基础上的。...学完了C++,最好先找本Win32编程的书,Win32编程是指用Windows API编程,MFC是将众多的API函数进行了封装的类库,用起来方便了不少,但如果没有一些API编程基础,对相关概念不了解,...建议不要等彻底弄明白一句才看下一句,等能做出个菜单、对话框时便回头再看一遍,几遍之后应该就可以大概明白MFC程序的运作了。...开始时,教材让怎么办就怎么办,比猫画虎的做出个菜单、对话框,然后试着添加控件。等到不看教程便做出这些时,开始逐字逐句的试着理解MFC程序的组织。若看不懂就跳过看下面的。就这样一遍一遍来。

    99510

    钩子原理及实例:实现键盘钩子截获密码

    钩子的种类很多,每种钩子可以截获并处理相应的消息,键盘钩子可以截获键盘消息,外壳钩子可以截取、启动和关闭应用程序的消息等。...计算机的所有输入设备由 Windows 监控,当一个事件发生时,Windows 先将输入的消息放入系统消息队列,然后再将输入的消息拷贝到相应的应用程序队列应用程序的消息循环从它的消息队列检索每一个消息并发送给相应的窗口函数...另一方面,在Win16环境下,所有应用程序都在同一地址空间;而在Win32环境下,所有应用程序都有自己的私有空间,每个进程的空间都是相互独立的,这减少了应用程序间的相互影响,但同时也增加了编程的难度。...VC6MFC DLL的分类及特点 在VC6有三种形式的MFC DLL(在该DLL可以使用和继承已有的MFC类)可供选择,即Regular statically linked to MFC...,但是在运行时却依赖于MFC动态链接类库;这两种DLL既可以被MFC程序使用也可以被Win32程序使用。

    2K21

    WINDOWS核心编程--Windows程序内部运行机制

    通过查看 MSDN 我们可以知道,在 Win32 环境下,这个参数总是 NULL ,即在 Win32 环境下,这个参数不再起作用。...要在 VC++ 开发环境应用程序传递参数,可以单击菜单 【 Project 】→【 Settings 】,选择“ Debug ” 选项卡,在“ Program arguments ”编辑框输入你想传递给应用程序的参数...第四个参数 nCmdShow 指定程序的窗口应该如何显示,例如最大化、最小化、隐藏等。这个参数的值由该程序的调用者所指定,在调用ShowWindow()时可以使用到该值。...自定义菜单图标被命名为.rc----------资源脚本 VC++,资源是通过标识符ID来识别的 ID是在resource.h的宏 他的lpIconname是一个指针,指向资源 第七个–hCursor...CALLBACK 使用在应用程序回叫例程,窗口和对话框过程的FAR PASCAL的位置 LPCSTR 与LPSTR相同,只是LPCSTR用于只读串指针,其定义类似(const char FAR

    1.5K50

    ATL CLR MFC Win32 常规 的区别

    ---- 文章1 ATL用于编写COM程序,CLR是.NET的公共语言运行库,MFC是指MFC类库,MFC程序是用这些类库做出的程序,WIN32常规就是不用 MFC,使用API函数编的程序。...从编程所处层次而言,WIN32为最底层,其次是MFC.然后是CLR. WIN32 winAPI MFC MFC类库 CLR .net库. WIN32常规就是不用MFC,使用API函数编的程序。...MFC是微软的基本类库,用于使用Visual C++开发环境创建本地应用程序。顾名思义,CLR具有跨平台、跨语言的特性,各种语言都可以使用CLR开发.NET平台上应用程序。...使用Visual Studio 2005 可以很方便地创建一个CLR与MFC混合编程的工程,在工程,我们即可以使用MFC的类,也可以使用CLR的类。...工程的创建和设置如下: 1)首先创建一个MFC工程。例如,支持MFCWin32控制台应用程序。 2)配置项目,使工程具有公共语言运行库支持。

    1.5K30

    visual C++ 项目和解决方案的区别

    3.应用程序头文件和源文件 应用程序向导会根据应用程序的类型(单文档、多文档或基于对话框的程序)自动生成一些头文件和源文件,这些文件是工程的主体部分,用于实现框架、文档、视图等。...下面分别简单介绍下各个文件:http://hovertree.com/menu/cpp/ HelloWorld.h:应用程序头文件。...MainFrm.h和MainFrm.cpp:通过这两个文件从CFrameWndEx类派生出CMainFrame类,用于创建框架、菜单栏、工具栏和状态栏等。...4.资源文件 一般我们使用MFC生成窗口程序都会有对话框、图标、菜单等资源,应用程序向导会生成资源相关文件:res目录、HelloWorld.rc文件和Resource.h文件。...因为C++没有提供GUI的内置支持,如果要用C++创建一个窗口,我们需要使用系统API或者使用封装了系统API的一些库,前者Win32系统API后者MFC、wxWidgets等。

    1.4K30

    牛人整理分享的面试知识:操作系统、计算机网络、设计模式、Linux编程,数据结构总结

    MVC模式 提高篇:WIN32MFC与Linux 一: WIN32 1. Win32应用程序的基本类型. 2. 创建win32窗口程序的几个步骤,及使用到的函数。...Win32线程同步提供的方式,及主要函数为什么? 40. 提供的同步措施哪些是内核对象? 试比较互斥量和临界区。 二:MFC 1. MFC包含哪几类程序? 其中MFC应用程序又包含哪几类?...MFC的大多数类都继承自哪个类? 3. MFC主要要用到哪几个类?及其各个类的作用。 4. MFC中有哪6类核心机制?Cobject中封装了哪些机制? 5....在哪个类的什么函数中进行MFC程序初始化? 相当于main功能的函数。 6. MFC应用程序的启动机制的实现。(几个步骤及相关函数) 7. 窗口的创建及窗口处理函数机制的实现。...MFC的消息分类。自注册消息用什么函数进行注册?消息映射宏是什么? 10. MFC菜单、工具栏、状态栏所用的类是什么? 11. 怎么定义一个视图窗口? 12. 划分窗口使用什么类?

    2.4K41

    深入浅出MFC-读书笔记

    所谓UI 资源是指功能菜单、对话框外貌、程序图标、光标形状等等东西。这些UI 资源的实际内容(二进制代码)系借助各种工具产生,并以各种扩展名存在.ico、 .bmp、 .cur 等等。...如果把应用程序获得的各种「输入」分类,可以分为由硬件装置所产生的消息(鼠标移动或键盘被按下),放在系统队列( system queue),以及由Windows 系统或其它Windows 程序传送过来的消息...this 指针 成员函数有一个隐藏参数,名为this 指针。...CWinApp 代表程序本体 CFrameWnd 代表一个框窗口( Frame Window) 注意:应用程序一定要改写虚拟函数InitInstance,因为它在CWinApp 只是个空函数...当使用者打开一份文件文件,程序应该把窗口上的菜单换掉,这个动作在SDK 程序由程序员负责,在MFC 程序则由Framework 代劳了。

    84120

    windows 桌面GUI自动化-1. pywinauto 环境准备

    ,我们需确定使用哪种可访问性技术(backend)用于应用程序。...在windows上受支持的有两种: Win32 API (backend= “win32”) ,默认的backend, MFC、VB6、VCL、简单的 WinForms 控件和大多数旧的遗留应用程序 MS...UI Automation (backend=”uia”) , WinForms、WPF、商店应用程序、Qt5、浏览器 那么如何知道程序到底适用于那种backend?...菜单栏。提供对检查功能的访问权限。 工具 栏。提供对检查功能的访问权限。 树视图。将 UI 元素的分层结构呈现为可用于在元素之间导航的树视图控件。 数据视图。...菜单可用的命令也在工具栏中提供。下图显示了检查查询记事本“编辑”菜单元素的UI 自动化属性。

    1.1K30

    多线程编程10个例子--1

    执行线程终止了,进程也就随之终止。   每一个进程至少有一个执行线程,它无需由用户去主动创建,是由系统自动创建的。用户根据需要在应用程序创建其它线程,多个线 程并发地运行于同一个进程。...Win32 SDK函数支持进行多线程的程序设计,并提供了操作系统原理的各种同步、互斥和临界区等操作。Visual C++ 6.0,使用MFC类库也实现了多线程的程序设计,使得多线程编程更加方便。...六、MFC多线程编程实例   在Visual C++ 6.0编程环境,我们既可以编写C风格的32位Win32应用程序,也可以利用MFC类库编写C++风格的应用程序,二者各有其优缺点。...基于Win32应用程序执行代码小巧,运行效率高,但要求程序员编写的代码较多,且需要管理系统提供给程序的所有资源;而基于MFC类库的应用程序可以 快速建立起应用程序,类库为程序员提供了大量的封装类,而且...用 MFC 类库编程实现工作者线程 例程5 MultiThread5 为了与Win32 API对照,我们使用MFC 类库编程实现例程3 MultiThread3。

    2.5K50

    AfxMessageBox和MessageBox差别

    假设用MFC的话,请尽量使用afxmessagebox,由于这个全局的对话框最安全,也最方便。 可是在WIN32 SDK的情况下仅仅能使用MESSAGEBOX。...MessageBox 是 Win32 API ,能够直接使用;AfxMessageBox是MFC的API,须要MFC支持。...假设用MFC的话,请尽量使用afxmessagebox,由于这个全局的对话框最安全,也最方便。可是在WIN32 SDK的情况下仅仅能使用MESSAGEBOX。...AfxMessageBox不能控制消息框标题,经常使用于调试程序时的内部数据输出或警告;MessageBox比較正式,经常使用在要提交的应用程序版本号,能够控制标题内容而不必採用含义不明的可运行文件名称为标题...lpszText表示在消息框内部显示的文本,消息框的标题为应用程序的可运行文件名称(Hello)。

    94910

    利用键盘钩子捕捉linux键盘动作,利用键盘钩子捕获Windows键盘动作

    通常需要记录的信息是多种多样的,环境温度记录、软件运行记录、文件访问记录等等。这里将以键盘信息记录为例来讲述类似的实验信息自动记录的一般实现方法。  ...本文下面将对Win32平台下全局钩子的运行机制进行介绍并给出了一个具体的由VC 6.0编写的捕获键盘动作的键盘钩子示例程序。   ...另外创建一个单文档应用程序,把所需的动态链接库头文件、lib库复制到工程目录,将动态链接库复制到Debug目录下。...本文下面将对Win32平台下全局钩子的运行机制进行介绍并给出了一个具体的由VC 6.0编写的捕获键盘动作的键盘钩子示例程序。   ...另外创建一个单文档应用程序,把所需的动态链接库头文件、lib库复制到工程目录,将动态链接库复制到Debug目录下。

    2.7K10

    (转载)VC的内存泄漏检查

    :DEBUG_NEW,可以找到“DEBUG_NEW 宏”,在"请参见其他资源",打开“MFC的内存泄漏检测”,在“MFC的内存泄漏检测”页面下方的相关章节,可找到“检测和隔离内存泄漏”,它就是介绍如何使用...C/C++ 应用程序即是如此,在这些应用程序,内存处理问题属于最常见的 bug。...这些方法不仅MFC程序可以使用,win32程序也可以使用。并且这些方法,不仅C++的内存分配方式(new)可用,C的内存分配方式(malloc)也可用。...1.1 对于C分配的内存(本小节的内容是通用方法,MFC也是通过封装本小节的内容实现的) Win32对C语言分配的内存进行泄漏检测是通过文件,对malloc等函数的重定义实现的。...二、对于MFC程序 MFC工程,最终也是按Win32工程方式的内存泄漏执行,不过MFC工程创建向导生成的MFC工程,自动支持C++分配的内存泄漏检测,我们不需要任何处理。

    1.4K20

    基于消息的事件驱动机制(Message Based, Event Driven)

    模型在MFC程序的应用 MFC(Microsoft Foundation Classes)是微软的基础类库,对大部分的Windows API进行封装,同时也是桌面软件的UI开发框架,下图是一个用VS2019...不用做任何开发工作,就可以得到一个自带菜单栏、工具栏、状态栏、属性展示框等丰富的界面框架。不过现在MFC已经没落,除了历史项目,已经很少有新项目,采用MFC。...下文会基于鼠标点击后完整的系统响应过程,说明该模型在MFC的体现。 ?...2.4.1 Win32应用程序的消息处理映射表 WndProc为消息处理函数,代码内部通过switch case,给不同的消息指定不同的处理函数。...模型在浏览器的应用 在网页应用程序开发(前端开发),用户的点击操作产生事件,同时在网页应用程序中进行处理响应。浏览器应用,同样适用于该模型。

    2.6K20
    领券