我应该检查CreateWindowEx()是否失败?

时间:2014-11-25 06:05:59

标签: winapi

我应该检查CreateWindowEx()函数调用失败吗?如果失败了我该怎么办,我的意思是如果我创建了一组按钮而其中一个函数调用失败了,我应该一起关闭应用程序吗?我的意思是缺少一个按钮会使应用程序无用。

1 个答案:

答案 0 :(得分:2)

我认为您应该始终检查CreateWindowEx()的返回值。如果返回值为NULL,那么您就知道出现了问题,并且您可以采取一些措施来响应。出现问题时您所做的事情取决于您,例如您可以显示带有错误描述的消息框,或者您可以将错误记录到文件中等等:

// Try to create your window
HWND hwnd = CreateWindowEx(...);

// check if the handle is valid
if(hwnd == NULL) {

   // display a MessageBox() with a descriptive error message
   LPVOID lpErrorMessage;
   DWORD dwErrorCode = GetLastError();

   FormatMessage(
      FORMAT_MESSAGE_ALLOCATE_BUFFER | 
      FORMAT_MESSAGE_FROM_SYSTEM |
      FORMAT_MESSAGE_IGNORE_INSERTS,
      NULL,
      dwErrorCode,
      MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
      (LPTSTR) &lpErrorMessage,
      0, NULL 
  );
  MessageBox(NULL, (LPCTSTR)lpErrorMessage, TEXT("Error"), MB_OK);

  // don't forget to free the buffer allocated by FormatMessage
  LocalFree(lpErrorMessage);

  // terminate process
  ExitProcess(dwErrorCode);
}