学MFC之前必须会的金典创建窗口程序的过程代码

#include <windows.h>
// 窗口过程函数
LRESULT CALLBACK MyWndProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	switch (uMsg)
	{
	case WM_DESTROY:
		PostQuitMessage (0);
		return 0;
	case WM_PAINT:
		PAINTSTRUCT ps;
		HDC hDC = BeginPaint (hwnd, &ps);
        Ellipse (hDC, 100, 100, 400, 400);
		EndPaint (hwnd, &ps);
		break;
	}
    return DefWindowProc (hwnd, uMsg, wParam, lParam);
}
// 设置并注册窗口类
ATOM InitApplication (HINSTANCE hInstance)
{
	WNDCLASSEX wcs;
	wcs.cbSize = sizeof (wcs);
	wcs.cbWndExtra = 0;
	wcs.cbClsExtra = 0;
	wcs.hbrBackground = (HBRUSH)GetStockObject (WHITE_BRUSH);
	wcs.hCursor = LoadCursor (hInstance , IDC_CROSS);
	wcs.hIcon = LoadIcon (hInstance, IDI_INFORMATION);
	wcs.hIconSm = LoadIcon (hInstance, IDI_QUESTION);
	wcs.hInstance = hInstance;
	wcs.lpfnWndProc = MyWndProc;
	wcs.style = CS_VREDRAW | CS_HREDRAW;
	wcs.lpszMenuName = NULL;
	wcs.lpszClassName = "WinHello";
	return RegisterClassEx (&wcs);
}
// 创建、显示和更新窗口
BOOL InitInstance (HINSTANCE hInstance, int nCmdShow)
{
	HWND hMainWnd = CreateWindowEx ( 0,
		                             "WinHello",
									 "MyWinHello",
									 WS_OVERLAPPEDWINDOW,
									 CW_USEDEFAULT,
									 CW_USEDEFAULT,
									 CW_USEDEFAULT,
									 CW_USEDEFAULT,
									 NULL,
									 NULL,
									 hInstance,
									 NULL);
	if (! hMainWnd)
		return FALSE;
	ShowWindow (hMainWnd, nCmdShow);
	UpdateWindow (hMainWnd);
	return TRUE;
}
// 主函数: 消息循环是重点
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrecInstance, LPSTR lpCmdLine, int nShowCmd)
{
	if (! InitApplication (hInstance))
		return 0;
	if (! InitInstance (hInstance, nShowCmd))
		return 0;

	MSG msg;
	while (GetMessage (&msg, NULL, 0, 0))
	{
		TranslateMessage (&msg);
		DispatchMessage (&msg);
	}
	return msg.wParam;
}

学MFC之前必须会的金典创建窗口程序的过程代码

时间: 2024-08-27 22:12:22

学MFC之前必须会的金典创建窗口程序的过程代码的相关文章

C++创建窗口程序初步

(1)在主函数里面使用类似下面的语句: MainWindow w; w.show(); 这样创建的窗口只有在程序结束运行的时候才会消失. (2)写一个函数,在函数里面用(1)的代码创建窗口,这样,在函数调用完毕出栈的时候窗口就会释放消失. void f() { MainWindow w; w.show(); } 这样,运行的感觉就是窗口刚出现就消失,即一闪而过. (3) 如果在函数里面创建了一个窗口,但是我不希望它在函数调用结束的时候被释放消失,那么考虑到我在java编程随感里面写到的,在函数中

动态创建窗口,并重写窗口过程

在窗口过程中处理滚动条消息 WNDPROC pSubclassOldEditProc; INT iVScrollPos = 0, iVTextPos = 0; LRESULT winProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { //获取新设置的窗口属性,就是获取CNewEdit的指针,方便后面访问m_lOldProc这个成员 if (message == WM_VSCROLL) { //TRACE( _T("%d\n&

MFC应用程序创建窗口的过程 good

MFC应用程序中处理消息的顺序 1.AfxWndProc()      该函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWndProc 2.AfxCallWndProc()  该函数负责保存消息(保存的内容主要是消息标识符和消息参数)供应用程序以后使用,然后调用WindowProc()函数 3.WindowProc()      该函数负责发送消息到OnWndMsg()函数,如果未被处理,则调用DefWindowProc()函数 4.OnWndMsg()        该函

从零开始学Xamarin.Forms(二) 环境搭建、创建项目

一.环境搭建 Windows下环境搭建: 1.下载并安装jdk及android sdk: 2.下载Xamarin.VisualStudio,可以从官方下在线安装的,也可以下载3.0.54版本的离线安装包. 3.下载完毕运行安装程序,按照提示一步一步安装即可. Mac下环境搭建: 官方在线安装 二.创建Xamarin.Forms项目 1.新建项目,选择"Blank App(Xamarin.Forms Portable)" 创建完毕后,项目结构如下图: 2.更新程序集 由于默认的Xamar

【C语言探索之旅】 第三部分第二课:SDL开发游戏之创建窗口和画布

内容简介 1.第三部分第二课: SDL开发游戏之创建窗口和画布 2.第三部分第三课预告: SDL开发游戏之显示图像 第三部分第二课:SDL开发游戏之创建窗口和画布 在上一课中,我们对SDL这个开源库做了介绍,也带大家配置了SDL的开发环境.请大家按照上一课的步骤创建一个SDL工程,能够初步运行. 如果遇到问题,可以百度,Google相关平台SDL的配置.或者联系小编. 当然了,有些朋友可能会说开发C语言游戏还可以用GTK+这个库,但是个人认为GTK+没有SDL那么适合开发游戏,其创建图形界面的能

MFC程序执行过程剖析

一 MFC程序执行过程剖析 1)我们知道在WIN32API程序当中,程序的入口为WinMain函数,在这个函数当中我们完成注册窗口类,创建窗口,进入消息循环,最后由操作系统根据发送到程序窗口的消息调用程序的窗口函数.而在MFC程序当中我们不在能找到类似WinMain这样的程序入口,取而代之的是一系列派生类的声明和定义以及一个冲CWinApp类派生而来的类的全局对象.CWinApp类被称之为应用程序对象,在一个MFC程序当中只允许有一个应用程序对象.由于CWinApp的派生对象是全局的,因此这个对

MFC学习(七) 单文档程序

1 MFC单文档程序的主要类 (1)文档类(Document) 即应用程序处理的数据对象,文档一般从 MFC 中 CDocument 中派生.CDocument 类用于相应数据文件的读取以及存储 Cview 类所需要观察和处理的信息. (2)视类(View) 视相当于文档在应用程序中的观察窗口,它确定了用户对文档的观察方式和用户编辑文档的方式.对于图形来说视就好比我们进行绘图工作的画布,对图形的操作都是在视上进行的.另外,视类中有一个重要的成员函数 OnDraw() 函数.重载的 OnDraw(

MFC学习之程序执行过程梳理

*首先利用全局变量对象theApp启动应用程序.这是由于这个全局对象,基类CWinApp中this的指针才干指向这个对象.假设没有这个全局对象,程序在编译时不会出错,但在执行时就会出错. *调用全局应用程序对象的构造函数,从而就会先调用其基类CWinApp的构造函数.后者完毕应用程序的一些初始化工作,并将应用程序对象的指针保存起来. *进入WinMain函数.在AfxWinMain函数中能够获取子类(对Test程序来说就是CTestApp类)的指针,利用此指针调用虚函数:InitInstance

vc++如何创建窗口

创建一个mfc工程,AppWizard可以用来增加和选择一些特性 可以发现一共有五个类,每一个类都有一个基类,都是mfc基础类库中的类 例如将一个类拷贝一下,将CFrameWnd到msdn中查找一下,MSDN(Microsoft Developer Network)是早期微软在推广Win32 程序设计以及开发工具时,专门为开发人员所提供的一个服务,是使用微软技术开发软件或应用程序时必定会参访的地方,同时它也有提供订阅的服务 例如cwinapp 理解mfc脉络,每一种不同的窗口类 创建窗口:cre