-
Gesamte Inhalte
9.912 -
Benutzer seit
-
Letzter Besuch
-
Tagessiege
3
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Beiträge von Klotzkopp
-
-
Dieses Sleep(1000) irritiert mich. Erzeugst Du das Event erst 1 Sekunde vor dem Setzen?
Du must sicherstellen, dass CreateEvent vor OpenEvent ausgeführt wird. Am besten erzeugts Du das Event gleich zu Beginn von Prozess 1. Prüf besser auch auf jeden Fall den Rückgabewert von OpenEvent (Bei Fehler: NULL)
-
Das Hauptfenster kannst Du zum Beispiel maximiert darstellen, indem Du in der CXYZApp::InitInstance() ein
m_nCmdShow |= SW_SHOWMAXIMIZED;
vor dem
pMainFrame->ShowWindow(m_nCmdShow);
pMainFrame->UpdateWindow();
...
einfügst.
Um das Kindfenster maximiert darzustellen, musst Du die ActivateFrame-Methode Deiner von CMDIChildWnd abgeleiteten Klasse überschreiben:
void CChildFrame::ActivateFrame(int nCmdShow)
{
nCmdShow = SW_MAXIMIZE;
CMDIChildWnd::ActivateFrame(nCmdShow);
}
-
Das ist nicht wirklich eine Schleife, weil auf jeden Fall nach dem ersten Lauf return 0 ausgeführt wird. Sollte vielleicht nur der Child-Prozess das return 0 machen, und der Parent-Prozess in der Schleife bleiben?
-
Die "0" bekommst Du nicht wirklich weg, wenn Dein Eingabefeld mit einer numerischen Variablen verknüpft ist.
Die Windows-übliche Vorgehensweise ist aber auch eigentlich die, dass man bei Fehleingaben die falsche Eingabe stehen lässt (damit der dumme User auch sieht, was er falsch gemacht hat ), aber die gesamte Eingabe selektiert. Dann wird bei einer neuen Eingabe die alte ersetzt.
CEdit* pEditCtrl = (CEdit*) GetDlgItem( IDC_EDIT );
pEditCtrl->SetFocus();
pEditCtrl->SetSel( 0, -1, TRUE ); // selektiert alles
[/code]Dabei musst Du für IDC_EDIT die Control-ID Deines Eingabefelds setzen. Wenn Du schon eine Kontrollvariable für den Eingabefeld hast, dann kannst Du dir den Kram mit GetDlgItem natürlich sparen.
Zweite Möglichkeit:
Wenn die erlaubten Werte sich durch Minimum und Maximum beschreiben lassen und sich im Laufe des Programms nicht verändern, dann kannst Du sie auch gleich im Klassenassistenten fest eintragen.
Das erspart Dir OnKillFocusxyz, und hat den Vorteil, dass Du keinen gültigen Wert eingeben musst, wenn Du das Programm nur beenden willst .
<FONT COLOR="#a62a2a" SIZE="1">[ 26. August 2001 11:12: Beitrag 1 mal editiert, zuletzt von Klotzkopp ]</font>
-
Wenn ein Tray Icon verschwindet, wenn man die Maus darüber bewegt, ist die Ursache in aller Regel, dass der Prozess, der Shell_NotifyIcon(NIM_ADD, &nid) aufgerufen hat, nicht mehr läuft, ohne vor dem Beenden Shell_NotifyIcon(NIM_DELETE, &nid) aufgerufen zu haben.
Die TASKBARCREATED-Message brauchst Du nur, wenn die Möglichkeit besteht, dass beim Aufruf von Shell_NotifiIcon der Taskbar-Prozess noch gar nicht läuft, z.B. wenn Du einen Service schreibst, der ohne eingelogten User läuft. Dieser Service muß dann mittels TASKBARCREATED wissen, wann der Tray zur Verfügung steht, um dann das Icon reinzusetzen.
Läuft das Programm, das das Icon erzeugt, noch, wenn Du mit der Maus über das Icon fährst und es verschwindet?
-
-
Zwei kleine Änderungen zu Hasi Xs Vorschlag:
Mit Nullen auffüllen (hängt davon ab, wie viele Stellen die ID maximal haben soll), z.B.:
sprintf(filename,"c:\\trace-%05d.txt",m_iLid);
für fünfstellige IDs. Bewirkt, dass die Dateien besser sortiert werden können.
Außerdem deklarierst Du filename besser als:
char filename[ 14 + Anzahl ID-Stellen ];
-
Hi Gruft!
Hast Du vielleicht statt einer Konsolenanwendung eine Win32-Anwendung erstellt?
-
Hallo!
An die Länge der Nachricht kommst du mit:
pBuf[0] + 256 * pBuf[1]
oder
*((unsigned short*) pBuf)
Letzteres klappt aber nur auf einer LittleEndian-Maschine.
c++ - ungültige eingabe abfangen (int > char)
in C und C++
Geschrieben
@Crush:
Das Problem dabei ist allerdings, dass die Exception auch dann geworfen wird, wenn der Benutzer Null eingibt.
@Elmo:
Wenn der Benutzer einen oder mehrere Buchstaben eingibt, bekommt Dein int den Wert 0.
Wenn Null keine gültige Eingabe ist, dann prüf einfach den Wert nach der Eingabe und brich gegebenenfalls ab.
Wenn Null ein erlaubter Wert sein soll, dann liegt der Fehler an einer anderen Stelle in Deinem Programm. Was machst Du mit der eingegebenen Zahl?