![](/img/trans.png)
[英]How to smooth restart a c++ program without shut down the running program?
[英]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
標稱值為true
和false
,分別為1
和0
。 BOOL
使用FALSE == 0
和TRUE == !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.