Ich habe versucht, ein Fenster mit ShowWindow
in einer Callback-Funktion zu zeigen, die durch eine SetTime
aufgerufen wird, nachdem ich es ausgeblendet habe, aber es hat nicht funktioniert. Bitte überprüfen Sie das folgende Codebeispiel.Win32: Kann das Fenster nicht anzeigen, nachdem es ausgeblendet wurde?
#define _WIN32_WINNT 0x0500
#include<windows.h>
void CALLBACK f(HWND hwnd, UINT uMsg, UINT timerId, DWORD dwTime)
{
MessageBoxA(NULL,"Test","test2",MB_OK);
ShowWindow(hwnd, SW_SHOW); //This will not show the window :(
MessageBoxA(NULL,"Is it shown?","test2",MB_OK);
}
int main()
{
MSG msg;
ShowWindow(GetConsoleWindow(), SW_HIDE);
SetTimer(NULL, 0, 1000*3, &f);
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
Vielen Dank.
Warum hast du 'f' gecastet? Entferne diesen Cast. Sie prüfen nicht auf Fehler. Warum nicht? –
Ziemlich unmöglich zu sagen, was * "nicht funktioniert" *. Der Text sagt, Sie können kein Fenster anzeigen, nachdem es ausgeblendet wurde. Der Code sagt etwas anderes ('ShowWindow (hwnd, SW_SHOW); // wird das Fenster nicht verbergen'). Ich weiß nicht, warum Sie sich für die falsche [TimerProc] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms644907.aspx) Signatur entschieden haben. – IInspectable
Warum setzen Sie keinen Haltepunkt auf Ihren 'ShowWindow'-Aufruf (innerhalb' f') und beobachten den Wert von 'hwnd'? Da der Timer keinem Fenster zugeordnet ist, nehme ich an, dass es "NULL" ist. – IInspectable