DoModal返回-1 Getlasterror表示句柄无效

时间:2015-03-16 06:05:08

标签: c++ visual-studio-2012 mfc dialog windows-ce

我正在使用Win32应用程序,在这个DoModal函数中返回-1并且GetlastError()返回6(无效句柄)。我尝试删除GDI句柄来修复GDI Exhausts,结果失败。

其他信息: 我正在使用Visual Studio 2012,此应用程序适用于Compact 2013。

if(!bDeviceOpened)
{     
  bDeviceOpened=OpenDriver();


  if(bDeviceOpened == 0)
  {
    AfxMessageBox(_T("Please make sure the driver is up and runnning"));
    return FALSE;
  }

}

//Reading the Driver version
DWORD   nBytesReturned = 0;
    if(!GetOID(OID_RPS_DRIVER_STATS, &stats, sizeof(stats), &nBytesReturned) )
      {
        AfxMessageBox(_T("Failed to query the stats"));
      }

m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();

if (nResponse == IDOK)
{
    // TODO: Place code here to handle when the dialog is
    //  dismissed with OK
}
else if (nResponse == IDCANCEL)
{
    // TODO: Place code here to handle when the dialog is
    //  dismissed with Cancel
}

为什么我没有收到对话框?

1 个答案:

答案 0 :(得分:1)

当您的资源未使用对话框正确映射时,DoModal()返回-1。如果您进入 DoModal(),您将找到声明

  

//如果加载对话框模板资源失败,则返回-1

我建议您在 DoModal()之前调用 AfxSetResourceHandle(); 函数。