下面一段代碼我是按照某本書上抄的,
#include
/////////////////////////////窗口過程聲明///////////////////////////////////
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
/////////////////////////////填充窗口類的函數聲明///////////////////////////
void fill_windows(WNDCLASSEX*,HINSTANCE,TCHAR*);
/////////////////////////////全局字符串////////////////////////////////////
TCHAR szAppName[]= TEXT("windows");
/////////////////////////////打印錯誤文本/////////////////////////////////
void geterrortext();
/////////////////////////////窗口主函數////////////////////////////////////
int WINAPI WinMain(_In_ HINSTANCE hInstance, In_opt HINSTANCE hPrevInstance, In PSTR szCmdLine, In int iCmdShow)
{
HWND hWnd;
MSG msg;
WNDCLASSEX wndclass;
fill_windows(&wndclass,hInstance,szAppName); ///////////////////調用fill_windows填充窗口類字段
if (!RegisterClassEx(&wndclass)) ///////////////////注冊窗口類
{
MessageBox(NULL, TEXT("error"), szAppName, MB_ICONERROR);
return 0;
}
hWnd = CreateWindow(szAppName, ///////////////////窗口類名
szAppName, ///////////////////窗口標題
WS_OVERLAPPEDWINDOW, ///////////////////窗口風格
CW_USEDEFAULT, //////////////////窗口初始水平位置
0, //////////////////窗口初始垂直位置
CW_USEDEFAULT, //////////////////窗口寬度
0, ///////////////////窗口高度
NULL, //////////////////父窗口句柄
NULL, //////////////////菜單句柄
hInstance, //////////////////實例句柄
NULL); //////////////////指針
if (hWnd)
ShowWindow(hWnd, SW_SHOW);
else
{
geterrortext();
UnregisterClass(szAppName, hInstance);
return 0;
} ////////////////////////顯示窗口
UpdateWindow(hWnd); ////////////////////////傳遞給窗口WM_PAINT消息
while (GetMessage(&msg, NULL, 0, 0)) ///////////////////////消息循環
{
TranslateMessage(&msg); //////////////////////將擊鍵消息轉換為字符消息
DispatchMessage(&msg); //////////////////////發送消息給相應的窗口過程
}
return msg.wParam;
}
/////////////////////////////填充函數定義///////////////////////////////////
void fill_windows(WNDCLASSEX*pwin,HINSTANCE hInst,TCHAR*windowname)
{
pwin->cbSize = sizeof(WNDCLASSEX);
pwin->style = CS_HREDRAW | CS_VREDRAW; //////////////////窗口的類型
pwin->lpfnWndProc = WndProc; //////////////////窗口的窗口過程
pwin->cbClsExtra = 0; //////////////////窗口擴展
pwin->cbWndExtra = 0; //////////////////窗口實例擴展
pwin->hInstance = hInst; //////////////////窗口的實例句柄
pwin->hIcon = LoadIcon(NULL, IDI_APPLICATION); //////////////////窗口圖標
pwin->hCursor = LoadCursor(NULL, IDC_ARROW); //////////////////窗口指針
pwin->hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); //////////////////窗口背景畫刷
pwin->lpszMenuName = NULL; //////////////////窗口菜單
pwin->lpszClassName = windowname; //////////////////窗口類名稱
pwin->hIconSm = LoadIcon(NULL, IDI_APPLICATION);
}
////////////////////////////打印文本函數定義////////////////////////////////
void geterrortext()
{
DWORD message = GetLastError();
TCHAR*szmessage =NULL;
TCHAR SZTitle = { 0 };
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, message, 0, (LPWSTR)&szmessage, 0, NULL);
MessageBox(NULL, szmessage, TEXT("錯誤"), MB_OK);
}
/////////////////////////////窗口過程定義///////////////////////////////////
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc; ///////////////////////////繪制時所需要的設備環境句柄
int xClient, yClient; //////////////////////////保存客戶區大小的變量(寬度:xClient,高度:yClient)
PAINTSTRUCT ps; ////////////////////////////繪制信息結構
wchar_t* WindowsName =L"Hello,Windows";
TCHAR* WindowS = TEXT("HWLLO,WINDOWS");
switch (message)
{
/////////////////////////////創建窗口時的第一個消息////////////////////////
case WM_CREATE:
hdc = GetDC(hWnd);
ReleaseDC(hWnd, hdc);
return 0;
////////////////////////////改變窗口大小時的消息///////////////////////////
case WM_SIZE:
xClient = LOWORD(lParam);
yClient = HIWORD(lParam);
return 0;
///////////////////////////窗口重繪消息////////////////////////////////////
case WM_PAINT:
hdc=BeginPaint(hWnd, &ps);
TextOut(hdc, 100, 100, WindowsName, 10);
EndPaint(hWnd, &ps);
return 0;
////////////////////窗口銷毀時由WM_CLOSE引發的消息/////////////////////////
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd, message, lParam, wParam);
}
大神們幫我看一下哪裡出錯了呀,下面是運行結果:
return DefWindowProc(hWnd, message, lParam, wParam);
--->
return DefWindowProc(hWnd, message, wParam, lParam);