win32:第一个窗口程序-初始化实例(part.5)

在part.5部分我们接着来记录一下这个模板中的初始化实例函数,这个函数主要负责创建主窗口并显示它;废话不多说,代码如下:

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
   hInst = hInstance; // 将实例句柄存储在全局变量中
​
   HWND hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
      CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);
​
   if (!hWnd)
   {
      return FALSE;
   }
​
   ShowWindow(hWnd, nCmdShow);
   UpdateWindow(hWnd);
​
   return TRUE;
}
函数声明部分
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)

从函数声明中可以判断处该函数定义了 InitInstance,它返回一个布尔值,并接受两个参数:hInstance:当前实例的句柄,nCmdShow:控制窗口显示方式的标志。

函数体部分
hInst = hInstance; // 将实例句柄存储在全局变量中

将传入的实例句柄 hInstance 存储在全局变量 hInst 中。这通常用于在其他地方访问该实例句柄,在将实例句柄存储在全局变量后进行主窗口创建:

HWND hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
      CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);

调用 CreateWindowW 函数创建主窗口,szWindowClass:窗口类名;szTitle:窗口标题;WS_OVERLAPPEDWINDOW:窗口样式,表示一个具有标题栏、边框和系统菜单的重叠窗口;CW_USEDEFAULT:默认的初始水平位置;0:初始垂直位置;CW_USEDEFAULT:默认的初始宽度;0:初始高度。nullptr:无父窗口或所有者;nullptr:无菜单,hInstance:当前实例的句柄,nullptr:无附加参数。

CreateWindowW 函数是 Windows API 用于创建窗口或控件的函数。其原型定义如下:

HWND CreateWindowW(
  LPCWSTR lpClassName,    // 窗口类名或注册的窗口类的类名
  LPCWSTR lpWindowName,   // 窗口名称(窗口标题)
  DWORD dwStyle,          // 窗口风格
  int x,                  // 窗口初始水平位置
  int y,                  // 窗口初始垂直位置
  int nWidth,             // 窗口宽度
  int nHeight,            // 窗口高度
  HWND hWndParent,        // 父窗口或拥有者窗口的句柄
  HMENU hMenu,            // 菜单句柄或子窗口的标识符
  HINSTANCE hInstance,    // 应用程序实例的句柄
  LPVOID lpParam          // 指向创建窗口的附加参数的指针
);
 

创建窗口成功则返回新创建窗口的句柄,如果窗口创建失败,返回值为 nullptr;若创建窗口失败则返回false。

 if (!hWnd)
   {
      return FALSE;
   }

创建窗口成功后执行以下代码:

 ShowWindow(hWnd, nCmdShow);
 UpdateWindow(hWnd);
​
 return TRUE;

调用 ShowWindow 函数显示窗口;hWnd:窗口的句柄、nCmdShow:控制窗口显示方式的标志(通常在 WinMain 函数中传递)。

UpdateWindow(hWnd);:调用 UpdateWindow 函数更新窗口的客户区;最后返回True。

总结

InitInstance 函数的作用是在应用程序启动时初始化实例,创建主窗口,并显示它。如果窗口创建失败,函数返回 FALSE,否则返回 TRUE 表示成功。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值