`
yesjavame
  • 浏览: 689551 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Visual C++ 编程经验(上)

阅读更多

Visual C++ 5.0编程经验(上)

另一种改变窗口标题的方法

笔者在1997年9月1日出版的《计算机世界》上发表的名为《Visual C++ 4.0编程经验谈》的文章中,提到过一种改变窗口标题的方法,即在应用程序的框架类CMainFrame 类(注:它是CFrameWnd类的派生类) 的成员函数PreCreateWindow()中修改CFrameWnd类的成员变量m_strTitle的值。这种方法的不足之处就是只能一次性地设置窗口标题的内容,不能在程序运行过程中随时修改它。比如当需要把鼠标的当前坐标在窗口标题上显示时,我们就要使用到Visual C++提供的全程函数 BOOL SetWindowText( HWND hWnd, LPCTSTR lpString )。这个函数实际上是一个Win32函数,其第一个参数要求是一个窗口框架的句柄,而第二个参数要求是一个指向一个常量字符串的32位指针,即LPCTSTR类型的变量。通常情况下,我们往往会在应用程序的文档类或视类中动态改变窗口标题的内容,因而没有现成的指向窗口框架的句柄供我们使用,因此我们还需要在使用SetWindowText()函数前先调用另一个Win32函数AfxGetMainWnd(),来获得一个指向应用程序的框架类的指针,例如使用语句:

CWnd* m_pCWnd= AfxGetMainWnd();

然后,再以如下形式调用SetWindowText()函数:

SetWindowText(*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中这个问题有了改善。首先,位图编辑器可以创建并编辑256色的位图。其次,Visual C++ 5.0允许程序员把256色以上的位图嵌入到资源中,但仍然无法在Visual C++的位图编辑器中浏览,并且还要求必须选择Win32 Release作为编译方式生成可执行的应用程序。另外一个限制条件是作为资源的256色以上的位图不能由应用程序内核自动打开和关闭。比如说,在上述那篇名为《Visual C++ 4.0编程经验谈》的文章中曾经提到过一种为对话框加入位图式按钮的方法,即由程序开发者为每个按钮创建四幅位图,分别用于表示按钮的弹起状态(UP)、按下状态(DOWN)、输入焦点状态(FOCUS)和禁止状态(DISABLE),并且必须以该按钮的标题名与上述四种状态之一的组合作为位图的标识,以便应用程序在绘制位图按钮时,自动找到相应的资源(即位图)。然而这一自动映射只限制于Visual C++位图编辑器能够打开的位图。因此,如果选择256色以上的位图作为位图按钮的资源,并希望上述四状态能够相互切换的话,就必须用到下述函数和程序设计参考模型。

*S 设置四个常量:BUTTON_UP、BUTTON_DOWN、BUTTON_FOCUS、BUTTON_DISABLE,分别用于标识各按钮的当前状态。

*S 在应用程序的相应对话框类中为每个位图按钮(为下面叙述方便,不妨假设为两个)设置一个CRect类的对象:m_rect1和m_rect2,来记载各按钮在对话框中所占据的坐标矩形。再在该对话框类中为每个按钮设置一个整型变量:Buton1_Status和Button2_Status,记录各按钮的当前状态。然后在对话框的构造函数中初始化这些CRect类的对象和整型变量。

*S 在该对话框类中创建分别响应鼠标各种状态的消息处理函数,如OnMouseMove()、OnLButtonUp()、OnLButtonDown()等。

*S 同时按下Ctrl和W键或直接单击工具条上的ClassWizard按钮,打开ClassWizard对话框。在类名(Class name)列表框中选择对话框类,在Object IDs列表框中选择该类的类名,在消息(Messages)列表框中选择WM_PAINT消息并双击它,这时ClassWizard就会在该对话框类中加入一个OnPaint()函数。然后,再在Object IDs列表框中选择新加入的工具条按钮的标识名,双击消息列表框中的COMMAND消息,ClassWizard又会在对话框类中加入相应的消息处理函数。关闭ClassWizard对话框。

本文给出部分程序代码,仅供参考。

编者注:源程序发表在http://www.computerworld.com.cn/98/skill/default.htm。欢迎访问!

 

在应用程序中不加载菜单、工具条和状态条

在通过AppWizard生成的具有窗口框架结构的应用程序(SDI和MDI)中,MFC类库已为我们加载了菜单(包括一个系统菜单)、工具条和状态条。但有时由于特殊需要,我们可能希望在自己的应用程序中事先不加载菜单、工具条和状态条,这时就需要我们手动删除和修改一些类中的语句。步骤如下:

1.打开MainFrm.cpp文件,使用工具条上的函数下拉列表框找到OnCreate()函数。按照下述程序注释掉创建工具条和状态条部分的语句。

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

if (CFrameWnd::OnCreate(lpCreateStruct) == -1)

return -1;

//在此处开始加注释符号

/*if (!m_wndToolBar.Create(this) ||!m_wnd ToolBar.LoadToolBar(IDR_MAINFRAME))

{

TRACE0(“Failed to create toolbar\n");

return -1;// fail to create

}

if (!m_wndStatusBar.Create(this) ||!m_wndStatus Bar.SetIndicators(indicators,sizeof(indicators)/sizeof(UINT)))

{

TRACE0(“Failed to create status bar\n");

return -1;// fail to create

}

// 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_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全程变量的.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 SDI frame window

RUNTIME_CLASS(CNoBarView));

AddDocTemplate(pDocTemplate);

//.....此处略去一部分无关语句

}

4. 找到Visual C++编辑器的工具条上的编译方式下拉列表框,选择Win32 Release,生成Release版本的应用程序。

至此,我们就得到了不含菜单、工具条和状态条结构的应用程序。(

分享到:
评论

相关推荐

    Visual C++编程之道 光盘 代码 C++

    《Visual C++编程之道》是一本深入探讨C++编程在Visual Studio环境下的专业书籍,它涵盖了从基础到高级的各种主题,旨在帮助读者掌握利用Visual C++进行高效开发的技巧和最佳实践。书中不仅讲解了C++语言的核心概念...

    Visual C++编程宝典(十年典藏版) 明日科技 源代码

    Visual C++编程宝典(十年典藏版) 明日科技 源代码 解压后287M 《Visual C++编程宝典(十年典藏版)》是一本集技能、范例、项目和应用为一体的学习手册,书中介绍了应用Visual C++ 6.0进行程序开发的各种技术、技巧。...

    Visual C++ 游戏编程基础

    1. **Visual C++**:Visual C++是微软开发的一款集成开发环境(IDE),支持C++编程语言。它提供了丰富的工具和服务,包括调试器、代码编辑器、项目管理等,使开发者能够更高效地编写、构建和调试C++程序。 2. **...

    Visual C++ 编程实战宝典 李琳娜【高清】带书签.rar

    《Visual C++ 编程实战宝典》是李琳娜女士所著...总之,《Visual C++ 编程实战宝典》是一本全面覆盖Visual C++编程的书籍,无论你是初学者还是有经验的开发者,都能从中获得有价值的指导和启示,提升你的C++编程技能。

    Visual C++编程高手

    本篇文章将深入探讨Visual C++编程的一些核心知识点,帮助你成为一名真正的编程高手。 1. **集成开发环境(IDE)**:Visual C++的IDE提供了丰富的代码编辑、调试和项目管理工具。它包括源代码编辑器、资源编辑器、类...

    Visual C++ 编程词典

    为什么说《Visual C++编程全能词典》是编程开发人员的必备工具 1.1 海量编程资源库 1.1.1 超容量技术资源库 1.1.2 全方位视频资源库 1.1.3 丰富的实例资源库 1.1.4 多行业项目资源库 3 1.1.5 实际应用方案资源...

    1.系统任务栏设置演示(Visual C++编程 源代码)

    1.系统任务栏设置演示(Visual C++编程 源代码)1.系统任务栏设置演示(Visual C++编程 源代码)1.系统任务栏设置演示(Visual C++编程 源代码)1.系统任务栏设置演示(Visual C++编程 源代码)1.系统任务栏设置演示...

    1.如何设置光标?(Visual C++编程 源代码)

    (Visual C++编程 源代码)1.如何设置光标1.如何设置光标?(Visual C++编程 源代码)?(Visual C++编程 源代码)1.如何设置光标?(Visual C++编程 源代码)1.如何设置光标?(Visual C++编程 源代码)1.如何设置...

    Visual C++编程精粹PDF,非常好的书,适合具备Visual C++编程基础知识的程序员.

    这本书深入探讨了Microsoft的Visual C++开发环境和C++编程语言的高级特性,旨在帮助读者提升在Windows平台上进行高效、高质量的软件开发能力。 1. **Visual C++简介**:Visual C++是微软开发的一款集成开发环境...

    Visual C++6编程宝典配套cd

    《Visual C++6编程宝典配套CD》是一个包含多种资源的压缩包,旨在辅助学习和提升Visual C++6编程技能...无论你是初学者还是有经验的开发者,这些资料都能帮助你深入理解Visual C++6和C++编程,提高你的编程能力和效率。

    1.如何使用滑块控件?(Visual C++编程 源代码)

    (Visual C++编程 源代码)1.如何使用滑块控件?(Visual C++编程 源代码)1.如何使用滑块控件?(Visual C++编程 源代码)1.如何使用滑块控件?(Visual C++编程 源代码)1.如何使用滑块控件?(Visual C++编程 源...

    1.如何打开文件?(Visual C++编程 源代码)

    (Visual C++编程 源代码)1.如何打开文件?(1.如何打开文件?(Visual C++编程 源代码)Visual C++编程 源代码)1.如何打开文件?(Visua1.如何打开文件?(Visual C++编程 源代码)l C++编程 源代码)1.如何打开...

    Visual C++网络编程案例实战.pdf

    《Visual C++网络编程案例实战》一书深入探讨了如何利用Visual C++及MFC类库进行网络编程,尤其强调了Windows Socket的应用。本书不仅覆盖了理论基础,还提供了丰富的实践案例,帮助读者掌握网络编程的核心技能。 #...

    Microsoft Visual C++编程经验总结

    《Microsoft Visual C++编程经验总结》是一份由CSDN社区的众多网友共同汇集而成的珍贵资源,旨在为学习和使用Visual C++的开发者提供深入的编程指导和实用技巧。这份文档涵盖了C++语言的基础、高级特性,以及使用...

    20.如何实现图像的马赛克效果?(Visual C++编程 源代码)

    (Visual C++编程 源代码)20.如何实现图像的马赛克效果?(Visual C++编程 源代码)20.如何实现图像的马赛克效果?(Visual C++编程 源代码)20.如何实现图像的马赛克效果?(Visual C++编程 源代码)20.如何实现...

    4.如何设置工具栏按钮提示?(Visual C++编程 源代码)

    (Visual C++编程 源代码)4.如何设置工具栏按钮提示?(Visual C++编程 源代码)4.如何设置工具栏按钮提示?(Visual C++编程 源代码)4.如何设置工具栏按钮提示?(Visual C++编程 源代码)4.如何设置工具栏按钮...

    Visual C++编程实战宝典.(配书光盘).part05

    这是Visual C++编程实战宝典(清华出版社.李琳娜)一书的配套完整DVD光盘。该书以Visual Studio 2010作为开发环境,全书共分7篇,由浅入深,全面、系统地介绍了Visual C++开发的各项技术,是一本不可多得的必备参考...

    VISUAL C++MFC编程实例

    《Visual C++ MFC编程实例》是一本专为初学者设计的教程,旨在帮助读者深入理解和掌握Microsoft Foundation Classes (MFC)库在Visual C++环境中的应用。MFC是Microsoft提供的一套C++类库,它封装了Windows API,使得...

    8.如何在程序窗口中创建按钮控件?(Visual C++编程 源代码)

    (Visual C++编程 源代码)8.如何在程序窗口中创建按钮控件?(Visual C++编程 源代码)8.如何在程序窗口中创建按钮控件?(Visual C++编程 源代码)8.如何在程序窗口中创建按钮控件?(Visual C++编程 源代码)8....

    Visual C++ 编程技巧精选500例

    Visual C++ 编程技巧精选500例 Visual C++ 编程技巧精选500例 Visual C++ 编程技巧精选500例 Visual C++ 编程技巧精选500例 Visual C++ 编程技巧精选500例

Global site tag (gtag.js) - Google Analytics