Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Funktion - Programmstart

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 ] [ 2 ] [ 3 ] > 4 < [ 5 ]
030
05.07.2004, 14:05 Uhr
t10ottoo



Hehe, jo, das wäre eine Möglichkeit Aber da gibts auch nen Befehl/Funktion dafür, weiß nur nimmer wie die heißt, und ich find sie auch nicht mehr...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
031
05.07.2004, 14:09 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


SetWindowText
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
032
05.07.2004, 14:17 Uhr
t10ottoo



Danke, aber er zeigt es nicht an und den Befehl "UpdateData" kennt er nicht, weiß nicht warum:

C++:
UINT func(LPVOID arg)
{
    //Warten dass der Dialog gezeichnet ist und alle Initialisierungen abgeschlossen sind
    WaitForInputIdle(GetCurrentProcess(),INFINITE);
    CVorratsprogrammDlg vorrat;
    CProgressCtrl &progress =((CVorratsprogrammDlg*)((CVorratsprogrammApp*)AfxGetApp()->GetMainWnd()))->progress;
    progress.SetPos(0);
    progress.SetRange(0,100);
    progress.SetStep(1);
    while(progress.GetPos() < 100)
    {
        progress.StepIt();
        Sleep(10);
    progress.SetWindowText("Hallo");
    }

    HWND hDlg=(AfxGetApp()->GetMainWnd())->m_hWnd;

    ::PostMessage(hDlg,WM_USER+11,0,0);
    
    return 0;
}



Und dann noch ein Problem. Habe ja nun diese Zeile hier in die MessageMap eingefügt:

Code:
ON_MESSAGE(WM_USER+11,visibleAll)


Funktionier ja auch wunderbar, aber wenn ich nun den Klassen-Assistenten aufrufen will, dann kann ich keine Variablen den Steuerelementen mehr zuweisen. Sobald ich "CVorratsprogrammDlg" bei "Klassenname" auswähle, kommt ne Meldung:

Code:
Parser Fehler: Zahl oder Bezeichner erwartet.
Eingabezeile: "ON_MESSAGE(WM_USER+11,visibleAll)"


Tjo, wenn ich die Zeile aus der MessageMap rausnehme, kann ich Variablen zuweisen...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
033
05.07.2004, 14:19 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


progress.SetWindowText("Hallo"); wird wohl nicht funktionieren weil ein CProgressCtrl oder wie das teil heisst kein Text dastellen kann musst schon ein Editfeld oder eine Static verwenden...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
034
05.07.2004, 14:27 Uhr
t10ottoo



Nagut, dann habe ich nun ein Static-Feld mit dem Befehl:

C++:
vorrat.status_text = "Hallo";



vorrat ist die Variable für mein Dialog.
status_text ist die Variable für mein Static-Feld.
Aber Anzeigen tut er es immer noch nicht, liegt bestimmt daran, dass ich das UpdateData nicht verwenden kann...hmm...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
035
05.07.2004, 15:16 Uhr
~toxic
Gast


hi, greif doch direkt auf das control zu und nicht über eine membervariable, also:
C++:
vorrat->SetDlgItemText(IDC_STATIC1, "text");
// eventuell must du "vorrat" noch in deine dialogklasse casten

--
grusz
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
036
05.07.2004, 15:20 Uhr
t10ottoo



Wenn ich das mache, dann kommt ein "Debug Assertion Failed"-Error.

Was meinst du denn mit casten? Habe das schon so oft gelesen, konnte aber nie was damit anfangen *g* Isses das gleich, wie inkludieren, wenn ja, dann hab ich das gemacht...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
037
06.07.2004, 15:29 Uhr
~toxic
Gast


hi, na "vorrat" definierst ja mit "CDeinDialog vorrat;" oder ?
da mach halt nur:
C++:
((CDeinDialog*)vorrat)->SetDlgItemText(IDC_STATIC1, "text");
// oder
(CDeinDialog*)vorrat->SetDlgItemText(IDC_STATIC1, "text");
// oder
(CDialog*)vorrat->SetDlgItemText(IDC_STATIC1, "text");

so genau hab ichs jetzt nicht im kopf, einfach mal probieren.

casten ist eigentlich nichts anderes als einen "wert" in eine andere "form" zu bringen, zb.
C++:
int meinInteger = 4;
DWORD meinDWORD = 0;
// wenn man jetzt schreibt:
meinInteger = meinDWORD; // dann meckert der compiler
// also schreibt man:
meinInteger = (int)meinDWORD; // und castet somit den DWORD nach int

--
grusz
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
038
06.07.2004, 16:53 Uhr
t10ottoo



Hmm...das geht leider auch nicht, habe alles mögliche probiert, hier nochmal mit deinem die komplette Funktion:

C++:
UINT func(LPVOID arg)
{
    //Warten dass der Dialog gezeichnet ist und alle Initialisierungen abgeschlossen sind
    
    WaitForInputIdle(GetCurrentProcess(),INFINITE);
    CVorratsprogrammDlg vorrat;
    CProgressCtrl &progress =((CVorratsprogrammDlg*)((CVorratsprogrammApp*)AfxGetApp()->GetMainWnd()))->progress;
    progress.SetPos(0);
    progress.SetRange(0,100);
    progress.SetStep(1);
    while(progress.GetPos() < 100)
    {
        progress.StepIt();
        Sleep(10);
        (CVorratsprogrammDlg*)vorrat->SetDlgItemText(IDC_STATUS_TEXT, "text");
    }

    HWND hDlg=(AfxGetApp()->GetMainWnd())->m_hWnd;

    ::PostMessage(hDlg,WM_USER+11,0,0);
    
    return 0;
    
}


Dann kommen in der Zeile:

Code:
(CVorratsprogrammDlg*)vorrat->SetDlgItemText(IDC_STATUS_TEXT, "text");


folgende Fehler:

Code:
error C2819: Der Typ 'CVorratsprogrammDlg' hat keinen ueberladenen Elementoperator '->'
Der linke Teil von '->SetDlgItemTextA' muss auf Klasse/Struktur/Union zeigen


Wenn ich dann statt "->" ein "." mache, dann kommt nur noch ein Fehler:

Code:
error C2440: 'type cast' : 'void' kann nicht in 'class CVorratsprogrammDlg *' konvertiert werden



Ich bin schon am verzweifeln
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
039
06.07.2004, 17:04 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


äh ich kenn jetzt dein programm nicht richtig vermute mal so


C++:
GetDlgItem(IDC_STATUS_TEXT)->SetWindowText("text");




wenn du das teil aus deinem thread aufrufst musst du den pointer vom thread erst casten dann so


C++:
CVorratsprogrammDlg* dp=(CVorratsprogrammDlg*)arg;
dp->GetDlgItem(IDC_STATUS_TEXT)->SetWindowText("text");


--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] [ 2 ] [ 3 ] > 4 < [ 5 ]     [ 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: