最も簡単な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を書いたことがあるならばもっと理解します.