Win32创建一个简单的窗口

Win32创建一个简单的窗口

环境:Win10专业版   VS2017  桌面应用程序


在该环境下创建一个Hello World!的桌面应用程序:

直接贴上代码:里面包含有代码的具体解释,无论多么大,多么复杂的窗口软件,都是在这个基础上面增加的。

#include "stdafx.h"

#pragma comment(lib, "winmm")   //使用了该函数PlaySound,在winmm.lib


LRESULT WINAPI WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);  //声明窗口过程函数

int APIENTRY WinMain(HINSTANCE hInstance,
	                 HINSTANCE hPrevInstance,
	                 LPSTR     lpCmdline,
	                 int       nCmdShow)
{
	//声明一个窗口类
	WNDCLASS wc = { 0 };
	wc.hbrBackground = (HBRUSH)GetStockObject(COLOR_WINDOW + 1);   //该窗口类的背景
	wc.hCursor = LoadCursor(NULL, IDC_ARROW);                      //光标
	wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);                    //图标
	wc.hInstance = hInstance;                                      //实例化的句柄
	wc.lpfnWndProc = WndProc;                                      //窗口过程函数
	wc.lpszClassName = "HelloWin";                                 //窗口类名
	wc.lpszMenuName = NULL;                                        //菜单栏的名称
	wc.style = CS_HREDRAW | CS_VREDRAW;                            //窗口类的风格设置




	
	//注册窗口类
	if (!RegisterClass(&wc))         //注册窗口类
	{
		MessageBox(NULL,             //注册失败就弹出消息警告框
			TEXT("注册窗口类失败"),
			TEXT("HelloWin"),
			MB_ICONEXCLAMATION
			);

		return 0;
	}

	//创建窗口类
	HWND hWnd = CreateWindow("HelloWin",            //该窗口使用的窗口类的名称
							 "FirstWindows",        //窗口标题名
							 WS_OVERLAPPEDWINDOW,   //窗口风格
							 CW_USEDEFAULT,         //窗口左上角的横坐标(这里使用默认值)
							 CW_USEDEFAULT,         //窗口左上角的纵坐标(这里使用默认值)
							 CW_USEDEFAULT,			//窗口的宽度
							 CW_USEDEFAULT,			//窗口的高度
							 NULL,					//父窗口的句柄
							 NULL,                  //菜单的句柄
							 hInstance,				//窗口实例化的句柄
							 NULL	  //将WM_CREATE消息中通过的lParam传递给窗口的回调函数
							 );						


	//显示窗口
	ShowWindow(hWnd, SW_SHOW);

	//刷新窗口
	UpdateWindow(hWnd);

	//消息循环处理
	MSG msg;
	while (GetMessage(&msg, NULL, 0, 0))  //获取消息
	{
		TranslateMessage(&msg);    //将虚拟键消息转换为字符消息。字符消息被发送到调用线程的消息队列,在下一次线程调用GetMessage或PeekMessage函数时读取
		DispatchMessage(&msg);     //将消息分派给窗口过程。它通常用于分派由GetMessage函数检索的消息。
	}

	return msg.wParam;
}


LRESULT WINAPI WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)   //窗口过程函数的定义
{
	HDC hdc;          
	PAINTSTRUCT ps;
	RECT rect;

	switch (uMsg) 
	{
	case WM_CREATE:           //创建时刻的消息
		PlaySound(TEXT("Hellowin.wav"), NULL, SND_FILENAME | SND_ASYNC);
		break;
	case WM_PAINT:            //描绘时刻的消息
		hdc = BeginPaint(hWnd, &ps);
		GetClientRect(hWnd, &rect);
		DrawText(hdc, TEXT("Hellow    愿意百年挽朝夕,    2017.11.12"), -1, &rect, DT_SINGLELINE | DT_VCENTER | DT_CENTER);
		EndPaint(hWnd, &ps);
		break;
	case WM_DESTROY:          //销毁窗口时刻的消息         
		PostQuitMessage(0);    //销毁的动作
		break;
	default:
		return DefWindowProc(hWnd, uMsg, wParam, lParam);    //当不是以上这些消息的时候,就会默认调用该函数处理
	}

	return 0;

}

再来一个运行成功的截图:


最后附上完整代码的项目:

链接:http://pan.baidu.com/s/1hs0908G 密码:74ne

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

偕臧x

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值