《Win32篇》新建项目vs2008

发布时间 2023-07-27 12:48:17作者: Fusio

VS2008新建项目

参考链接:https://blog.csdn.net/candyliuxj/article/details/7350053

(1)新建Win32项目
image

点击上图的确定后,出现Win32应用程序向导,点击下一步,出现下图界面,选择附加选项中的空项目,点击完成,新建项目完成。
image

(2)添加预编译头
从解决方案资源管理器中可看到,新建的Win32项目中没有任何文件,如下图:
image

这就需要我们手动添加预编译头。
首先新建头文件stdafx.h,并在此文件中添加如下内容:

#pragma once

#include<windows.h>
#include <tchar.h>

然后新建源文件stdafx.cpp,并在此文件中添加如下内容:

#include "stdafx.h"

然后右击stdafx.cpp,选择属性,在弹出的属性页中,选择配置属性->C/C++->预编译头->创建/使用预编译头,选择【创建预编译头(/Yc)】,如下图:
image

点击应用,确定按钮。

然后右击项目,选择属性,在弹出的属性页中,选择配置属性->C/C++->预编译头->创建/使用预编译头,选择【使用预编译头(/Yu)】,如下图:
image

点击应用,确定按钮。
(3)测试代码

新建test.cpp文件,添加如下代码:

// test.cpp 应用程序入口文件

#include "stdafx.h"

int APIENTRY _tWinMain(HINSTANCE hInstance,  
					  HINSTANCE hPrevInstance,   
					  LPTSTR lpCmdLine,
					  int nCmdShow)
{
	// 指明不产生这些参数不适用的警告
	UNREFERENCED_PARAMETER(hPrevInstance);
	UNREFERENCED_PARAMETER(lpCmdLine);
	UNREFERENCED_PARAMETER(hInstance);
	UNREFERENCED_PARAMETER(nCmdShow);

	// 获取桌面的句柄
	HWND hWnd = GetDesktopWindow();

	// 显示一行消息
	::MessageBox(hWnd, _T("第一个应用程序"), _T("例子"), MB_OK);

	return 0;
}

然后,编译运行,结果如下:
image

vs2008新建项目2

参考链接:https://blog.csdn.net/sanqima/article/details/36475281

1)新建一个解决方案Solu4,在Solu4添加一个win32应用程序,命名为“dian43”--》next--》勾选“空工程”。如下:
image

image

2)点击“dian43”-->源文件--》右击--》选择“添加”/“新建项”--》代码/C++-->命名为:di

3)在di.cpp中添加如下代码:

#include <Windows.h>
#include <tchar.h>

//声明回调函数
LRESULT CALLBACK WndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam);

//窗口类名和窗口函数
const TCHAR szWindowClass[] = L"第一个窗口";
const TCHAR szWindowTitle[] = L"主窗口标题";

//WinMain函数,入口点
int WINAPI _tWinMain(HINSTANCE hInstance,HINSTANCE hPreInstance,
					 LPTSTR lpCmdLine,int nCmdSHow)
{
	//注册窗口类
	WNDCLASSEX wcex={0};
	wcex.cbSize=sizeof(WNDCLASSEX);
	wcex.style=CS_HREDRAW|CS_VREDRAW;
	wcex.lpfnWndProc=(WNDPROC)WndProc;
	wcex.hInstance=hInstance;
	wcex.hIcon=LoadIcon(NULL,IDI_APPLICATION);

	wcex.hCursor=LoadCursor(NULL,IDC_ARROW);
	wcex.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
	wcex.lpszClassName=szWindowClass;
	RegisterClassEx(&wcex);

	//创建窗口
	HWND hWnd = CreateWindow(
		szWindowClass,
		szWindowTitle,
		WS_OVERLAPPEDWINDOW,
		100,200,500,500,
		HWND_DESKTOP,
		NULL,
		hInstance,
		NULL
		);
	if(!hWnd) return FALSE;

	//显示并更新窗口
	ShowWindow(hWnd,nCmdSHow);
	UpdateWindow(hWnd);

	//进入消息循环
	MSG msg;

	while (GetMessage(&msg,NULL,0,0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	return msg.wParam;	
}

//窗口函数,用于消息处理
LRESULT CALLBACK WndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam){
	int nSel=0;
	switch(msg){
		case WM_PAINT:
			{
				TCHAR* str=L"Hello World";
				PAINTSTRUCT ps;
				HDC hdc=BeginPaint(hWnd,&ps);
				RECT r;
				GetClientRect(hWnd,&r);//获取客户区的矩形框
				DrawText(hdc,str,-1,&r,DT_SINGLELINE|DT_CENTER|DT_VCENTER);
				EndPaint(hWnd,&ps);
				return 0;
			}
		case WM_CLOSE:
			nSel=MessageBox(hWnd,L"你真的要退出吗?",szWindowTitle,MB_YESNO|MB_ICONQUESTION);
			if(nSel==IDYES) DestroyWindow(hWnd);
			return 0;
		case WM_DESTROY:
			PostQuitMessage(0);
			return 0;
		default:
			return DefWindowProc(hWnd,msg,wParam,lParam);
	}
}