`
lingyibin
  • 浏览: 196327 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

MFC学习笔记(三)

阅读更多

这一次修改事件的处理函数,当鼠标左键按下时,可在窗口的用户区显示一个字符串“凌云壮志”。

另一方面,用函数将程序模块化。

 

#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(HWND hWnd, UINT message, 
				WPARAM wParam, LPARAM lParam);
void OnPaint(HWND hWnd, UINT message, 
				WPARAM wParam, LPARAM lParam);
void OnDestroy(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,180,160,
						NULL,
						NULL,
						hInstance,
						NULL);
   return TRUE;
}

//消息循环函数的实现-------------------------------------
int Run( )
{
	while (GetMessage(&msg, NULL, 0, 0)) 
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	return msg.wParam;
}

//窗口函数的实现------------------------------------------
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, 
WPARAM wParam, LPARAM lParam)
{
	switch (message) 
	{
	case WM_LBUTTONDOWN:	OnLButtonDown(hWnd, message, wParam, lParam);	
		break;
	case WM_PAINT:			OnPaint(hWnd, message,wParam, lParam);
		break;
	case WM_DESTROY:		OnDestroy(hWnd, message, wParam, lParam);
		break;
	default:
		return DefWindowProc(hWnd, message, wParam, lParam);
   }
   return 0;
}

void OnLButtonDown(HWND hWnd, UINT message, 
				WPARAM wParam, LPARAM lParam)
{
	ShowText="凌云壮志";
	InvalidateRect(hWnd,NULL,true);
}

void OnPaint(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 OnDestroy(HWND hWnd, UINT message, 
				WPARAM wParam, LPARAM lParam)
{
	PostQuitMessage(0);
}

 InvalidateRect 函数,在MSDN里面的解释:The InvalidateRect function adds a rectangle to the specified window's update region. The update region represents the portion of the window's client area that must be redrawn.

 

 主要使某个矩形框内的区域成为无效,用来产生一个WM_PAINT的消息。

它的原型:

 

BOOL InvalidateRect(
  HWND hWnd,           // handle to window 窗口句柄,指出作用于哪个窗口
  CONST RECT* lpRect,  // rectangle coordinates 一个矩形区域
  BOOL bErase          // erase state,下面有官方的解释
);

BOOL bErase : Specifies whether the background within the update region is to be erased when the update region is processed. If this parameter is TRUE, the background is erased when the BeginPaint function is called. If this parameter is FALSE, the background remains unchanged.  这里面设置成true。

 

RECT结构体的原型如下:

 

typedef struct _RECT { 
  LONG left; 
  LONG top; 
  LONG right; 
  LONG bottom; 
} RECT, *PRECT; 

 

至于BegainPaint()和EndPaint()等的函数看我的另一篇日志:

http://lingyibin.iteye.com/admin/blogs/786172

分享到:
评论

相关推荐

    MFC学习笔记总结(onenote格式)

    MFC学习笔记(onenote格式),一个朋友参加MFC培训,其教师在讲课过程中做的学习日记。图文并茂,是初学者很好的学习资料。

    MFC学习笔记

    **MFC 学习笔记** MFC(Microsoft Foundation Classes)是微软开发的一种C++类库,用于构建Windows应用程序。它提供了面向对象的编程接口,使得开发者可以更容易地使用Windows API。MFC的主要目标是简化Windows应用...

    MFC笔记 MFC笔记 MFC笔记 MFC笔记 MFC笔记 MFC笔记

    MFC本身也是基于Windows API构建的,因此理解Windows API对于深入学习MFC至关重要。 ### 内存管理 C++中的内存管理是一个关键且复杂的话题。`new`和`delete`是C++中用于动态分配和释放内存的关键字。`new`操作符...

    MFC菜单操作学习笔记

    MFC 菜单操作学习笔记 本文是关于 MFC 菜单操作学习笔记 的资源,旨在帮助开发者学习和掌握 MFC 菜单操作的技术。下面是对该资源的详细解释和知识点总结。 一、创建菜单 MFC 菜单操作学习笔记 中提供了两种创建...

    MFC学习笔记\MFC学习笔记整理:002_腾讯游戏连连看外挂制作(一)

    《MFC学习笔记:腾讯游戏连连看外挂制作(一)》 在本文中,我们将深入探讨如何使用Microsoft Foundation Classes (MFC) 来开发腾讯游戏连连看的外挂程序。MFC是微软提供的一套C++库,用于简化Windows应用程序的开发...

    C++、MFC学习笔记

    在C++编程中,MFC(Microsoft ...以上是C++和MFC学习笔记中涉及的关键知识点,涵盖了窗口、绘图、异常处理、消息循环、对话框以及资源管理等多个方面。理解并熟练运用这些概念对于深入掌握C++和MFC编程至关重要。

    MFC学习笔记(个人总结)

    本篇笔记主要涵盖了MFC中的一些基本功能和常用函数,适合初学者入门学习。 首先,我们来看看如何在MFC中使用消息框。`MessageBeep((WORD)-1)`函数可以发出PC的提示音,提醒用户有事件发生。而`MessageBox`函数则是...

    深入浅出MFC学习笔记

    ### 深入浅出MFC学习笔记:关键知识点解析 #### 一、Windows消息机制与回调函数 在深入探讨MFC之前,我们先来理解Windows操作系统中的消息机制及其核心组成部分——回调函数。 ##### 1.1 Windows消息机制概述 ...

    MFC学习笔记2.0.pdf - MFC学习过程中的问题和疑难点总结

    本人从零开始学C++/MFC的时候,积累和整理的学习笔记,其中有大部分常见问题和处理办法,看过很过帖子,也查过很多资料,最终把他们记录下来。 Demo内容: ★ ::OnTimer OnTimer()函数用于实现定时控制功能,定时...

    MFC学习笔记.docx

    在本篇MFC学习笔记中,我们将深入探讨如何使用MFC AppWizard创建不同类型的项目,以及这些项目中的关键类和文件。 首先,我们来看MFC AppWizard如何生成应用程序。AppWizard是MFC提供的一个向导工具,可以根据选择...

    MFC学习笔记1

    【MFC学习笔记1】 MFC(Microsoft Foundation Classes)是微软提供的一套C++库,用于简化Windows应用程序的开发。本笔记将重点介绍基于对话框的MFC应用程序开发。 7.16 基于对话框编程 对话框在Windows程序中扮演...

    Visual_C++MFC学习笔记0

    《Visual C++ MFC 学习笔记》 学习Visual C++ MFC,首先需要具备扎实的C/C++基础知识。这是入门VC开发的基石,因为MFC(Microsoft Foundation Classes)是基于C++的一个类库,对C++的掌握程度直接影响到理解和使用...

    MFC学习笔记--案例--销售系统

    **MFC学习笔记——销售系统案例详解** MFC(Microsoft Foundation Classes)是微软提供的一套C++类库,用于构建Windows应用程序。它基于面向对象的编程思想,为开发者提供了丰富的功能,简化了Win32 API的使用。在...

    达内MFC课程完整笔记

    在学习MFC时,你需要了解以下几个核心概念和知识点: 1. **基本概念**:MFC是由一系列C++类组成的库,这些类封装了Windows API的功能。它提供了窗口、控件、文档/视图架构、消息映射、数据库访问等组件,帮助开发者...

    MFC学习笔记加windows32

    《深入探索MFC与Windows32编程》 MFC(Microsoft Foundation Classes)是微软提供的一套C++类库,用于简化Windows应用程序开发。...通过深入学习这两方面的知识,开发者可以构建出功能丰富、性能优异的应用程序。

    Visual C++/MFC学习笔记.doc

    《Visual C++/MFC学习笔记》是一份深入探讨C++和Microsoft Foundation Class (MFC)库的文档,旨在帮助读者掌握使用Visual C++开发Windows应用程序的技能。这份笔记主要分为六个章节,覆盖了从入门到高级的多个主题。...

    深入浅出MFC读书笔记2

    深入浅出MFC读书笔记2是对MFC框架的进一步学习和理解,主要涵盖了MFC的基础概念、类库结构以及程序构建的关键要素。MFC(Microsoft Foundation Classes)是微软为Windows平台开发的应用程序提供的一种类库,它基于...

    MFC学习代码及笔记

    MFC(Microsoft Foundation...总之,MFC学习代码和笔记对于希望深入理解和掌握Windows桌面应用程序开发的程序员来说,是一份不可多得的学习材料。通过学习和实践,可以提升编程技能,更好地驾驭MFC这一强大的开发工具。

Global site tag (gtag.js) - Google Analytics