Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Button aus einer Winapi Funktion ansprechen ?

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
06.03.2003, 14:40 Uhr
~Micha
Gast


Wie kann ich mein Button aus einer WINAPI Funktion ansprechen ?
Hallo Forumsteilnehmer,

folgendes Problemchen.
Ich kann nicht mein Button aus einer aufgerufenen Funktion WINAPI wieder aktivieren.
Der Compiler meldet keinen Fehler bei der Ausführung bekomme ich die Meldung
"Fehler in Anwendung " und das wars die Aplikation beendet sich.
Folgt kurz der Code.

Code:
//------------------------------------------------------------------------
DWORD WINAPI StartAufnahme(LPVOID ThreadId)
{    
   //SetThreadPriority(hndCapture, THREAD_PRIORITY_HIGHEST);
   Berechnung();                               // Funktion berechnet zuerst.
  
   //Aufnahme Button wieder sichtbar machen.
   CWnd * pFC ;
   pFC = (CWnd *) GetDlgItem ( td.hWnd, IDC_BAUFNAHME) ;
   pFC -> EnableWindow ( TRUE ) ; // AB HIER STIMMT WAS NICHT AB DIESEM
                                  // PUNKT HABE ICH DEN ABBRUCH DES PROGRAMMS
                                  // HABE ICH DEN FALSCHEN POINTER ??
    
   if (CloseHandle(hndCapture)==0) SetDlgItemText(td.hWnd, IDC_ERGEBNIS_FENSTER, "Kann Thread nicht schliessen ");
}
//------------------------------------------------------------------------
void CPidsyRDlg::OnBaufnahme()// BEI BETÄTIGEN DES BUTTONS FOLGT DIESER CODE
{  td.thread_id = 0;
   td.hWnd = this->m_hWnd;
   long     ThreadId;
   hndCapture = NULL;

   CWnd * pF ;
    //Aufnahme Button dimmen.
    pF = (CWnd *) GetDlgItem ( IDC_BAUFNAHME) ;
    pF -> EnableWindow ( FALSE ) ;
    
    //THREAD WIRD HIER AUFGERUFEN
    hndCapture = ::CreateThread(NULL, 0L, StartAufnahme, (LPVOID)&ThreadId, 0L, &ThreadIdCapture);
    if (!hndCapture)
    { SetDlgItemText(IDC_MELDUNGEN, "Cannot open capture thread !!");
      return ;
    }
}
//------------------------------------------------------------------------


Tue ich die mein Button IDC_BAUFNAHME falsch ansprechen ??
Eine Membervariable habe ich auch definiert aber es klappt auch nicht.
Was ist falsch in diesem Code.

Danke Micha.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
06.03.2003, 16:06 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
Probier mal

C++:
CButton *pButton;
pButton = (CButton*) GetDlgItem ( td.hWnd, IDC_BAUFNAHME) ;
if(pButton) {
   TRACE("gültiges Handle");
   pButton -> EnableWindow ( TRUE );
}



Wenn das Handle net funtzt, nimm das Handle von Create Funktion des Fensters in WinMain

mfg mike
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
06.03.2003, 16:30 Uhr
~Micha
Gast


Hi Mike ,

leider funktioniert es nicht ich habe immer noch den Abbruch.
Welches Handle von create Funktion meinst du ??

Ich habe eine andere Überlegung kann es sein daß die Funktionen
GetDlgItem (...) verschieden sind und ich falsch caste oder zuweise ?
CWnd oder CWindow

Danke nochmals Micha.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
06.03.2003, 16:42 Uhr
~Micha
Gast


Es hat funktioniert hier die Lösung für alle die interesiert sind


Code:
   //Aufnahme Button wieder sichtbar machen.
   HWND  hpFC ;
   hpFC = GetDlgItem ( td.hWnd, IDC_BAUFNAHME) ;
   EnableWindow ( hpFC, TRUE ) ;



Danke nochmals Micha.
 
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: