- 浏览: 196266 次
- 性别:
- 来自: 长沙
文章分类
最新评论
-
在世界的中心呼喚愛:
思路很好
连连看全局消除算法 -
tianaozhu:
请问,我修改了词库和源文件怎么就不好用了, 我源文件是: My ...
自己动手开发翻译软件(Java版) -
Arlrn:
博主你好,最近在学习排序算法,看了你的博客,你的直接插入排序, ...
各种排序算法的实现及其比较 -
sharong:
有一个明显错误,很显然冒泡排序的时间复杂度是O(n^2)
各种排序算法的实现及其比较 -
julydave:
希尔排序不太对吧。。
各种排序算法的实现及其比较
前面写了那么多代码,但很多东西都是固定的,我们需要写的主要是消息处理函数。。。所以可以把这些代码模块化,把要我们写的部分空出来。
下面的代码虽然有点复杂,但已经给出了类似这样的模块化方法。
#include<windows.h> //定义全局变量------------------------------------------------------------------------------- HINSTANCE hInst; HWND hWnd; MSG msg; char lpszClassName[]="窗口"; char *ShowText; //声明函数原型------------------------------------------------------------------------------- ATOM MyRegisterClass(HINSTANCE hInstance);//注册窗口类函数 BOOL Create(HINSTANCE, int); //程序实例初始化函数 int Run( ); //消息循环函数 LRESULT CALLBACK WndProc( //窗口函数 HWND, UINT, WPARAM, LPARAM); void OnLButtonDown( // WM_LBUTTONDOWN消息处理函数 HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); void OnPaint( // WM_PAINT消息处理函数 HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); void OnDestroy( // WM_DESTROY消息处理函数 HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); //////////上面的都是声明,下面是实现 //主函数----------------------------------------------------------------------------------------- int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MyRegisterClass(hInstance); //定义和注册窗口类 Create(hInstance, nCmdShow); //创建窗口 ShowWindow(hWnd, nCmdShow); //显示窗口 UpdateWindow(hWnd); //更新屏幕显示 return Run(); //消息循环 } //注册窗口类函数的实现------------------------------------------------------------- ATOM MyRegisterClass(HINSTANCE hInstance) { WNDCLASS wc; wc.style=0; wc.lpfnWndProc=WndProc; wc.cbClsExtra=0; wc.cbWndExtra=0; wc.hInstance=hInstance; wc.hIcon=LoadIcon(NULL,IDI_APPLICATION); wc.hCursor=LoadCursor(NULL,IDC_ARROW); wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); wc.lpszMenuName=NULL; wc.lpszClassName=lpszClassName; return RegisterClass(&wc); } //创建窗口函数的实现---------------------------------------------------------------------- BOOL Create(HINSTANCE hInstance, int nCmdShow) { hWnd=CreateWindow( lpszClassName, "Windows", WS_OVERLAPPEDWINDOW, 400,300,300,250, NULL, NULL, hInstance, NULL); return TRUE; } //消息循环函数的实现---------------------------------------------------------------------- int Run( ) { while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } //窗口函数的实现----------------------------------------------------------------------------- #define DECLARE_MESSAGE_MAP( ) \ struct MSGMAP_ENTRY _messageEntres[ ];\ #define BEGIN_MESSAGE_MAP( ) \ struct MSGMAP_ENTRY _messageEntres[ ] = \ { \ #define ON_WM(messageID,msgFuc) \ messageID,msgFuc, #define END_MESSAGE_MAP( ) \ };\ void On_LButtonDown(HWND, UINT, WPARAM, LPARAM); void On_Paint(HWND, UINT, WPARAM, LPARAM); void On_Destroy(HWND, UINT, WPARAM, LPARAM); struct MSGMAP_ENTRY { UINT nMessage; void (*pfn)(HWND, UINT, WPARAM, LPARAM ); }; //声明消息映射表 DECLARE_MESSAGE_MAP( ) BEGIN_MESSAGE_MAP( ) ON_WM(WM_LBUTTONDOWN,On_LButtonDown) ON_WM(WM_PAINT,On_Paint) ON_WM(WM_DESTROY,On_Destroy) END_MESSAGE_MAP( ) LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { int i; int n = sizeof ( _messageEntres)/sizeof(_messageEntres[0] ); for (i = 0; i < n; i ++) { if (message == _messageEntres [ i ] . nMessage ) ( *_messageEntres [ i ] . pfn )( hWnd, message, wParam, lParam); } return DefWindowProc(hWnd, message, wParam, lParam); } //鼠标左键单击消息处理函数的实现--------------------------------------------------- void On_LButtonDown(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { ShowText="Hello!"; InvalidateRect(hWnd,NULL,1); } //重绘窗口用户去消息处理函数的实现------------------------------------------------ void On_Paint(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { PAINTSTRUCT ps; HDC hdc; hdc = BeginPaint(hWnd, &ps); TextOut(hdc,50,50,ShowText,6); EndPaint(hWnd, &ps); } //销毁窗口消息处理函数的实现---------------------------------------------------------- void On_Destroy(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { PostQuitMessage(0); }
上面这些代码,看不懂也没什么关系,只要知道 做一个简单的窗口,我们需要写的东西就只是红色的部分。 这就是MFC进行封装的原理。
ps:上面的代码在编辑时有红色的字,但发表时红色的字段依旧是黑色,只是被html标签:"<span></span>"包围起来了。所以这边指的红色的字就是被那html标签包围的文字。
发表评论
-
连连看全局消除算法
2012-03-08 01:48 4387好久没写技术博客了。I ... -
object-c笔记一
2011-07-22 11:03 888(本笔记只是简单的记录,只给自己看) 接口的定义: ... -
VC2010中C++的右值引用新特性
2011-05-27 13:37 1509// RightValue.cpp : Defines ... -
linux下用命令编译/调试C++程序
2011-04-01 14:17 3035先安装gcc : sudo apt-get insta ... -
对Windows程序中设备上下文DC(device context)的理解(转)
2010-11-08 00:58 1647对Windows程序中设备上 ... -
MFC学习笔记(九)
2010-10-30 01:47 1381前面已经讲了够多的基础性的东西了,还有一些,但我想还是之后遇到 ... -
MFC学习笔记(八)
2010-10-30 00:55 1045MFC把早期的窗口类的功能分成三个部分:数据存储、管理部分,数 ... -
MFC学习笔记(七)
2010-10-28 01:29 968创建一个普通的Win32 Application,加上一个.c ... -
MFC学习笔记(六)
2010-10-28 01:16 1106先来了解几个类 1、CObject类 有相当一部分类的基 ... -
MFC学习笔记(五)
2010-10-27 01:55 1498早期的MFC应用程序框架结构由两个对象组成:应用程序类CWin ... -
MFC学习笔记(三)
2010-10-26 14:54 1173这一次修改事件的处理函数,当鼠标左键按下时,可在窗口的用户区显 ... -
MFC学习笔记(二)
2010-10-26 14:31 1010上一篇写的是一个单窗口的程序,这一次写一个多窗口的程序,第一个 ... -
MFC学习笔记(一)
2010-10-26 14:21 1604之前也学过一点MFC的知识,但因很久没去碰就都忘 得差不多了。 ... -
高质量C++/C编程学习笔记(七)----- 其它
2010-10-24 10:29 7991、继承不要随便使用, ... -
高质量C++/C编程学习笔记(六)----- 构造 析构 赋值函数
2010-10-24 10:15 8351、当创建一个类时,C++ ... -
高质量C++/C编程学习笔记(五)----- 基础函数的高级特性
2010-10-24 02:13 11241、重载: 只能靠参数而不能靠返回值类型的不同来区分重载函 ... -
高质量C++/C编程学习笔记(四)----- 内存管理(2)
2010-10-22 00:46 11335、用指针参数传递内存 ... -
高质量C++/C编程学习笔记(三)----- 内存管理(1)
2010-10-22 00:17 11811、 三种内存分配方式 ... -
高质量C++/C编程学习笔记(二)----- 基础
2010-10-21 23:10 9431、在函数体的“入口处” ,用断言对参数的有效性进行检查。断言 ... -
高质量C++/C编程学习笔记(一)----- 入门
2010-10-21 01:05 1278学了这么久的C/C++,在 ...
相关推荐
MFC学习笔记(onenote格式),一个朋友参加MFC培训,其教师在讲课过程中做的学习日记。图文并茂,是初学者很好的学习资料。
MFC本身也是基于Windows API构建的,因此理解Windows API对于深入学习MFC至关重要。 ### 内存管理 C++中的内存管理是一个关键且复杂的话题。`new`和`delete`是C++中用于动态分配和释放内存的关键字。`new`操作符...
**MFC 学习笔记** MFC(Microsoft Foundation Classes)是微软开发的一种C++类库,用于构建Windows应用程序。它提供了面向对象的编程接口,使得开发者可以更容易地使用Windows API。MFC的主要目标是简化Windows应用...
MFC 菜单操作学习笔记 本文是关于 MFC 菜单操作学习笔记 的资源,旨在帮助开发者学习和掌握 MFC 菜单操作的技术。下面是对该资源的详细解释和知识点总结。 一、创建菜单 MFC 菜单操作学习笔记 中提供了两种创建...
《MFC学习笔记:腾讯游戏连连看外挂制作(一)》 在本文中,我们将深入探讨如何使用Microsoft Foundation Classes (MFC) 来开发腾讯游戏连连看的外挂程序。MFC是微软提供的一套C++库,用于简化Windows应用程序的开发...
在C++编程中,MFC(Microsoft ...以上是C++和MFC学习笔记中涉及的关键知识点,涵盖了窗口、绘图、异常处理、消息循环、对话框以及资源管理等多个方面。理解并熟练运用这些概念对于深入掌握C++和MFC编程至关重要。
本篇笔记主要涵盖了MFC中的一些基本功能和常用函数,适合初学者入门学习。 首先,我们来看看如何在MFC中使用消息框。`MessageBeep((WORD)-1)`函数可以发出PC的提示音,提醒用户有事件发生。而`MessageBox`函数则是...
### 深入浅出MFC学习笔记:关键知识点解析 #### 一、Windows消息机制与回调函数 在深入探讨MFC之前,我们先来理解Windows操作系统中的消息机制及其核心组成部分——回调函数。 ##### 1.1 Windows消息机制概述 ...
本人从零开始学C++/MFC的时候,积累和整理的学习笔记,其中有大部分常见问题和处理办法,看过很过帖子,也查过很多资料,最终把他们记录下来。 Demo内容: ★ ::OnTimer OnTimer()函数用于实现定时控制功能,定时...
在本篇MFC学习笔记中,我们将深入探讨如何使用MFC AppWizard创建不同类型的项目,以及这些项目中的关键类和文件。 首先,我们来看MFC AppWizard如何生成应用程序。AppWizard是MFC提供的一个向导工具,可以根据选择...
【MFC学习笔记1】 MFC(Microsoft Foundation Classes)是微软提供的一套C++库,用于简化Windows应用程序的开发。本笔记将重点介绍基于对话框的MFC应用程序开发。 7.16 基于对话框编程 对话框在Windows程序中扮演...
《Visual C++ MFC 学习笔记》 学习Visual C++ MFC,首先需要具备扎实的C/C++基础知识。这是入门VC开发的基石,因为MFC(Microsoft Foundation Classes)是基于C++的一个类库,对C++的掌握程度直接影响到理解和使用...
**MFC学习笔记——销售系统案例详解** MFC(Microsoft Foundation Classes)是微软提供的一套C++类库,用于构建Windows应用程序。它基于面向对象的编程思想,为开发者提供了丰富的功能,简化了Win32 API的使用。在...
在学习MFC时,你需要了解以下几个核心概念和知识点: 1. **基本概念**:MFC是由一系列C++类组成的库,这些类封装了Windows API的功能。它提供了窗口、控件、文档/视图架构、消息映射、数据库访问等组件,帮助开发者...
《深入探索MFC与Windows32编程》 MFC(Microsoft Foundation Classes)是微软提供的一套C++类库,用于简化Windows应用程序开发。...通过深入学习这两方面的知识,开发者可以构建出功能丰富、性能优异的应用程序。
《Visual C++/MFC学习笔记》是一份深入探讨C++和Microsoft Foundation Class (MFC)库的文档,旨在帮助读者掌握使用Visual C++开发Windows应用程序的技能。这份笔记主要分为六个章节,覆盖了从入门到高级的多个主题。...
深入浅出MFC读书笔记2是对MFC框架的进一步学习和理解,主要涵盖了MFC的基础概念、类库结构以及程序构建的关键要素。MFC(Microsoft Foundation Classes)是微软为Windows平台开发的应用程序提供的一种类库,它基于...
MFC(Microsoft Foundation...总之,MFC学习代码和笔记对于希望深入理解和掌握Windows桌面应用程序开发的程序员来说,是一份不可多得的学习材料。通过学习和实践,可以提升编程技能,更好地驾驭MFC这一强大的开发工具。