创建新的 Win32 项目
-
在“文件”菜单上,单击“新建”,然后单击“项目...”。
-
在“项目类型”窗格中,选择“Visual C++”节点中的“Win32”,然后在“模板”窗格中选择“Win32 项目”。
键入项目的名称,如 win32app。您可以接受默认位置、键入一个位置或者导航到要保存项目的目录。
-
在“Win32 应用程序向导”中,选择“下一步”。
-
在“Win32 应用程序向导”中,在“应用程序类型”下选择“Windows 应用程序”。在“附加选项”下选择“空项目”。原样保留剩余的选项。单击“完成”创建项目。
-
在“项目”菜单中选择“添加新项...”,将 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);
}
}