vs2010下的代码提示快捷键:CTRL + J
step:
窗口类赋值(12个参数)
注册窗口类
创建窗口
消息循环
#include<Windows.h>
#include<tchar.h>LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
const TCHAR pClassName[] = _T("MyWindow");
WNDCLASSEX wcex;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hbrBackground = (HBRUSH)::GetStockObject(WHITE_BRUSH);
wcex.hCursor = ::LoadCursor(NULL, IDC_ARROW);
wcex.hIcon = ::LoadIcon(NULL, IDI_APPLICATION);
wcex.hIconSm = ::LoadIcon(NULL, IDI_APPLICATION);
wcex.hInstance = hInstance;
wcex.lpfnWndProc = WindowProc;
wcex.lpszClassName = pClassName;
wcex.lpszMenuName = NULL;
wcex.style = CS_HREDRAW | CS_VREDRAW;
BOOL bRet = ::RegisterClassEx(&wcex);
if(!bRet)
{
MessageBox(NULL, _T("提示"), _T("注册窗口类失败"), MB_OK);
return FALSE;
}
HWND hWnd = ::CreateWindowEx(0, pClassName, _T("WinDemo"), WS_VISIBLE|WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hInstance, NULL);if(NULL == hWnd)
{
MessageBox(NULL, _T("提示"), _T("创建窗口失败!"), MB_OK);
return FALSE;
}
::ShowWindow(hWnd, SW_SHOW);
::UpdateWindow(hWnd);MSG msg;
while(GetMessage(&msg, NULL, 0, 0))
{
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
return TRUE;
}
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)
{
case WM_CLOSE:
::DestroyWindow(hwnd);
return 0;
case WM_DESTROY:
::PostQuitMessage(0);
return 0;
default:
break;
}
return ::DefWindowProc(hwnd,uMsg,wParam,lParam);
}
创建一个Windows窗体