Windows程序设计--第一个窗口程序

第一个建立一个窗口的程序,也是windows建立窗口的核心代码,具体代码注释,已在下面代码中标注:


#include 
#include 

LRESULT CALLBACK WinProc(HWND hWnd, UINT UMsg, WPARAM wParam, LPARAM lParam) //窗口回调函数
{
	switch (UMsg)
	{
	case WM_CLOSE:  //关闭窗口触发
		{
			::DestroyWindow(hWnd);  //发送WM_DESTROY给消息队列
		}
		break;

	case WM_DESTROY: 
		{
			::PostQuitMessage(0); //发送出WM_QUIT消息,
		}
		break;
	}
	
	//处理默认消息
	return ::DefWindowProc(hWnd, UMsg, wParam, lParam); 
}

//__in代表参数是输入参数,__out代表参数是输出参数
int WINAPI WinMain( __in HINSTANCE hInstance, //当前应用程序实例
					__in_opt HINSTANCE hPrevInstance, //先前应用程序实例,在Win32中始终为NULL
					__in LPSTR lpCmdLine,  //命令行参数
					__in int nShowCmd   //显示方式 
				  )  
{
	TCHAR pszClassName[] = _T("First Windows");  //窗口类名

	WNDCLASSEX wcex;  //定义一个窗口类
	wcex.cbSize = sizeof(WNDCLASSEX);  //窗口类大小
	wcex.style = CS_HREDRAW | CS_VREDRAW; //窗口风格
	wcex.lpfnWndProc = WinProc; //窗口回调函数
	wcex.cbClsExtra = 0;  //窗口类额外参数,一般为0
	wcex.cbWndExtra = 0;  //窗口类额外参数,一般为0
	wcex.hInstance = hInstance; //窗口类实例
	wcex.hIcon = (HICON)::LoadIcon(NULL, IDI_APPLICATION);  //窗口上的小图标,如果使用系统,LoadIcon第一个参数为NULL 
	wcex.hCursor = (HCURSOR)::LoadCursor(NULL, IDC_ARROW);  //窗口中的光标样式
	wcex.hbrBackground = (HBRUSH)::GetStockObject(WHITE_BRUSH); //窗口背景色
	wcex.lpszMenuName = NULL;  //窗口菜单,没有菜单,为NULL
	wcex.lpszClassName = pszClassName; //窗口类名
	wcex.hIconSm = (HICON)::LoadIcon(NULL, IDI_APPLICATION); //这里的图标一般没有用,一般和hIcon相同

	bool ret = ::RegisterClassEx(&wcex);  //注册窗口类
	if (ret == NULL)
	{
		::MessageBox(NULL, _T("注册窗口失败"), _T("提示框"), MB_OK);
		return -1;
	}

	//创建窗口
	HWND hWnd = ::CreateWindowEx(0, pszClassName, _T("First Windows!"), \
		WS_VISIBLE| WS_OVERLAPPEDWINDOW ,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance, NULL);

	if (hWnd == NULL)
	{
		::MessageBox(NULL, _T("创建窗口失败"), _T("提示框"), MB_OK);
		return -1;
	}

	//显示和更新窗口
	ShowWindow(hWnd,SW_SHOW);
	UpdateWindow(hWnd);

	MSG msg;

	//消息循环
	while (GetMessage(&msg, NULL, NULL,NULL))  //当接受WM_QUIT消息,消息队列退出
	{
		::TranslateMessage(&msg); //翻译消息
		::DispatchMessage(&msg); //路由消息给OS
	}

	return 0;
}


你可能感兴趣的:(Windows,C/C++)