0
点赞
收藏
分享

微信扫一扫

Directx11--窗口初始化(win32)

慕犹清 2022-03-22 阅读 105

一.入口函数: int WINAPI WinMain

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE prevhInstance,
 LPSTR cmdLine, int showCmd)

1.第一个参数 hinstance:实例句柄

2.第二个参数 prevhInstance:先前实例句柄

3.第三个参数 cmdLine:命令行(为远指针)

4.第四个参数 showCmd:指定窗口如何显示

第四个参数 showCmd 部分取值意义
参数意义
SW_HIDE0隐藏此窗口并激活另一个窗口
SW_MAXIMIZE3最大化指定的窗口
SW_MINIMIZE6最小化指定的窗口并激活当前次序中顶部的窗口
SW_RESTORE9激活并显示此窗口,如果窗口已经最小化或最大化,系统会恢复它到原始的尺寸和位置,一个应用程序应该在恢复最小化的窗口时指定此SW_RESTORE标识
SW_SHOW5以当前的尺寸和位置激活与显示指定窗口
SW_SHOWMAXIMIZED3最大化激活并显示这个窗口
SW_SHOWMINIMIZED2最小化激活并显示这个窗口
SW_SHOWMINNOACTIVE7最小化显示这个窗口,与SW_SHOWMINIMIZED唯一的区别是不会去激活指定的窗口
SW_SHOWNA8以当前的尺寸和位置激活与显示指定窗口,与SW_SHOW的唯一区别是不会去激活指定的窗口
SW_SHOWNOACTIVATE4显示一个窗口,若指定的窗口是最小化或者最大化的,系统将恢复其到原始尺寸和位置,与SW_SHOWNORMAL的唯一区别是不会去激活指定的窗口
SW_SHOWNORMAL1

激活并显示一个窗口,若指定的窗口是最小化或者最大化的,系统将恢复其到原始尺寸和位置。一个应用程序应该在第一次显示窗口的时候指定这个标识

二.初始化窗口类

    WNDCLASS wc;
	wc.style = CS_HREDRAW | CS_VREDRAW;//窗口风格
	wc.lpfnWndProc = MainWndProc;//窗口回调
	wc.cbClsExtra = 0;//窗口类附加内存
	wc.cbWndExtra = 0;//窗口附加内存
	wc.hInstance = m_hAppInst;//实例句柄
	wc.hIcon = LoadIcon(0, IDI_APPLICATION);//图标句柄
	wc.hCursor = LoadCursor(0, IDC_ARROW);//光标句柄
	wc.hbrBackground = (HBRUSH)GetStockObject(NULL_BRUSH);//背景画刷句柄
	wc.lpszMenuName = 0;//菜单名字
	wc.lpszClassName = L"D3DWndClassName";//窗口类名

1.LoadIcon函数:

2.LoadCursor函数:

3.GetStockObject函数:

三.注册窗口类

    if (!RegisterClass(&wc))
	{
		MessageBox(0, L"RegisterClass Failed.", 0, 0);
		return false;
	}

四.初始化视口大小

    RECT R = { 0, 0, m_ClientWidth, m_ClientHeight };
	AdjustWindowRect(&R, WS_OVERLAPPEDWINDOW, false);
	int width = R.right - R.left;
	int height = R.bottom - R.top;

五.创建窗口

    m_hMainWnd = CreateWindow(L"D3DWndClassName", m_MainWndCaption.c_str(),
		WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, width, height
    , 0, 0, m_hAppInst, 0);
	if (!m_hMainWnd)
	{
		MessageBox(0, L"CreateWindow Failed.", 0, 0);
		return false;
	}

六.显示和更新窗口

    ShowWindow(m_hMainWnd, SW_SHOW);
	UpdateWindow(m_hMainWnd);

举报

相关推荐

0 条评论