孙鑫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

Vivado工程芯片型号更换全流程:从IP更新到生成新bit文件(避坑指南)

本文详细介绍了Vivado工程中更换芯片型号的全流程,包括IP更新、约束文件适配和生成新bit文件的关键步骤。特别针对FPGA开发中常见的兼容性问题提供避坑指南,帮助开发者高效完成芯片迁移,确保设计稳定性和性能优化。

weixin_42549451的博客 298

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

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

鸟儿飞的专栏 3544

AWS RDS 介绍 三)创建 RDS 实例

AWS RDS 介绍 共分为 7 个部分, 其中 第 3部分重点介绍,如何创建一个RDS 实例。 三) AWS RDS 试用MySQL http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_GettingStarted.CreatingConnecting.MySQL.

XuYongshi02的专栏 7646

【谷粒商城】分布式事务与下单

=购物车== 构建gulimall-cart,复制静态资源到nginx,修改网关 购物车分为离线购物车和登录购物车 离线购物车重启浏览器了也还有 1、购物车需求 特点:读多写少,放入数据库并不合适 登录状态:登录购物车 放入数据库 mongodb 放入redis(采用) 登录以后,将离线购物车里合并后清空离线购物车 未登录状态:离线购物车 放入localstorage浏览器的技术 cookie WebSQL 放入redis(采用) 浏览器重启后还在 2、购物车VO (1) 数据结构分析

努力充实,远方可期 1万+

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

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

zhenzhong 253

antv x6 沿边图标循环动画实现

2.使用transition给边设置动画,利用complte方法实现循环动画。实现效果,如下图,边上存在两个图标,要求图标延边一直循环动画。1.注册一个自定义边,边上定义两个图标,并设置其初始位置。

lingliu0824的博客 3366

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

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

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

osgEarth shapefile矢量生成三维模型案例 2.boston.earth

osgEarth shapefile矢量生成三维模型案例 2.boston.earth 波士顿城市建筑、路灯、公园、道路shp矢量生成三维模型案例。

qq_24934183的博客 3543

特征模理论指导滤波天线设计的优势和方法

本文探讨了特征模理论在滤波天线设计中的应用优势和方法。特征模理论通过分析天线结构的本征模特性,突破了传统经验设计的局限,实现了辐射与滤波功能的一体化设计。文章重点阐述了如何利用模式显著性(MS)和模式加权系数(MWC)来指导辐射零点的产生,揭示了辐射零点形成的物理机制。通过特征模分析,设计师可以明确调控天线结构和馈电系统,优化滤波性能。这种方法为现代多频/宽带滤波天线设计提供了理论依据和实用工具,显著提升了设计效率和性能指标。

qq_64207806的博客 957

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

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

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

基于STM32的智能鞋柜系统设计与实现

摘要:本文设计并实现了一种基于STM32F103C8T6单片机的智能鞋柜系统。该系统通过DHT11温湿度传感器、PM2.5粉尘传感器和MQ-135空气质量传感器构建多维度环境监测网络,结合光电红外传感器和光敏传感器实现柜门状态识别与智能照明。系统采用分层控制策略,当温度低于15℃或湿度高于65%时自动启动加热和通风,PM2.5超标时启动通风,污染物浓度升高时激活紫外线杀菌。创新性地实现了柜门状态与紫外线消毒的双保险互锁机制,确保使用安全。测试结果表明,系统温湿度控制精度达±0.4℃/±2.0%RH,PM2.

3254968421的博客 253

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

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

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

李宏毅2025《机器学习》第一讲-生成式AI:技术突破和未来发展

本文基于台湾大学李宏毅教授的“一堂课搞懂生成式人工智慧的技术突破与未来发展”课程内容,系统性地梳理了生成式AI的核心概念、技术原理、发展演进以及未来趋势。文章从AI的“行为”入手,通过生动的实例展示了其强大的生成与推理能力;进而深入剖析其底层运作机制,阐释了“万物皆为令牌(Token)”、自回归生成、Transformer架构等核心原理;接着,文章追溯了通用AI模型从“专才”到“通才”的演进历程;最后,探讨了如何通过微调(Fine-tuning)、模型编辑(Model Editing)等技术赋予AI新的能力

木鱼时刻的专栏 2295

Devexpress16.2.6破解工具

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

孙鑫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

精雕软件(JDpaint) 5.5 绿色版

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

孙鑫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

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

修改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、付费专栏及课程。

余额充值