Child Fenster bei aktivierung der app automatisch den focus ?



  • das is nen externes programm was ich als child mit SetParent( hChild) in meine app setze.

    ich kann da vom style her nix verändern oder sonst welche sachen veranstalten das is leider das prob 🙂

    ich habs mir setforeground ja hin bekommen aber es ich brauch das warscheinlich in ner anderen abfrage wie in WM_ACTIVATE, weil dort bekomm ich ständig wieder den focus auf das child und komme nie an meine app ran um die zu beenden. das frustriert natürlich ^^

    ich hoffe du weist wie ichs meine



  • Ah, ok - das ist natürlich eine wichtige Information...

    Wann willst du denn, dass es aktiv gesetzt wird? Nur direkt nachdem du es als Child einbindest?



  • ne das is kein prob ich mach nachdem ich das child eingebunden hab nen SetForeground. das prob is jetzt eher, das , wenn ich die hauptapp minimiere und dann wieder maximiere ich das child im vordergrund haben will und die hauptapp nur bei bedarf

    atm ist es so das immer erst die hauptapp aktiv ist das ist etwas störend 🙂

    schön das du mich verstehst flenders 🙂



  • Du könntest dir merken, ob das Fenster in den Vordergrund soll und diesen Zustand dann bei WM_SIZE wenn wParam SIZE_RESTORED ist, wiederherstellen 🙂

    oder hast du es mal mit WM_ACTIVATEAPP versucht?!



  • jo in WM_ACTIVATE und WM_ACTIVATEAPP is bei beiden das selbe prob. das fenster soll _immer_ wenn ich per alt+tab oder in der taskleiste auf meine hauptapp klicke auf das child zeigen, wenn ich aber auf die hauptapp klicke dann soll das child den focus verlieren und ich will das ganz normal die hauptapp aktiv ist.

    das stellt derzeit nen prob dar weil, wenn ich WM_ACTIVATE oder eben WM_ACTIVATEAPP abfange, es _immer_ das child aktiv setzt und ich in der hauptapp weder nen button drücken, noch minimieren oder schliessen kann. was auf die dauer schon etwas nervig ist 😃

    // Edit

    hmm HIWORD(wParam) == SIZE_RESTORED klang ja eben richtig interessant und ich hättes fast überlesen, da ich in WM_SIZE schon einiges probiert hab, zu meinem leidwesen wirfts da aber auch nur ne message wenn das fenster erstellt wird. und ich wähnte mich schon am ziel 😃



  • ok leute, da hier scheinbar sonst keiner weis was ich versuche zu realisieren :

    ich suche eine message, die in WM_COMMAND abgefangen wird, die aber nur geworfen wird, wenn mein programm aus der taskleiste heraus sichtbar gemacht wird.

    gibts da nix? keine ideen wie man sowas realiseren kann? -.-

    und zu meinem 2. prob hat auch noch keiner was gesagt 😞

    ich habe nen icon, was es in der taskleiste und auch auf der exe selber anzeigt, ich bekomms aber net hin, das es das icon auch in alt+tab und in der titel leiste anzeigt, da kommt immer nur das standart winapp icon. warum und wie änder ich das bitte?

    danke und cYa CAD

    // Edit bitte warum ist S T A N D A R T nen badword? oO



  • MasterCAD schrieb:

    ich suche eine message, die in WM_COMMAND abgefangen wird, die aber nur geworfen wird, wenn mein programm aus der taskleiste heraus sichtbar gemacht wird.

    Soll das ganze jetzt nur geschehen, wenn das Fenster aus dem minimierten Zustand wiederhergestellt wird, oder jedesmal, wenn es über den Taskbar-Button aktiviert wird? Hast du mal bei WM_ACTIVATE abgefragt, dass wParam WA_ACTIVE ist (Aktivieren über Taskbar-Button oder Alt+Tab) und nicht WA_CLICKACTIVE (Aktivieren durch direktes Anklicken)

    MasterCAD schrieb:

    ich habe nen icon, was es in der taskleiste und auch auf der exe selber anzeigt, ich bekomms aber net hin, das es das icon auch in alt+tab und in der titel leiste anzeigt, da kommt immer nur das stan**** winapp icon. warum und wie änder ich das bitte?

    Hast du in deiner WNDCLASS-Struktur von deinem Hauptfenster das Icon bei hIcon angegeben?

    MasterCAD schrieb:

    // Edit bitte warum ist S T A N D A R T nen badword? oO

    Weil es Standard heißt 😉



  • omg pöhser schreibfehler 🙂 sry aber danke kp was los war das ich standar(T) schreiben wollte 🙂

    also zu dem icon erstma : wincl.hIcon = LoadIcon (NULL, MAKEINTRESOURCE( IDI_MYICON));

    das führe ich aus und damit setz ich auch das icon meiner exe und das in der taskleiste. das prob ist nun aber immer noch das es in der titelleiste der app net zu sehen ist und auch per alt+tab net.

    zu deinen anderen tips. das prob is halt das ich den focus auf das child haben möchte ohne das ich erst auf das child klicken muss. egal woher die app grad kommt, ob aus dem hintergrund, aus der taskleiste oder sonstwo. und nun suche ich ein command, was genau das abfragt, wenn die app aktiv ist und ich vom child auf das hauptfenster klicke soll das dann aktiv sein und nicht mehr das child. alle meine versuche scheiterten bis jetzt. ich habe es zwar geschafft, das child auf automatisch aktiv zu setzen, das prob is dann aber das das hauptfenster _nie_ den focus erlangt, was auch mist ist. SetFocus funzt bei meiner art von child net.

    danke für deine mühe flenders.



  • MasterCAD schrieb:

    also zu dem icon erstma: wincl.hIcon = LoadIcon (NULL, MAKEINTRESOURCE( IDI_MYICON));

    Du musst beim 1. Parameter die Insanz-Handle angeben...

    Handle to an instance of the module whose executable file contains the icon to be loaded. This parameter must be NULL when a standard icon is being loaded.

    MasterCAD schrieb:

    das führe ich aus und damit setz ich auch das icon meiner exe und das in der taskleiste.

    Das geschieht nicht durch diesen Aufruf, sondern dadurch, dass du das Icon als Ressource hinzufügst...

    MasterCAD schrieb:

    zu deinen anderen tips. das prob is halt das ich den focus auf das child haben möchte ohne das ich erst auf das child klicken muss. egal woher die app grad kommt, ob aus dem hintergrund, aus der taskleiste oder sonstwo.

    Hast du WM_ACTIVATE mal mit der Abfrage von LOWORD(wParam) auf WA_ACTIVE ausprobiert? Damit wird das Child dann immer aktiviert, wenn du das Fenster nicht durch direktes anklicken aktivierst.

    MasterCAD schrieb:

    nun suche ich ein command, was genau das abfragt, wenn die app aktiv ist und ich vom child auf das hauptfenster klicke soll das dann aktiv sein und nicht mehr das child.

    Evtl. könnte man auch mit WM_WINDOWPOSCHANGING etwas machen?!



  • MAAAAAAAAAAAAAAAAAAAAAAAN FLENDERS !

    du fühl dich ganz derb umarmt ! ich habs schon seelisch und moralisch aufgegeben ! aber _GENAU_ das war nun die lösung 🙂

    man ich bin grad so happy ^^ danke dir tausend mal !

    das war das prob ! endlich funzt das wie _ich_ das will und net windows 🙂

    danke und nen wunderschönes wochenende !

    cYa CAD

    PS.: Falls das prob mal wieder wer hat :

    case WM_ACTIVATE:
    {
    if (LOWORD(wParam) == WA_ACTIVE )
    {
    SetForegroundWindow( hChild);
    }
    break;
    }
    

    und für das Icon in der App :

    LoadIcon (hInstance, MAKEINTRESOURCE( IDI_MYICON));
    

    nochma tausend dank flenders !


Anmelden zum Antworten