20140702加:
WS_OVERLAPPEDWINDOW这个属性如果写成WS_OVERLAPPED,则窗口没有最大最小按钮以及左边的系统的菜单。
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); }