`

最简单的Windows程序源代码

    博客分类:
  • VC
阅读更多

#include <Windows.h>
#include <stdio.h>

LRESULT CALLBACK WinProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
BOOL RegisterWndClass(HINSTANCE hIntance, const char* szClass);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow)
{
	HWND hwnd = NULL;
	static char szAppName[] = "WinTest";

	if (!RegisterWndClass(hInstance, szAppName))
	{
        MessageBox(NULL, "注册窗口失败!", "创建窗口", MB_OK);
		return 0;
	}


	hwnd = CreateWindow(szAppName, "测试窗口", WS_OVERLAPPEDWINDOW, 0, 0, CW_USEDEFAULT, CW_USEDEFAULT, NULL,
		NULL, hInstance, NULL);

	if (NULL == hwnd)
	{
		MessageBox(NULL, "创建窗口失败", "创建窗口", MB_OK);
		return 0;
	}

	ShowWindow(hwnd, SW_SHOWNORMAL);
	UpdateWindow(hwnd);

	MSG msg = {0};
	while (GetMessage(&msg, NULL, 0, 0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}

	return int(msg.wParam);
}

BOOL RegisterWndClass(HINSTANCE hIntance, const char* szClass)
{
	WNDCLASS wndClass;

	wndClass.cbClsExtra		= 0;
	wndClass.cbWndExtra		= 0;
	wndClass.hbrBackground	= (HBRUSH)GetStockObject(BLACK_BRUSH);
	wndClass.hCursor		= LoadCursor(NULL, IDC_CROSS);
	wndClass.hIcon			= LoadIcon(NULL, IDI_ERROR);
	wndClass.hInstance		= hIntance;
	wndClass.lpfnWndProc	= WinProc;
	wndClass.lpszClassName	= szClass;
	wndClass.lpszMenuName	= NULL;
	wndClass.style			= CS_HREDRAW | CS_VREDRAW;

	return ::RegisterClass(&wndClass);
}

LRESULT CALLBACK WinProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	switch (uMsg)
	{
	case WM_CHAR:
		{
			char szChar[MAX_PATH] = {0};
			sprintf(szChar, "您刚刚输入的字符ASSIC: %d", wParam);
			MessageBox(hwnd, szChar, "输入字符", MB_OK);
		}
		
		break;

	case WM_LBUTTONDOWN:
		{
			MessageBox(hwnd, "您按下了左键", "鼠标点击", MB_OK);
			HDC hdc = GetDC(hwnd);
			char *szText = "鼠标点击事件记录";
			TextOut(hdc, 0, 50, szText, strlen(szText));
			ReleaseDC(hwnd, hdc);
		}		
		
		break;

	case WM_PAINT:
		{
				PAINTSTRUCT ps;
			HDC hdc = BeginPaint(hwnd, &ps);
			char* szText = "我们的第一个Windows窗口";
			TextOut(hdc, 0, 0, szText, strlen(szText));
			EndPaint(hwnd, &ps);
		}
		break;

	case WM_CLOSE:
		if (IDYES == MessageBox(hwnd, "退出程序?", "退出", MB_YESNO))
		{
			DestroyWindow(hwnd);
		}

		break;

	case WM_DESTROY:
		PostQuitMessage(0);
		break;

	default:
		return DefWindowProc(hwnd, uMsg, wParam, lParam);
	}

	return 0;
}
 
分享到:
评论

相关推荐

    MFC Windows程序设计(第2版修订版)--源代码

     《mfc windows程序设计(第2版)》是对其极为经典的第1版的全面更新,本书不仅扩展了已被认为是权威的关于microsoft用于windows api的功能强大的c++类库的阐述,还新增了有关com、ole和activex的内容。本书的作者...

    windows 程序设计第五版源代码光盘

    有经验的Windows程序员都知道,如果在工作中遇到了技术难题。最好的解决办法就是去查Petzold的书。是的,《Windows程序设计》内容博大精深。阐述透彻流畅,是毋庸置疑的Windows程序...本文件为该书的配套光盘源代码。

    MFC Windows程序设计(第二版) 源代码 任哲编著 [评价可免费]

     1.3 用函数封装Windows程序  1.4 窗口函数的另一种结构  小结  练习题  思考题 第2章 Windows应用程序的类封装  2.1 应用程序主函数的C++类封装  2.2 派生类的应用  2.3 窗口函数的封装--消息映射  小结 ...

    Windows驱动开发技术详解(含源代码)

    本章向读者呈现两个最简单的Windows驱动程序,一个是NT式的驱动程序,另一个是WDM式的驱动程序。这两个驱动程序没有操作具体的硬件设备,只是在系统里创建了虚拟设备。在随后的章节中,它们会作为基本驱动程序框架,...

    Windows环境下32位汇编语言程序设计_随书光盘

    如果需要对源代码进行修改,不必关闭“命令提示符”窗口, 只要切换到编辑器窗口,在修改 *.asm 文件后重复进行第 IV 和 第 V 步骤即可。 # 特别注意:将光盘中的代码拷贝到硬盘后,必须将文件的只读属性去除! ...

    C++源代码单词扫描程序(词法分析)

    (1)C++源代码扫描程序识别C++记号。 C++语言包含了几种类型的记号:标识符,关键字,数(包括整数、浮点数),字符串、注释、特殊符号(分界符)和运算符号等。 (2)打开一个C++源文件,打印出所有以上的记号。 ...

    Windows 程序设计(第5版)(上、下册)--详细书签版

    2.2.4 维护单一源代码 2.3 宽字符和windows 2.3.1 windows 头文件类型 2.3.z windows 函数调用 2.3.3 windows的字符串函数 2.3.4 在 windows中使用 printf 2.3.5 格式化消息框 2.3.6 本书与...

    Python语言程序设计源代码.zip

    智慧化简单来说是一个以机器替换人力的过程,而机器的“灵魂”是程序。Python已经成为公认的驱动大数据智能应用的主流编程语言。Python程序设计的书籍已经琳琅满目,每一本书都凝聚了作者对Python的理解和对程序设计...

    JAVA上百实例源码以及开源项目源代码

    2个目标文件 摘要:Java源码,文件操作,TCP,服务器 Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。...

    Android高级编程--源代码

    该资料是《Android高级编程》的源代码 对应的书籍资料见: Android高级编程 基本信息 原书名: Professional Android Application Development 原出版社: Wrox 作者: (英)Reto Meier 译者: 王鹏杰 霍建同 出版社...

    windows 程序设计中文版

    2.1.5 Unicode的解救方案 2.2 宽字符和c语言 2.2.1 char数据类型 2.2.2 更宽的字符 2.2.3 宽字符库函数 2.2.4 维护一个源代码文件 2.3 宽字符和Windows 2.3.1 Windows头文件的类型 2.3.2 Windows函数调用 2.3.3 ...

    Windows驱动开发技术详解(pdf书+源代码).part1

    第1章 从两个最简单的驱动谈起 1.1 DDK的安装 1.2 第一个驱动程序HelloDDK的代码分析 1.2.1 HelloDDK的头文件 1.2.2 HelloDDK的入口函数 1.2.3 创建设备例程 1.2.4 卸载驱动例程 1.2.5 默认派遣例程 1.3 ...

    最简单PC启动源程序试验

    学习PC机启动原理的好资料,用 nasm 汇编编写,源代码短得爆,容易理解。全部试验在windows下完成,无需linux。

    Windows经典小游戏-扫雷,完整程序包(python版)

    Python扫雷游戏源代码、源程序共有两个文件及一个资源包:main.py及mineblock.py

    Visual C++ 2010入门经典(第5版)--源代码及课后练习答案

    该资料是《Visual C++ 2010入门经典(第5版)》的源代码及课后练习答案 对应的书籍资料见: Visual C++ 2010入门经典(第5版) 基本信息 原书名: Ivor Horton's Beginning Visual C++ 2010 原出版社: Wrox 作者: ...

    Visual C# 2010程序设计教程(教程PPT+源代码)

    基本信息 书名:高等学校计算机应用规划教材:Visual C# 2010程序设计...第10章 Windows窗体应用程序开发 第11章 C#数据库编程与ADO.NET 第12章 Web应用程序开发及ASP.NET 第13章 文件处理 第14章 语言集成查询-LINQ

    Windows驱动开发技术详解(pdf书+源代码).part2

    第1章 从两个最简单的驱动谈起 1.1 DDK的安装 1.2 第一个驱动程序HelloDDK的代码分析 1.2.1 HelloDDK的头文件 1.2.2 HelloDDK的入口函数 1.2.3 创建设备例程 1.2.4 卸载驱动例程 1.2.5 默认派遣例程 1.3 ...

    UPX压缩文件最新版图形界面源程序(Delphi 11)

    EXE文件和DLL文件压缩工具UPX图形界面源程序...7. 程序包含全部源代码,直接可以编译、修改。 8. 可以将EXE或者DLL程序压缩到原来大小的最低小于30%; 9. 支持所有windows平台,包括windows 11; 10.学习delphi的Demo。

    Windows 系统错误代码简单分析

    Microsoft Windows 系统错误代码简单分析:  0000 操作已成功完成。  0001 错误的函数。  0002 系统找不到指定的文件。  0003 系统找不到指定的路径。  0004 系统无法打开文件。  0005 拒绝访问。...

Global site tag (gtag.js) - Google Analytics