簡體   English   中英

如何使用C ++捕獲Windows關閉/重新啟動消息

[英]How to capture windows shut down/ Restart message using C++

我想以編程方式簽入我的應用程序,如果用戶關閉/重新啟動/注銷計算機。 我試圖實現下面的代碼,它給出了編譯錯誤

error: invalid conversion from 'bool (*)(DWORD)' to 'BOOL (*)(DWORD)'
error: initializing argument 1 of 'BOOL SetConsoleCtrlHandler(BOOL (*)(DWORD), BOOL)'

void TestApp:: OnQuit()
{
    SetConsoleCtrlHandler(HandlerRoutine, TRUE);
}

//Windows Call Back function implementation
bool WINAPI HandlerRoutine(DWORD dwCtrlType)
{
   bool ret = false;    
   if (dwCtrlType == CTRL_LOGOFF_EVENT || dwCtrlType == CTRL_SHUTDOWN_EVENT)
      //Graceful Quit

   return ret;
}

我的開發環境是QT Creator QT SDK和C ++。

正如其他人所說的, BOOL是一個int ,而不是bool bool標稱值為truefalse ,分別為10 BOOL使用FALSE == 0TRUE == !FALSE 在這里基本上沒有關系,因為它們基本上以相同的方式工作。

C沒有內置的bool類型時, BOOL來自WinAPI的古老遺產。

因此,您真正需要做的就是在處理程序中將bool更改為BOOL

BOOL WINAPI HandlerRoutine(DWORD dwCtrlType)
^^^^
{
   BOOL ret = false;    
   ^^^^
   if (dwCtrlType == CTRL_LOGOFF_EVENT || dwCtrlType == CTRL_SHUTDOWN_EVENT)
      //Graceful Quit

   return ret;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM