你认为Win32 API是什么?
测试所有的API都可以在我们的普通的main函数下面。
试着创建一个控制台工程,把下面的代码放里面运行一下:
#include <iostream>
#include <windows.h>
typedef HINSTANCE _h;//简化一下代码输入而矣,不必在意在句
LRESULT CALLBACK winproc(HWND, UINT, WPARAM, LPARAM);
int main()
{
std::cout << "hello" << std::endl;//输出到黑窗口中
_h hInst = ::GetModuleHandle(NULL);//获取程序模块实例句柄
MSG msg;
HWND hwnd;
WNDCLASS _class;
memset(& _class, 0, sizeof(_class));
_class.hbrBackground = (HBRUSH) 1;//背景
_class.hInstance = hInst;
_class.lpszClassName = "WinApp";//窗口类名
_class.style = CS_HREDRAW | CS_VREDRAW;//窗口样式风格
_class.lpfnWndProc = winproc;//窗口过程
::RegisterClass(& _class);//注册窗口类,没有进行过多的判断,避免代码理解干忧
hwnd = ::CreateWindow("WinApp",
"Hello",
WS_OVERLAPPEDWINDOW,
50,
50,
300,
200,
0,
0,
hInst,
0
);//创建窗口
::ShowWindow(hwnd, SW_SHOW);//显示窗口
::UpdateWindow(hwnd);//更新窗口内容显示
//进入消息循环
while(::GetMessage(&msg, NULL, 0, 0) > 0)
{
::DispatchMessage(&msg);
}
return 0;
}
//窗口过程函数
LRESULT CALLBACK winproc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_DESTROY:
::PostQuitMessage(0);
break;
default:
return ::DefWindowProc(hwnd, msg, wParam, lParam);
}
return FALSE;
}