《Win32篇》新建项目vs2008
VS2008新建项目
参考链接:https://blog.csdn.net/candyliuxj/article/details/7350053
(1)新建Win32项目
点击上图的确定后,出现Win32应用程序向导,点击下一步,出现下图界面,选择附加选项中的空项目,点击完成,新建项目完成。
(2)添加预编译头
从解决方案资源管理器中可看到,新建的Win32项目中没有任何文件,如下图:
这就需要我们手动添加预编译头。
首先新建头文件stdafx.h,并在此文件中添加如下内容:
#pragma once
#include<windows.h>
#include <tchar.h>
然后新建源文件stdafx.cpp,并在此文件中添加如下内容:
#include "stdafx.h"
然后右击stdafx.cpp,选择属性,在弹出的属性页中,选择配置属性->C/C++->预编译头->创建/使用预编译头,选择【创建预编译头(/Yc)】,如下图:
点击应用,确定按钮。
然后右击项目,选择属性,在弹出的属性页中,选择配置属性->C/C++->预编译头->创建/使用预编译头,选择【使用预编译头(/Yu)】,如下图:
点击应用,确定按钮。
(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;
}
然后,编译运行,结果如下:
vs2008新建项目2
参考链接:https://blog.csdn.net/sanqima/article/details/36475281
1)新建一个解决方案Solu4,在Solu4添加一个win32应用程序,命名为“dian43”--》next--》勾选“空工程”。如下:
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);
}
}