创建C++的 Win32 应用程序

创建新的 Win32 项目

  1. “文件”菜单上,单击“新建”,然后单击“项目...”

  2. “项目类型”窗格中,选择“Visual C++”节点中的“Win32”,然后在“模板”窗格中选择“Win32 项目”

    键入项目的名称,如 win32app。您可以接受默认位置、键入一个位置或者导航到要保存项目的目录。

  3. “Win32 应用程序向导”中,选择“下一步”

  4. “Win32 应用程序向导”中,在“应用程序类型”下选择“Windows 应用程序”。在“附加选项”下选择“空项目”。原样保留剩余的选项。单击“完成”创建项目。

  5. “项目”菜单中选择“添加新项...”,将 C++ 文件添加到项目中。在“添加新项”对话框中选择“C++ 文件(.cpp)”。为文件键入一个名称,如WinMain.cpp,并单击“添加”

示例

说明

完成所有步骤之后,代码应该与下面的内容类似: 若要生成应用程序,请从“生成”菜单选择“生成解决方案”。如果应用程序编译时没有任何错误,您可以通过按 F5 来运行该应用程序。

代码

#include <windows.h>
#include "resource.h" //引入资源文件
#include "stdio.h"

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
	//设计窗口类
	WNDCLASS wndclass;
	wndclass.cbClsExtra = 0;
	wndclass.cbWndExtra = 0;
	wndclass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);//设置窗口背景色为黑色
	wndclass.hCursor =LoadCursor(NULL, IDC_ARROW);
	wndclass.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1));//IDI_ICON1是ICON资源的ID号
	wndclass.hInstance = hInstance;
	wndclass.lpfnWndProc = WndProc;
	wndclass.lpszClassName = L"Hello C++!";
	wndclass.lpszMenuName = NULL;
	wndclass.style = CS_HREDRAW | CS_VREDRAW;
	//注册窗口类
	if(!RegisterClass(&wndclass))
	{
		MessageBox(0, L"注册窗口类失败,请重新注册!", L"提示", MB_OK | MB_ICONERROR);
		return -1;
	}
	//创建窗口
	HWND hWnd;
	hWnd = CreateWindow(wndclass.lpszClassName, L"Hello C++!",
		WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT, CW_USEDEFAULT,
		CW_USEDEFAULT, CW_USEDEFAULT,
		0, 0, hInstance, NULL);
	//显示窗口
	ShowWindow(hWnd, nShowCmd);
	//更新窗口
	UpdateWindow(hWnd);
	//消息循环
	MSG * msg;
	msg = new MSG();
	while(GetMessage(msg, NULL, 0, 0))
	{
		TranslateMessage(msg);//消息转换
		DispatchMessage(msg);//消息投递
	}
	return msg ->wParam;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	HDC hdc;
	switch(uMsg)
	{
	case WM_CHAR:
		char buffer [20];
		sprintf(buffer, "键值:%d", wParam);
		MessageBoxA(hWnd, buffer, "按键", MB_OK | MB_ICONINFORMATION);
		return 0;
	case WM_PAINT:
		PAINTSTRUCT ps;
		RECT rect;
		hdc = BeginPaint(hWnd, &ps);
		GetClientRect(hWnd, &rect);//注意GetClientRect和GetWindowRect的区别 
		SetBkColor(hdc, RGB(0,0,0));//设置文字的矩形区域背景为黑色
		SetTextColor(hdc, RGB(255,255,255));//设置文字颜色为白色
		DrawText(hdc, L"Hello World!", -1, &rect, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
		EndPaint(hWnd, &ps);
		return 0;
	case WM_LBUTTONDOWN:
		POINTS pt;
		pt = MAKEPOINTS(lParam);
		hdc = GetDC(hWnd);
		SetBkColor(hdc, RGB(0,0,0));//设置文字的矩形区域背景为黑色
		SetTextColor(hdc, RGB(255,0,0));//设置文字颜色为红色
		TextOut(hdc, pt.x, pt.y, L"按下鼠标左键!", wcslen(L"按下鼠标左键!"));
		ReleaseDC(hWnd, hdc);
		return 0;
	case WM_CLOSE:
		if(IDOK == MessageBox(hWnd, L"确认退出程序吗?", L"提示", MB_OKCANCEL | MB_ICONQUESTION))
		{
			DestroyWindow(hWnd);
		}
		return 0;
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	default:
		return DefWindowProc(hWnd, uMsg, wParam, lParam);
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值