vs2017开发第一个desktop应用程序

    desktop应用程序也叫窗口程序,我们平时在电脑上安装的APP,都是桌面程序,比如QQ,各种播放器,包括浏览器。桌面程序最主要的特点,就是点击运行之后,会有一个界面,这个界面中的内容都是各个组件拼装起来的。比如文本,按钮,面板等等,也可以自定义组件。

    这里介绍如何通过vs2017来开发一个桌面程序。一般安装过vs2017的,都会默认安装了开发桌面程序所需的向导。我们打开vs2017选择新建项目,在新建项目面板 左侧选择Windows Desktop类型,右侧方框中选择Windows Desktop Wizard向导程序。如下图所示:

vs2017开发第一个desktop应用程序_第1张图片

    点击ok,到下一步,选择Windows Application(.exe)类型,并勾选empty project,就是空工程的选项,我们的项目创建出来没有任何代码,需要我们手动敲入代码。

vs2017开发第一个desktop应用程序_第2张图片 

    工程创建完毕,我们可以进行编码了,其实如果是入门的话,构建一个桌面程序很简单,我们只需要调用几个方法,并且设置好相关的参数就可以了。 全部代码都可以在一个cpp源文件中完成,这里就叫main.cpp,代码不过100行,需要理解这些代码,我们先来看看关于桌面程序中的一些介绍:

vs2017开发第一个desktop应用程序_第3张图片

下面给出构建桌面程序的全部代码:main.cpp

#include 
#include 
#include 
#include 
static TCHAR szWindowClass[] = _T("win32app");
static TCHAR szWindowTitle[] = _T("firstapp");

HINSTANCE hInst;
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
	WNDCLASSEX wcex;
	wcex.cbSize = sizeof(WNDCLASSEX);
	wcex.style = CS_HREDRAW | CS_VREDRAW;
	wcex.lpfnWndProc = WndProc;
	wcex.cbClsExtra = 0;
	wcex.cbWndExtra = 0;
	wcex.hInstance = hInstance;
	wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
	wcex.hCursor = LoadCursor(NULL, IDC_ARROW);//设置鼠标样式
	wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);//设置画刷背景色
	wcex.lpszMenuName = NULL;
	wcex.lpszClassName = szWindowClass;
	wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
	if (!RegisterClassEx(&wcex)) {
		MessageBox(NULL, _T("call to RegisterClassEX failed."), _T("win32"), NULL);
		return 1;
	}

	hInst = hInstance;
	HWND hWnd = CreateWindow(
		szWindowClass,
		szWindowTitle,
		WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT,
		CW_USEDEFAULT,
		500,
		100,
		NULL,
		NULL,
		hInstance,
		NULL
	);
	if (!hWnd) {//创建窗口失败
		MessageBox(NULL, _T("call to CreateWindow failed"), _T("win32"), NULL);//调用消息弹出框展示错误消息
		return 1;
	}

	ShowWindow(hWnd, nCmdShow);//显示窗口
	UpdateWindow(hWnd);//修改窗口
	MSG msg;
	while (GetMessage(&msg, NULL, 0, 0)) {
		TranslateMessage(&msg);//转换消息
		DispatchMessage(&msg);//分发消息
	}

	return (int)msg.wParam;
		 
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
	PAINTSTRUCT ps;//画图结构体
	HDC hdc;//绘图上下文句柄
	TCHAR hello[] = _T("hello,this is my first app.");
	switch (message) {
		case WM_PAINT:
			hdc = BeginPaint(hWnd, &ps);
			TextOut(hdc, 50, 5, hello, wcslen(hello));
			EndPaint(hWnd, &ps);
			break;
		case WM_DESTROY:
			PostQuitMessage(0);
			break;
		default:
			return DefWindowProc(hWnd, message, wParam, lParam);
			break;
	}
	return 0;
}

 保存程序,并运行,运行截图如下:

vs2017开发第一个desktop应用程序_第4张图片

    运行产生一个窗口,窗口中简单绘制了一个文本内容。 这样,通过vs2017来构建桌面程序就算是入门了,代码理解起来也不是很困难,大多数是在做属性设置。如果前面我们通过向导构建desktop application的时候,不勾选empty project,那么就会有一些默认的代码产生,可以直接运行项目,就能够产生一个默认的窗口。那样适合已经非常熟练的开发,无需从简单的窗口构建开始。

你可能感兴趣的:(windows,c++,windows,desktop,vs2017,WinMain,WndProc,RegisterClassEx)