Nightfall
-
Gesamte Inhalte
76 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Beiträge von Nightfall
-
-
Hi,
bin seit dem Januar 2007 FIAE-Azubi und lerne auch C++ im Betrieb. Am Anfang hatte ich auch keine Ahnung und dachte schon ich hätte mit der Ausbildung einen Fehler gemacht.
Aber je mehr ich probiert und programmiert habe desto mehr hab ich verstanden.
Also nicht gleich die Flinte ins Korn werfen.
Ich bin auch überhaupt nicht der Typ der sich Zuhause hinsetzt und nen C++ Buch ließt. ^^
Vorkenntnisse hatte ich auch kaum.
In welcher Entwicklungsumgebung Programmierst du?
Gruß
-
Mal ne Frage: Hat einer von euch Mathe in der Berufsschule?
Ich hab das Fach nicht und brauche es jeden Tag auffer Arbeit...
Kurz info:
Bin AE Azubi.
-
Habs selbst herausgefunden.
-
Hi Leute,
ich stehe vor einem Problem. Und zwar hab ich ein Picture Control auf meinem Dialog und möchte nun wissen wie Groß der Abstand zwischen dem Control und dem Dialog ist. (links und oben)
Eine passende Methode hab ich bisher aber noch nicht gefunden.
Bin für jede Hilfe dankbar.
Gruß,
Yasin
-
Wo Lordy Recht hat, hat er Recht. ^^
-
ich habe keinen restlichen Code.
Hast du es auch in einer Win32-Library geschrieben und dann in einem MFC Projekt aufgerufen?
Irgendwie war der Edit Button nicht da...
Ich muss mich ein wenig korigieren.
Es muss keine Win32-Library sein.
Sondern eine Win32-Static-Library.
-
ich habe keinen restlichen Code.
Hast du es auch in einer Win32-Library geschrieben und dann in einem MFC Projekt aufgerufen?
-
Oh man wie konnte ich das übersehen!?
Danke für den Hinweis.
Es funktioniert leider trotzdem nicht.
Der gleiche Fehler tritt auf.
Wenn ich den Button so definiere dann gehts: #define MyButton 0xFfff
-
GetLastError() gibt "0" zurück.
-
-
CreateDialogIndirect gibt doch ein HWND zurück.
Und darin steht: unused=???
Oder was möchtest du wissen? :confused:
-
Im Handle welches CreateDialogIndirect als Return wert hat steht: CXX0030: Fehler: Ausdruck kann nicht ausgewertet werden.
GetLastError gibt 0 zurück.
-
Das ist eine denkbar schlechte Wahl. Dieser Wert (die höchstmögliche ID) ist normalerweise reserviert für Static Controls. Nimm mal etwas kleineres, z.B. 1000.
Ich habe es mit einigen kleineren Werten ausprobiert.
Das Problem ist das der Dialog dann nicht mehr in meiner MFC Anwendung aufgerufen wird.
-
Der Rückgabetyp ist immer noch falsch. Den darfst du nicht einfach ändern.
wäre mein WinProc dann so korrekt?
int* CALLBACK OurWinProc(HWND h_Dialog, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_COMMAND: { switch(LOWORD(wParam)) { case MyButton: ::EndDialog(h_Dialog, NULL); } } } return FALSE; }
Bekomme ich den nicht durch diese Zeile?Nicht ganz. Das untere WORD von wParam enthält die ID.switch(LOWORD(wParam))
MyButton habe ich so definiert:Welche ID hat der Button denn überhaupt? Welchen Wert erwartest du? Sprich: Welchen Wert hat MyButton?#define MyButton 0xFfff
Deswegen erwarte ich den Wert: 65535
-
Außerdem kannst du die doch direkt bei CreateDialogIndirect im letzten Parameter übergeben und dir somit den SetWindowLong Aufruf sparen.
Ist erledigt. ^^
Und es wäre natürlich auch gut, wenn du in dem relevanten case-Block auch etwas tun würdest. Schließen kannst du den Dialog mittels EndDialog.Hab ich. ^^
So der WinProc sieht nun so aus:
void OurWinProc(HWND h_Dialog, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_COMMAND: { switch(LOWORD(wParam)) { case MyButton: ::EndDialog(h_Dialog, NULL); } } } }
Jetzt gibts nur noch ein Problem.
Wenn ich den Button Klicke dann ist wParam = 1234
wParam müsste aber eigentlich die ID des Buttons haben.
Oder habe ich grade nen Denkfehler?
-
Hier Antworten auf eure Fragen und der neueste Stand:
Wieso nicht? Du erstellst ihn doch. Zeig doch mal, wie du den Button erstellst.Der Button schickt Nachrichten an sein Elternfenster, also deinen Dialog. Du gibt aber bei CreateDialogIndirect gar keine DialogProc an, also kannst du auch nicht die Nachrichten des Buttons empfangen.Hast du denn den Code oben von dir entsprechend angepasst und eine entsprechende DialogProc übergeben?Also die ID des Buttons kenne ich jetzt dank dem Tipp von Guybrush (danke nochmal dafür).
So erstelle ich den Dialog mit dem Button:
Das Strukt was man dafür brauch:
MyStruct ms = { { WS_CAPTION | WS_VISIBLE | DS_CENTER, 0, 1, 10, 10, 100, 100 }, 0, // 0x0000 -- Kein Menü 0, // 0x0000 -- Standart Dialog Klasse L"Test", // title: "Test" { WS_VISIBLE | WS_CHILD | WS_BORDER, 0, 1, 1, 50, 50, 1234 }, MyButton, // ID des Buttons. 0x0080, // Klassen ID von Buttons L"Test", // Button Beschriftung 0 };
Und hier der Create mit dem zugehörigen WinProc aufruf:m_hMyDialog = ::CreateDialogIndirect(NULL, &ms.mHeader, NULL, NULL); ::SetWindowLong(m_hMyDialog, GWL_WNDPROC, (LONG)OurWinProc); ::SetForegroundWindow(m_hMyDialog);
Und hier mein WinProc:void OurWinProc(UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_COMMAND: { switch(LOWORD(wParam)) { case MyButton: ; } } } }
-
Das Funktioniert leider nicht.
Es kommt keine Msg die WM_COMMAND ist.
Aber der Tipp mit der ID war gut. Danke!
Hat noch jemand nen vorschlag?
-
Hi.
Vielen Dank für eure Antworten!
Aber leider führen beide Lösungen nicht zu meinem Ziel.
Hier eine kleine Erklärung warum:
LRESULT CForeignEditorDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam){
if ( HIWORD(wParam) == BN_CLICKED && LOWORD(wParam) == IDC_ID )
CDialog::OnOK( );
return CDialog::WindowProc(message, wParam, lParam);
}
IDC_ID ist die ID deines Buttons.
Ich kenne die ID des Buttons nicht.
Warum so umständlich?Code:
BOOL CALLBACK DialogProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (uMessage)
{
case WM_CLOSE:
EndDialog(hwnd, 0);
return FALSE;
default:
return FALSE;
}
}
Der Button schickt kein WM_CLOSE.
Der Button schickt nix. ^^
Höchstens ein: Button_Click Event.
Sorry falls ich es ein wenig umständlich formuliert habe.
Ich möchte nur herausfinden wann mein Button geklickt wurde.
Er wurde dynamisch erzeugt. (Der Dialog auf dem der Button ist auch.)
Die ID des Buttons ist die nächst mögliche. (0xFfff)
Gruß,
Yasin
-
Hi!
Ich habe im Januar 2007 nach 5 Bewerbungen mit meiner Ausbildung zum FIAE angefangen und ich denke das man das mit dem höheren Schulabschluss nicht verallgemeinern kann.
Wir haben damals in der Schule das Thema Bewerbung nur angeschnitten. Aber nicht vertieft.
In der Berufsfachschule wiederum wurde das Thema "Wie Bewerbe ich mich richtig" sehr lange und intensiv durchgenommen.
Ich denke das es einfach von Schule zu Schule unterschiedlich ist.
Was ich jedem empfehlen kann ist sich kostenlose Broschüren zu besorgen.
Es kann aber auch ein gang zum Berufsberater nicht schaden.
Gruß,
Yasin
-
Hallo SwordMaster.
Guck mal in meinen Thread rein: http://forum.fachinformatiker.de/c-compiler-ides-apis/112699-event-dynamisch-erzeugten-dialoges.html
Da hattest du mir auf meine Frage geantwortet. (danke dafür ^^)
In dem Thread steht mein Code wie ich einen Dialog Dynamisch in einer Win32-static library erzeuge. Meine Klasse "CTestClass" ist von "CDialog" abgeleitet. Den MFC header hab ich beim erstellen des Projektes vom Wizard einbinden lassen.
Wenn du noch Fragen hast dann schreib mir.
Gruß,
Yasin
-
Hi Leute,
ich habe ein Problem. Und zwar soll ich in einem MFC Projekt einen nicht auf Ressourcen basierenden Dialog aufrufen, der in einer statischen Win32-Bibliothek Programmiert wird. Auf dem Dialog soll auch noch ein Button sein.
Bis dahin isses kein Problem.
Aber nun soll sich der dynamische Dialog schließen sobald ich auf den Button drücke.
Nun zu meiner Frage:
Wie kann ich auf das Event des Buttons reagieren?
Hier mein Code:
So erzeuge ich den Dialog in der Win32-static library:
Das struct was ich verwende:
struct MyStruct { DLGTEMPLATE mHeader; #pragma pack(2) WORD mNoMenu; // 0x0000 -- no menu WORD mStdClass; // 0x0000 -- standard dialog class wchar_t mTitle[5]; // title: "Test" #pragma pack(4) DLGITEMTEMPLATE mItem; #pragma pack(2) WORD mFfff; // 0xFFFF -- next is standard class ID WORD mCtrlClassId; // 0x0080 -- class ID for button wchar_t mText[5]; // text (not used for listbox) WORD mNoData; // 0 #pragma pack(4) };
Das erzeugen und aufrufen des Dialoges:void CTestClass::ShowDialog(long lState) { MyStruct ms = { { WS_CAPTION | WS_VISIBLE | DS_CENTER, 0, 1, 10, 10, 100, 100 }, 0, // no menu 0, // standard dialog class L"Test", // text { WS_VISIBLE | WS_CHILD | WS_BORDER, 0, 1, 1, 50, 50, 1234 }, 0xFFFF, // next is standard class ID 0x0080, // 0x0080 -- class ID for button L"Test", // text 0 }; if (SW_SHOW == lState) { m_hMyDialog = ::CreateDialogIndirect(NULL, &ms.mHeader, NULL, NULL); ::SetForegroundWindow(m_hMyDialog); } }
In meinem MFC Projekt schreibe ich dann einfach:CTestClass TestClass; TestClass.ShowDialog(SW_SHOW);
Bin für jede Hilfe dankbar!
-
beide tage sind bei uns halbe arbeitstage.
-
Moin,
soviel ich weiß sind die Zwischenprüfungen von SI und AE gleich. (angabe ohne gewähr)
Hier mal eine Seite auf der man Abschluss- und Zwischenprüfungen bestellen kann.
Frag deinen Ausbilder am besten mal ob die Firma die bezahlen würde.
der link: U-Form Verlag Shop - Fit für Zwischenprüfung und Abschlussprüfung
Gruß,
Nightfall
-
Hi,
welches Buch ich dir empfehlen kann ist: "Jetzt lerne ich C++" von Jesse Liberty ISBN: 3-8272-5340-3.
In dem Buch gibt es zwar nur Win-32 Anwendungen aber es ist alles ganz gut beschrieben.
Kannst es dir ja mal aus der Bücherei oder so ausleihen. (haben Büchereien überhaupt solche Bücher? ^^)
Ich selber benutze das Buch gerne um etwas nachzuschlagen.
Gruß,
Nightfall
Wie wichtig ist Mathe in der Ausbildung zum AE?
in Ausbildung im IT-Bereich
Geschrieben
Hi,
das ist von Betrieb zu Betrieb unterschiedlich.
Ich zum Beispiel komme im Betrieb sehr oft mit Mathe in berührung.
Wobei es grösstenteils um Vektoren usw. geht.
Was ich dazu sagen muss ist das ich an Maschinen programmiere.
Informier dich am besten darüber was dein Wunschbetrieb herstellt.
Ist es Software für Maschinen dann mach dich auf Mathe gefasst.
Wenn es eher kaufmännische Software ist dann wirst du wahrscheinlich nicht so viel mit Mathe zu tun haben.
Gruß
Edit:
In der BBS haben wir kein Mathe. Brauchen nur die Grundlagen im Programmier-Unterricht.