Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Messagebox

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
15.07.2003, 14:07 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Wie kann ich eine AfxMessageBox an der Stelle des Bildschirms erscheinen lassen wo ichs will?

Danke Heiko
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
15.07.2003, 14:30 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo Heiko,
gar nicht. Alternative : MessageBoxIndirect() und MessageBoxParam()
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
15.07.2003, 14:45 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Ok danke.

hast du da noch zufällig ein bespiel auf der Pfanne, damit ich mir diese Structur der Grauens nicht reinziehen muss.

was ist z.b. hierdran falsch?

C++:
MSGBOXPARAMS test;
test.lpszText="blablabla";
test.lpszCaption="Frage?";
MessageBoxIndirect(&test);



Gruss Heiko
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
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.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
16.07.2003, 13:45 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


von dem was du mir geschrieben hast peil ich fast gar nichts.
Hook kenn ich nicht. Callback auch nicht. (Ich hab halt von MFC und Winapi leider kein Plan)
Habs integriert und scheint zu funktionieren allerdings hopst mir mein Dialog nach dem ich die MessageBox weggeklickt habe auch an die definierte Stelle. Wie kann ich das verhindern. Der soll dort bleiben wo der ist

Gruss Heiko
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
16.07.2003, 14:14 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo Heiko,
hab das in einer SDI getestet, der ist geblieben wo er war . Werde das heute Abend nochmal mit einem Dialog probieren und mich dann nochmals melden. Die Problematik ist, das die MessageBox nur über SetWindowPos() positioniert werden kann. Da das Teil modal ist, hast du erst wieder Kontrolle wenn der Dialog geschlossen ist. Dann nützt aber SetWindowPos() nix mehr, da kein objekt mehr vorhanden ist. Da ich nun fast alle HOWTO auf meiner HD gespeichert habe, konnte ich mich schwach erinnern das es ein HOWTO zu diesem Thema für Vb gibt(180936 vom 21.5.2003). In dem fand ich folgendes:
You can create a CBT hook for your application so that it receives notifications when windows are created and destroyed. If you display a message box with this CBT hook in place, your application will receive a HCBT_ACTIVATE message when the message box is activated. Once you receive this HCBT_ACTIVATE message, you can position the window with the SetWindowPos API function and then release the CBT hook if it is no longer needed.

Wie bereits geschrieben ist das Beispiel für VB, welchen ich für VC++ umgesetzt hab. Warscheinlich dann doch nicht richtig
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe

Dieser Post wurde am 16.07.2003 um 14:14 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
16.07.2003, 18:40 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo Heiko,
hab's nochmal in einen Dialog eingebaut - der bleibt auch dort wo er sich befindet. Also funzt.
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
16.07.2003, 22:52 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Und wieso springt der bei mir weg
Hast du ne Idee?
ich habs ja nur 1:1 kopiert. Da kann ich ja nicht viel falsch gemacht haben

Gruss Heiko
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
16.07.2003, 23:46 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo Heiko,
nee kannste eigentlich nicht. Hab auf meinem Entwickler W2k, unter W9x hab ich das natürlich nicht gepeilt. Muß ich mal auf Arbeit testen. Ich schick Dir das dann morgen mal zu.
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: