Windows API程序设计入门作业

一、目的

  1. 了解 windows操作系统应用程序开发的基本概念,win32 API函数、消息与事件驱动;
  2. 掌握WinMain函数的基本框架,窗口定义、窗口创建、消息循环及窗口过程函数;

二、创建窗口

  1. 打开Visual Studio 2015
  2. “文件” —> “新建” —> “项目” —> “Win32项目”
    在这里插入图片描述在这里插入图片描述
  3. “头文件” —> “添加” —> “新建项” —> “C++文件”;
    在这里插入图片描述
    在这里插入图片描述
    4.代码如下
#include <windows.h>
#include <stdio.h>

LRESULT CALLBACK WinSunProc(
	HWND hwnd,      // 窗口句柄
	UINT uMsg,      // 消息标识符
	WPARAM wParam,  // 第一个消息参数
	LPARAM lParam   // 第二个消息参数
	);

int WINAPI WinMain(
	HINSTANCE hInstance,      // 当前实例句柄
	HINSTANCE hPrevInstance,  // 上一个实例句柄
	LPSTR lpCmdLine,          // 命令行
	int nCmdShow              // 显示状态
	)
{	//设计一个窗口类
	WNDCLASS wndcls;
	wndcls.cbClsExtra = 0;
	wndcls.cbWndExtra = 0;
	wndcls.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
	wndcls.hCursor = LoadCursor(NULL, IDC_CROSS);
	wndcls.hIcon = LoadIcon(NULL, IDI_ERROR);
	wndcls.hInstance = hInstance;
	wndcls.lpfnWndProc = WinSunProc;
	wndcls.lpszClassName = "yolo";
	wndcls.lpszMenuName = NULL;
	wndcls.style = CS_HREDRAW | CS_VREDRAW;
	RegisterClass(&wndcls);

	//创建窗口
	HWND hwnd;
	hwnd = CreateWindow("yolo", "yolo", WS_OVERLAPPEDWINDOW,
		0, 0, 600, 400, NULL, NULL, hInstance, NULL);

	//显示及刷新窗口
	ShowWindow(hwnd, SW_SHOWNORMAL);
	UpdateWindow(hwnd);

	//定义消息结构体,开始消息循环
	MSG msg;
	while (GetMessage(&msg, NULL, 0, 0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	return 0;
}

//编写窗口过程函数
LRESULT CALLBACK WinSunProc(
	HWND hwnd,     
	UINT uMsg,      
	WPARAM wParam,  
	LPARAM lParam   
	)
{
	switch (uMsg)
	{
	case WM_CHAR:
		char szChar[20];
		sprintf(szChar, "char is %d", wParam);
		MessageBox(hwnd, szChar, "weixin", 0);
		break;
	case WM_LBUTTONDOWN:
		MessageBox(hwnd, "鼠标左键点击", "鼠标左键点击", 0);
		HDC hdc;
		hdc = GetDC(hwnd);
		TextOut(hdc, 0, 50, "you only live once", strlen("you only live once"));
		ReleaseDC(hwnd, hdc);
		break;
	case WM_PAINT:
		HDC hDC;
		PAINTSTRUCT ps;
		hDC = BeginPaint(hwnd, &ps);
		TextOut(hDC, 0, 0, "第一个win32", strlen("第一个win32"));
		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;
}

三、效果如下

  1. 运行

在这里插入图片描述
在这里插入图片描述

  1. 退出
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值