最も簡単なWindowsウィンドウプログラム、main関数を使って、コンソールなどを隠して、windowプログラミングの入門に適しています
1847 ワード
#include
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) // ,
LRESULT WINAPI WndProc(HWND,UINT,WPARAM,LPARAM);
int main()
{
HINSTANCE hInstance = GetModuleHandle(NULL);//
WNDCLASSEX wc;
MSG msg;
HWND hwnd;
//
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = wc.cbWndExtra = NULL;
wc.hInstance = hInstance;
wc.hbrBackground = (HBRUSH)GetStockObject(COLOR_WINDOW+1);
wc.lpszMenuName = NULL;
wc.lpszClassName = TEXT("MyWindow");
wc.hIcon = wc.hIconSm = LoadIcon(NULL,IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL,IDC_ARROW);
RegisterClassEx(&wc);//
hwnd = CreateWindowEx(NULL,
wc.lpszClassName,
wc.lpszClassName,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL );//
ShowWindow(hwnd, SW_SHOW);//
UpdateWindow(hwnd);//
//
while(true)
{
if(!GetMessage(&msg,0,0,0))break;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
// ,
LRESULT WINAPI WndProc( HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
switch(uMsg)
{
case WM_DESTROY:
PostQuitMessage(NULL);
break;
}
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
vs 2008次コンパイル通過
自動的に作成されるwindowウィンドウよりもずっと簡素で、初心者でよく知っているmain関数です.とは言っても、その過程を理解するにはやはりwindowsプログラミングに関する基礎を見なければなりません.私は以前から何がコールバックを叫ぶことを理解していないと思って、どうしてウィンドウの過程は“自分で実行しました”ことができて、プログラムのやり方に従わないと感じて、ほほほ.
実は何のコールバックがコールバックしないで、ただ関数のポインタの知識で、登録する時関数のポインタを1つの構造体にあげて、ウィンドウのプログラムはウィンドウのメッセージを受け取った後にこの関数のポインタを呼び出しただけで、特別なことはなくて、ただそれはwindowsの内部で完成したので、見えないだけで、自分でDLLを書いたことがあるならばもっと理解します.