003
15.07.2003, 21:14 Uhr
Uwe
C/C++ Master (Administrator)
|
Hallo Heiko, mit verlaub, ich hab da mist geschrieben. War mir fast sicher das die MessageboxIndirect() ein Handle zurück gibt. Aber leider.... Der Vollständigkeit wegen ein Bsp. für die Struktur: hInst und lpstrError werden als Parameter an die Funktion übergeben, wo ich das Füllen der Struktur mache .
| C++: |
MSGBOXPARAMS mbp; mbp.cbSize = sizeof(mbp); mbp.hwndOwner=NULL; mbp.hInstance=hInst; mbp.lpszText = lpstrErr; mbp.lpszCaption = "Error!"; mbp.dwStyle = MB_OK | MB_USERICON; mbp.lpszIcon = MAKEINTRESOURCE(IDR_MAINFRAME); mbp.dwContextHelpId = NULL; mbp.lpfnMsgBoxCallback = NULL; mbp.dwLanguageId = LANG_GERMAN; MessageBoxIndirect(&mbp);
|
Habe dann nochmal auf dem Rückweg von Arbeit über die Problematik nachgedacht. Ergebnis - Sag niemals nie Irgendwo nach den Includes
| C++: |
HHOOK h_hook = NULL; LRESULT CALLBACK HookProc(int, WPARAM, LPARAM);
|
Die Callback
| C++: |
LRESULT CALLBACK HookProc(int chk, WPARAM wParam, LPARAM lParam) { if( chk != HCBT_ACTIVATE ) return 0;
::SetWindowPos(HWND(wParam),HWND_TOPMOST,500,150,0,0,SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE); ::UnhookWindowsHookEx(h_hook); return 0; }
|
Und noch der Aufruf
| C++: |
h_hook = ::SetWindowsHookEx(WH_CBT,HookProc,AfxGetApp()->m_hInstance,::GetCurrentThreadId()); AfxMessageBox("Test");
|
Ist fast ein "netter Dreizeiler" geworden. Viel Spass! -- "Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."
Bis dann... Uwe Dieser Post wurde am 15.07.2003 um 21:17 Uhr von Uwe editiert. |