Anwendung in den Vordergrund

Firestormer

Grünschnabel
Hallo!

Ich habe eine dialogfeldbasierende Anwendung, die ein MS Word Dokument startet. Danach ist MS Word im Vordergrund, ich will jedoch mein Dialogfeld im Vordergrund haben!

Welche Befehle kann ich hier anwenden?
Wenns geht mit Code-Beispiel!

mfG
Firestormer
 
Ich habe hier einen Schnipsel aus einem Projekt von mir. Der müsste dir weiterhelfen und zeigt das in den Vordergrundbringen des Dialoges mit SetWindowPos(). In meinem Fall wurde der Dialog noch mit ModifyStyleEx() als "Immer im Vordergrund" gekennzeichnet, aber darauf kannst du vielleicht verzichten - worauf es ankommt, ist SetWindowPos() mit den richtigen Parametern.
Code:
void CDebugDlg::ToTop( bool top ) 
{
  m_bAlwaysOnTop = top;

  if ( m_bAlwaysOnTop ) 
  {
    ModifyStyleEx( 0, WS_EX_TOPMOST, SWP_NOSIZE | SWP_NOMOVE ); 
    SetWindowPos( &wndTopMost, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE );
  }
  else
  {
    ModifyStyleEx( WS_EX_TOPMOST, 0, SWP_NOSIZE | SWP_NOMOVE );     
    SetWindowPos( &wndNoTopMost, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE );
  }
}
 
Versuch zu "Anwendung in den Vordergrund"

Als ich mal Probleme mit dem Focus und Fenster in den Vordergrund bringen hatte, habe ich mir eine eigene setFocus-Methode geschrieben.

void Bezugsseite::setFocus(int ctrlID)
{
// ***********************************************************
// *** Focus auf ein Control setzen
// ***********************************************************
// *** Fenster aktivieren
this->SetActiveWindow();
// *** Focus setzen
GetDlgItem(ctrlID)->SetFocus();
// *** aktives Control merken
m_CtrlAktiv_ID = ctrlID;
}

Vorschlag:
Wenn Dein Fenster in der Variablen pWnd steckt, dann versuch es mal mit:
pWnd->SetActiveWindow();
und setze anschließend den Focus auf das gewünschte Control:
GetDlgItem(IDC...)->SetFocus();

Viel Erfolg
Santiago
 

Neue Beiträge

Zurück