版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 另一种改变窗口标题的方法 笔者在1997年9月1日出版的计算机世界上发表的名为Visual C 4.0编程经验谈的文章中,提到过一种改变窗口标题的方法,即在应用程序的框架类CMainFrame 类(注:它是CFrameWnd类的派生类) 的成员函数PreCreateWindow()中修改CFrameWnd类的成员变量m_strTitle的值。这种方法的不足之处就是只能一次性地设置窗口标题的内容,不能在程序运行过程中随时修改它。比如当需要把鼠标的当前坐标在窗口标题上显示时,我们就要使用到Visual C提供的全程函数 BOOL SetWindowText( HWND hWnd, LPCTSTR
2、 lpString )。这个函数实际上是一个Win32函数,其第一个参数要求是一个窗口框架的句柄,而第二个参数要求是一个指向一个常量字符串的32位指针,即LPCTSTR类型的变量。通常情况下,我们往往会在应用程序的文档类或视类中动态改变窗口标题的内容,因而没有现成的指向窗口框架的句柄供我们使用,因此我们还需要在使用SetWindowText()函数前先调用另一个Win32函数AfxGetMainWnd(),来获得一个指向应用程序的框架类的指针,例如使用语句: CWnd m_pCWnd= AfxGetMainWnd(); 然后,再以如下形式调用SetWindowText()函数: SetWind
3、owText(m_pCWnd, (LPCTSTR) m_WindowText); / m_WindowText可以是一个CString类的变量 把多于256色的位图作为资源加入到应用程序中 Visual C 5.0以前版本中自带的位图编辑器不能浏览和编辑256色以上的位图,并且资源文件中也不允许嵌入(Import)256色以上的位图作为资源(否则,在应用程序运行时会报错)。这一特性使我们用Visual C开发应用程序时不得不使用其他方法来增强界面图画的美观性,于是就有使用Visual C开发应用程序内核、用Visual Basic开发界面的组合方法。在Visual C 5.0中这个问题有了改善
4、。首先,位图编辑器可以创建并编辑256色的位图。其次,Visual C 5.0允许程序员把256色以上的位图嵌入到资源中,但仍然无法在Visual C的位图编辑器中浏览,并且还要求必须选择Win32 Release作为编译方式生成可执行的应用程序。另外一个限制条件是作为资源的256色以上的位图不能由应用程序内核自动打开和关闭。比如说,在上述那篇名为Visual C 4.0编程经验谈的文章中曾经提到过一种为对话框加入位图式按钮的方法,即由程序开发者为每个按钮创建四幅位图,分别用于表示按钮的弹起状态(UP)、按下状态(DOWN)、输入焦点状态(FOCUS)和禁止状态(DISABLE),并且必须以该
5、按钮的标题名与上述四种状态之一的组合作为位图的标识,以便应用程序在绘制位图按钮时,自动找到相应的资源(即位图)。然而这一自动映射只限制于Visual C位图编辑器能够打开的位图。因此,如果选择256色以上的位图作为位图按钮的资源,并希望上述四状态能够相互切换的话,就必须用到下述函数和程序设计参考模型。 *S 设置四个常量:BUTTON_UP、BUTTON_DOWN、BUTTON_FOCUS、BUTTON_DISABLE,分别用于标识各按钮的当前状态。 *S 在应用程序的相应对话框类中为每个位图按钮(为下面叙述方便,不妨假设为两个)设置一个CRect类的对象:m_rect1和m_rect2,来记
6、载各按钮在对话框中所占据的坐标矩形。再在该对话框类中为每个按钮设置一个整型变量:Buton1_Status和Button2_Status,记录各按钮的当前状态。然后在对话框的构造函数中初始化这些CRect类的对象和整型变量。 *S 在该对话框类中创建分别响应鼠标各种状态的消息处理函数,如OnMouseMove()、OnLButtonUp()、OnLButtonDown()等。 *S 同时按下Ctrl和W键或直接单击工具条上的ClassWizard按钮,打开ClassWizard对话框。在类名(Class name)列表框中选择对话框类,在Object IDs列表框中选择该类的类名,在消息(Me
7、ssages)列表框中选择WM_PAINT消息并双击它,这时ClassWizard就会在该对话框类中加入一个OnPaint()函数。然后,再在Object IDs列表框中选择新加入的工具条按钮的标识名,双击消息列表框中的COMMAND消息,ClassWizard又会在对话框类中加入相应的消息处理函数。关闭ClassWizard对话框。 本文给出部分程序代码,仅供参考。 编者注:源程序发表在http:98skilldefault.htm。欢迎访问! 在应用程序中不加载菜单、工具条和状态条 在通过AppWizard生成的具有窗口框架结构的应用程序(SDI和MDI)中,MFC类库已为我们加载了菜单(
8、包括一个系统菜单)、工具条和状态条。但有时由于特殊需要,我们可能希望在自己的应用程序中事先不加载菜单、工具条和状态条,这时就需要我们手动删除和修改一些类中的语句。步骤如下: 1.打开MainFrm.cpp文件,使用工具条上的函数下拉列表框找到OnCreate()函数。按照下述程序注释掉创建工具条和状态条部分的语句。 int CMainFrame:OnCreate(LPCREATESTRUCT lpCreateStruct) if (CFrameWnd:OnCreate(lpCreateStruct) = 1) return 1; /在此处开始加注释符号 /if (!m_wndToolBar.C
9、reate(this) |!m_wnd ToolBar.LoadToolBar(IDR_MAINFRAME) TRACE0(“Failed to create toolbarn"); return 1;/ fail to create if (!m_wndStatusBar.Create(this) |!m_wndStatus Bar.SetIndicators(indicators,sizeof(indicators)/sizeof(UINT) TRACE0(“Failed to create status barn"); return 1;/ fail to creat
10、e / TODO: Remove this if you don't want tool tips or a resizeable toolbar m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC); / TODO: Delete these three lines if you don't want the toolbar to be dockable m_wndToolBar.EnableDocking(CBRS_ALIGN_
11、ANY); EnableDocking(CBRS_ALIGN_ANY); DockControlBar(m_wndToolBar); /此处结束注释 / return 0; 2.在MainFrm.cpp文件中,使用工具条上的函数下拉列表框,找到PreCreateWindow()函数。把cs.style设置成如下形式,即不加载系统菜单。 / Create a window without min/max buttons,system menu, or sizable border cs.style =WS_OVERLAPPED |WS_BORDER; 3. 在主应用程序,即含有定义theApp全
12、程变量的.cpp文件中,使用工具条上的函数下拉列表框,找到InitInstance()函数。在“pDocTemplate = new CSingleDocTemplate”一句中,用NULL替换IDR_MAINFRAME。如下段程序所示。 BOOL CYourMainApp:InitInstance() /.此处略去一部分无关语句 CSingleDocTemplate pDocTemplate; pDocTemplate = new CSingleDocTemplate( NULL, /用NULL替换IDR_MAINFRAME RUNTIME_CLASS(CNoBarDoc), RUNTIME_CLASS(CMainFrame), / main
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 瓣叶对合修复手术的术后疼痛控制策略
- 游戏策划岗位专业能力测试题库及答案解析
- 厨师职业资格证考试烹饪技巧与菜品创新含答案
- 独居糖尿病患者的智能监护系统应用
- 外贸公司外贸业务员面试题与经验
- 深度解析(2026)GBT 19067.1-2003产品几何量技术规范(GPS) 表面结构 轮廓法 测量标准 第1部分实物测量标准
- 环境监测技术人员面试题及操作指南
- 深度解析(2026)《GBT 18927-2002包装容器 金属辅件》
- 深度解析(2026)《GBT 18863-2002免烫纺织品》
- 特殊人群罕见病用药的剂量调整策略
- 风水顾问聘请合同范本
- 2025年量子计算驱动的电力系统弹性提升-探索与展望报告-
- 广东5年(2021-2025)高考生物真题分类汇编:专题05 遗传的分子基础及生物的变异与进化(原卷版)
- 盒马鲜生促销方案
- 2025年政府采购评审专家考试题库含答案
- 云南中考英语5年(21-25)真题分类汇编-中考语篇题型 阅读理解句子还原7选5
- 2025年广西度三类人员(持b证人员)继续教育网络学习考试题目及答案
- 食品法律法规教学课件
- 掘进机维护保养课件
- 可转债券投资协议书范本
- GJB939A-2022外购器材的质量管理
评论
0/150
提交评论