1. 从控制台到窗口:Win32编程初体验
作为一名从控制台编程转向Windows开发的程序员,第一次看到自己创建的窗口程序在屏幕上弹出时的兴奋感至今难忘。让我们从最基础的"Hello World"开始,逐步构建一个完整的Win32窗口程序。
控制台程序就像是在小黑屋里工作,而窗口程序则是拥有了一个明亮的办公室。控制台程序的输出局限在命令行窗口内,而Win32窗口程序可以创建真正的图形界面,响应用户输入,拥有菜单、按钮等控件。
cpp复制#include <iostream>
int main() {
std::cout << "Hello World" << std::endl;
return 0;
}
这段经典的C++代码会在控制台输出一行文字,但它无法创建任何图形界面元素。要创建真正的Windows应用程序,我们需要使用Windows API(也称为Win32 API)。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Win32程序的基本结构
2.1 必要的头文件和入口点
Win32程序需要包含Windows.h头文件,这是Windows编程的"万能钥匙",包含了所有基本的Windows API声明。
cpp复制#include <windows.h>
与控制台程序的main()函数不同,Win32程序的入口点是WinMain()函数:
cpp复制int WINAPI WinMain(
HINSTANCE hInstance, // 当前实例句柄
HINSTANCE hPrevInstance, // 先前实例句柄(已废弃)
LPSTR lpCmdLine, // 命令行参数
int nCmdShow // 窗口显示方式
)
注意:hPrevInstance参数在现代Windows系统中总是NULL,保留它只是为了向后兼容。
2.2 窗口类注册
在创建窗口前,我们需要定义并注册一个窗口类:
cpp复制WNDCLASS wc = {0};
wc.lpfnWndProc = WindowProc; // 窗口过程函数
wc.hInstance = hInstance; // 程序实例句柄
wc
