win32_First day

今天正式開始了win32 SDK非模態化的編程,不使用資源添加來寫窗口,算是一次新的修煉吧,即使學的有些晚,但是想要更加詳細的瞭解windows各種消息機制還得從最基本的API瞭解,這對以後無論是何種編程,對MFC的封裝使用都會有更大的幫助,下面是一個非模態的窗口建立。

#include "windows.h"


HINSTANCE g_Instance;


LRESULT CALLBACK WndProc(HWND hwnd,UINT uMsg,WPARAM wapram,LPARAM lparam)
{
	switch(uMsg)
	{
	case WM_DESTROY:{
						PostQuitMessage(0);
					}break;
	}

	return DefWindowProc(hwnd,uMsg,wapram,lparam);
}

BOOL CALLBACK Registe(LPCTSTR pszName)
{
	WNDCLASSEX wce;

	wce.cbSize				=	sizeof(wce);
	wce.style				=	CS_HREDRAW|CS_VREDRAW;
	wce.cbClsExtra			=	0;
	wce.cbWndExtra			=	0;
	wce.hCursor				=	NULL;
	wce.hIcon				=	NULL;
	wce.hbrBackground		=	HBRUSH (COLOR_BTNFACE	+	1);
	wce.hIconSm				=	NULL;
	wce.hInstance			=	g_Instance;
	wce.lpfnWndProc			=	WndProc;
	wce.lpszClassName		=	pszName;
	wce.lpszMenuName		=	NULL;

	ATOM nAtom	=	 RegisterClassEx(&wce);
	if (nAtom	==	0)
	{
		return FALSE;
	}

	return TRUE;

	
}

HWND CALLBACK CreateWnd(LPCTSTR pszName)
{
	HWND hwnd	=	 CreateWindow(pszName,L"MyWnd",WS_OVERLAPPEDWINDOW,0,0,400,500,NULL,NULL,g_Instance,NULL);

	if (hwnd	==	NULL)
	{
		return NULL;
	}

	ShowWindow(hwnd,SW_SHOW);
	UpdateWindow(hwnd);

	

	return hwnd;
}


void MessageInfo(HWND hwnd)
{
	MSG msg	=	{0};
	while(GetMessage(&msg,hwnd,NULL,NULL))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
}

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{
	g_Instance	=	hInstance;

	Registe(L"EDIT");
	HWND hwnd	=	 CreateWnd(L"EDIT");
	MessageInfo(hwnd);


	return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章