孙鑫VC++深入详解:Lesson9 Part1---修改应用程序窗口

孙鑫VC++深入详解:Lesson6 Part4 ---CMenu 类的应用:添加子菜单项AppendMenu,插入子菜单项InsertMenu,删除菜单DeleteMenu CMenu 类的应用 添加子菜单项AppendMenu,插入子菜单项InsertMenu,删除菜单DeleteMenu // //------ 追加菜单,在已菜单后面追加一个子菜单 用函数CMenu::AppendMenu  CMenu::AppendMenu  BOOL AppendMenu( UINT nFlags, UINT nIDNewItem = 0, LPCTSTR lps 阅读详情
一. 在窗口创建之前修改:
      要在MainFrame中的虚函数PreCreateWindow(CREATESTRUCT& cs)中修改CREATESTRUCT
     修改窗口标题,2个步骤
   step1:抹去窗口样式中的FWS_ADDTOTITLE,该样式是指示框架将文档标题添加到窗口标题中
         cs.style &=~FWS_ADDTOTITLE;

   step2:修改标题内容

cs.lpszName ="------NEW TITLE--------";

//在窗口创建之前修改,要修改什么,就对照结构体CREATESTRUCT来修改
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
	if( !CFrameWnd::PreCreateWindow(cs) )
		return FALSE;
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

//------修改窗口标题
//抹去窗口样式中的FWS_ADDTOTITLE,该样式是指示框架将文档标题添加到窗口标题中
	cs.style &=~FWS_ADDTOTITLE; // 或者干脆直接  cs.style = WS_OVERLAPPEDWINDOW;
	cs.lpszName ="------NEW TITLE--------";


//------修改窗口大小
	cs.cx =300;
	cs.cy =200;	

//------修改窗口左上角位置到屏幕中心
	cs.x =GetSystemMetrics(SM_CXSCREEN)/2;
	cs.y =GetSystemMetrics(SM_CYSCREEN)/2;


	return TRUE;
}

//--


二 在窗口创建之后修改

    在框架类CMainFrame的OnCreate函数中调用SetWindowLong来修改窗口属性.

    OnCreate本身就是创建窗口的函数,所谓"窗口创建之后",就是OnCreate()函数返回之前,即在它的代码的return之前

    来修改.

  

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
		| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
		!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
	{
		TRACE0("Failed to create toolbar\n");
		return -1;      // fail to create
	}

	if (!m_wndStatusBar.Create(this) ||
		!m_wndStatusBar.SetIndicators(indicators,
		  sizeof(indicators)/sizeof(UINT)))
	{
		TRACE0("Failed to create status bar\n");
		return -1;      // fail to create
	}

	// TODO: Delete these three lines if you don't want the toolbar to
	//  be dockable
	m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
	EnableDocking(CBRS_ALIGN_ANY);
	DockControlBar(&m_wndToolBar);

//------在窗口创建之后修改:如取消最大化
	 SetWindowLong(this->m_hWnd,GWL_STYLE,GetWindowLong(m_hWnd,GWL_STYLE)&~WS_MAXIMIZEBOX);	 

	return 0;
}


   


孙鑫VC++深入详解:Lesson6 Part2 -- MFC菜单更新机制 用该机制实现 Enable or Disable MenuItem MFC菜单命令更新机制---用该机制实现 Enable or Disable  MenuItem 方法: 1)用资源中的菜单项"剪切"的ClassWizard添加一个UPDATE_COMMAND_UI消息响应函数     void CMainFrame::OnUpdateEditCut(CCmdUI* pCmdUI)     同时发现MFC在MainFrm.cpp的消息映射代码处添加了 阅读详情

相关推荐

孙鑫VC++深入详解:Lesson5 Part4 屏幕字符串滚动输出,DrawText,SetTimer,WM_Timer消息

滚动字母,修改输出字幕颜色,定时器 在onCreate中添加一个定时器,即SetTimer(1,100,NULL) 再在类CDrawView中添加消息WM_TIMER的响应函数OnTimer 每间隔100毫秒被调用OnTime() 在OnTime()中用DrawText输出字符串,DrawText的输出宽度每次按照5像素宽度增加, 随着矩形宽度增加,那么显示出来的字符串就逐步增加,效

-----------------------------不要在跟自己无关的事情上浪费时间 3785

单文档修改窗体外观

方法1:窗口创建前,在CMainFrame的函数PreCreateWindow(CREATESTRUCT& cs)中,修改相应的CREATESTRUCT结构体的变量值。例如: BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) {    if( !CFrameWnd::PreCreateWindow(cs) )    {

jiangqin115的专栏 1844

手把手教你用Arduino IDE玩转ESP32-S3-wroom(附串口调试技巧)

本文详细介绍了如何在Arduino IDE环境下配置和使用ESP32-S3-WROOM模块,包括开发环境搭建、硬件连接、程序烧录及高级调试技巧。通过实战步骤和常见问题解决方案,帮助开发者快速上手这一高性能Wi-Fi/蓝牙双模模组,提升物联网开发效率。

weixin_30487201的博客 293

MFC学习笔记(一)应用程序窗口初始化

 如果想改变应用程序窗口样式,则需要直接编辑CMainFrame::PreCreateWindow()函数。直接编辑还允许为应用程序的初始外观作某些额外的变化。2.编辑CMainFrame::PreCreateWindow()1)使应用程序位于屏幕中央,并只占据屏幕的90%,可以使用下面的代码:BOOLCMainFrame::PreCreateWindow(CREATESTRUCT&cs){//c

鸟儿飞的专栏 3544

Matlab Robotics Toolbox实战:四自由度机械臂建模与仿真全流程(附代码)

本文详细介绍了使用Matlab Robotics Toolbox进行四自由度机械臂建模与仿真的全流程,包括DH参数定义、模型构建、可视化、运动学仿真及交互控制。通过实战案例和代码示例,帮助读者快速掌握机械臂建模技巧,提升机器人学习效率。

weixin_42538752的博客 415

生成式深度学习(第二版)-第一章-Conda环境下TensorFlow和Keras的安装和配置

按照书籍中的代码运行提示,需要配置Docker。个人的机器上正好有 conda4.14.0,索性就在本地环境进行配置。

GarryWang1248的博客 398

去掉自动显示标题栏的文字...

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs){cs.style &= ~FWS_ADDTOTITLE; if( !CFrameWnd::PreCreateWindow(cs) ) return FALSEreturn TRUE;} void CTextView::OnInitialUpdate(){ CFormView:...

zhenzhong 253

阿里云大模型ACP认证模拟考试(三)

【摘要】:在阿里云大模型高级工程师 ACP 认证暂无真题题库的现状下,模拟题具有重要意义。其依照真实考试设计,涵盖题型、题量与分值分布,助力考生熟悉考试框架,合理分配答题时间精力,提升效率。同时,模拟题紧扣官方课程,能帮助考生精准定位知识盲点,如大模型架构原理和通义千问应用实践等重点内容,以便针对性完善知识体系。此外,通过练习模拟题,考生可掌握不同题型的解题思维与技巧,快速洞察复杂题目本质,提高答题准确率。

davidkorhenn的博客 3581

孙鑫VC++深入详解:Lesson9 Part2---修改窗口光标,图表,背景

一. 窗口创建之前修改,用自定义的窗口类WNDCLASS wc 由于窗口的图标,光标,背景是在窗口类设计是指定的,因此要改的话, 就自己定义一个WNDCLASS wc,按照自己的需要填充wc,并注册RegisterClass(&wc) 1. 在MFC程序中,要修改出现窗口图表只能在框架类进行(CMainFrame) 2. 要修改背景和光标,应该在视类中进行,在框架类修改则看不见

-----------------------------不要在跟自己无关的事情上浪费时间 2555

python编程实现制作网络流量监控动画

c,实时显示网络带宽使用情况,用柱状图或折线图表示不同时间段的流量变化。通过 Python编程实现图形库(如 Pygame、Tkinter、Matplotlib 等)来实现计算机网络基础概念的可视化动画。global bars # 声明 bars 为全局变量。# 获取当前网络流量。# 创建图形和坐标轴。

qq_42788199的博客 718

用Multisim仿真AD630锁定放大器:从2012年电赛A题实战到避坑指南

本文详细介绍了如何使用Multisim仿真AD630锁定放大器,从2012年电赛A题实战出发,提供完整的电路搭建、参数优化及避坑指南。重点解析AD630的开关调制架构和双相位检测的工程实现,帮助读者在强噪声背景下有效提取微弱信号,提升电子设计竞赛和工程实践中的信号处理能力。

weixin_42549451的博客 203

孙鑫VC++深入详解:Lesson9 Part3---模拟动画图标

让应用程序标题栏的图标按照时间轮换 思路: 1) SetClassLong函数在窗口建成后调用图标文件(事先准备好3个图标文件),在OnCreate中处理 2) 在OnCreate中放置一个SetTimer 3)处理WM_TIIMER消息即OnTime函数 知识点: 用三种方法获取应用程序实例hInstance句柄 1) AfxGetInstanceHandle() 2)t

-----------------------------不要在跟自己无关的事情上浪费时间 1491

优快云独家首发!万字长文,YOLOv5/v7/v8算法模型yaml文件史上最详细解析与教程!小白也能看懂!掌握了这个就掌握了魔改YOLO的核心!

🍀🍀🍀YOLOv5/v7/v8算法模型yaml文件史上最详细解析与教程,全网最强,学不会算我输!!!

Coding... 1万+

孙鑫VC++深入详解:Lesson9 Part4---工具栏编程

//--- 1. 工具栏类CToolBar是CControlBar的子类,而CControlBar是CWnd的子类...因此工具栏是个窗口. 1.将工具栏的图标的ID与子菜单项的ID设置成一样的,这样工具栏图标就可以响应子菜单项的消息. 2. 将子菜单项目带勾:就是可以设置取消复选标记(勾).....添加UPDATED_COMMAND_UI消息即可. //---- 创建工具栏的过程:

-----------------------------不要在跟自己无关的事情上浪费时间 1727

Proxmox VE 9 更换源

创建一键更换Proxmox VE 9.0源的Bash脚本,实现快速替换软件源。脚本需包含订阅提醒关闭功能,兼容Proxmox VE 9.0系统,执行命令为bash /proxmox_9.0_Repo.sh。该工具可简化源配置过程,自动处理系统更新源替换及订阅提示屏蔽,适合需要快速配置Proxmox环境的用户使用。

极致,细节 4987

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

孙鑫VC++深入详解:Lesson8 Part2---属性表单

1. Insert-->Dialog 插入IDD_LARGER....3个   Style:Child, Disable 2 分别给三个属性表单页Page1,Page2,Page3 用ClassWizard创建3个类,CPage1,CPage2,CPage3 3. 属性表单页CPropertyPage实际是要附加在CPropertySheet上才能显示    (1)CPropertyPage

-----------------------------不要在跟自己无关的事情上浪费时间 3170

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

孙鑫VC++深入详解:Lesson9 Part6---在状态栏中添加进度条

最直接的办法就是: //------ 在OnPaint中创建....且窗口改变是重绘进度条.  void CMainFrame::OnPaint()  { CPaintDC dc(this); // device context for painting // TODO: Add your message handler code here CRect rect; m_w

-----------------------------不要在跟自己无关的事情上浪费时间 1842

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

修改MDI工程主框架窗口标题

<br />//在CMainFrame类的PreCreateWindow函数中加入 m_strTitle = _T("Hello"); cs.style &= ~FWS_ADDTOTITLE; //即可修改主框架窗口的标题。代码如下: BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { m_strTitle = _T("Hello"); cs.style &= ~FWS_ADDTOTITLE; if( !CMDIFr

God,please give me a little more time .... 2411

C++修改其他窗口样式(通用型)

首先,这里是头文件(不确定要不要全部) #include<Windows.h> //#include <Windows.h> #include <shellapi.h> #include <iostream> #include<string> #include<istream> #include <conio.h> #include <shlobj.h> #include <dwmapi.h> #

爱编程的叶一笑的博客 1823

孙鑫VC++深入详解:Lesson6 Part3 ---创建右键弹出菜单 TrackPopupMenu

1  -----增加右键弹出菜单方法一:      Project-->Add to Project-->Components and Controls -->Visual C++ Components    -->Pop-up menu 注意要加到View类中,不要加到Frame类中,因为Frmae被View覆盖,收不到鼠标消息. 2  -----增加右键弹出菜单方法二: 模仿一,在鼠

-----------------------------不要在跟自己无关的事情上浪费时间 9978

孙鑫VC++深入详解:Lesson5 Part2 路径层 CDC::BeginPath,BeginPath

5. 路径层 CDC::BeginPath,BeginPath    如何在Device Context中建立了一个路径层:    1)即调用BeginPath()    2)再调用其他的GDI绘图函数参数一个区域,如Rectangle生成一个矩形区域    3)调用EndPath()  产生闭环的路径层(即一个绘图区域)             pDC->BeginPath();

-----------------------------不要在跟自己无关的事情上浪费时间 4890

孙鑫VC++深入详解:Lesson6 Part1 -- CheckMenuItem,子菜单项上添加位图,禁用子菜单项,删除整个菜单,和加载菜单

//--   1.    在菜单上加个子菜单TEST,然后在CMainFrame,CMenuApp,CMenuDoc,CMenuView这4个类中都添加响应WM_COMMAND命令消息的OnTest函数      测试表明     (1) 只会有一个OnTest能响应     (2)响应优先级 ,类的顺序是 CMenuView ---> CMenuDoc --->CMainFrame --

-----------------------------不要在跟自己无关的事情上浪费时间 4884

孙鑫VC++深入详解:Lesson8 Part3---如何让对话框捕获WM_KEYDOWN消息?

因为对话框程序中,某些特点的消息,如按键消息被Windows内部的对话框过程处理了,即基类完成了或者被发送给子控件处理,所以在对话框类中就不能捕获到按键消息 解决办法:在子类中覆盖基类的特定消息过滤响应函数. 在MFC中,用虚函数ProcessMessageFilter()来过滤或者响应菜单和对话框的特定Windows消息. 在子类中覆盖它,接管消息响应. 本例中,在CWinSun

-----------------------------不要在跟自己无关的事情上浪费时间 3210

孙鑫VC++深入详解:Lesson6 Part6--- 电话本示例程序 动态添加子菜单 框架类窗口截获命令消息

// --- //-- 一. 电话本设计思路: a. 在Veiw类中用 OnChar()响应客户区的输入 如 "Weixin 2666777",用空格隔开名称与电话 b. 收到回车键时把每行输入保存到m_strLine,和m_strArray数组中,m_strArray要定义成public,因为MainFrame中要用 c. 用"Weixin"创建动态子菜单. d. 响应菜单COMM

-----------------------------不要在跟自己无关的事情上浪费时间 2953
上一篇: 孙鑫VC++深入详解:Lesson8 Part3---如何让对话框捕获WM_KEYDOWN消息?
下一篇: 孙鑫VC++深入详解:Lesson9 Part2---修改窗口光标,图表,背景
sergery
博客等级 码龄18年 113粉丝 136原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值