API unter XP?
-
Der Petzold ist gar nicht so gut wie er immer beschrieben wird.

Nen anderes Beispiel ist sein UpdateWindow nach ShowWindow das jetzt super viele Leute wahrscheinlich da abgeguckt haben. Total sinnlos.
-
habe ihn nicht gelesen, afaik macht das auch keinen sinn den es wird sowieso neugezeichnet

-
antipetzold schrieb:
Der Petzold ist gar nicht so gut wie er immer beschrieben wird.

Nen anderes Beispiel ist sein UpdateWindow nach ShowWindow das jetzt super viele Leute wahrscheinlich da abgeguckt haben. Total sinnlos.
Wobei das afaik auch irgendeinen Sinn hatte *nachdenk ob die Sachlage den Aufwand zum Bücherregel zu gehen rechtfertigt*
Wenn du hier unter XP einen Fehler bekommst, liegts an deiner WNDCLASS, lass die mal sehen - und verwende doch bitte WNDCLASSEX und RegisterClassEx

MfG SideWinder
-
miller_m schrieb:
blödsinn die fehlermeldung, so etwas ist keine vernüftige fehlerabfangung.
vielleicht trifft das oft zu, kann ich nicht bestätigen, aber einfach dieses
vorrauszusetzen ist falsch.
dazuEr sagt selbst, dass in seinen Beispielen die Fehlerabfrage absolut minimal ist, um nicht vom Lernziel des Programms abzulenken. Seine Argumentation ist, dass Windows - sollte RegisterClass tatsächlich bei so einem Minimalbeispiel fehlschlagen - sowieso bereits den Bach runter ist. Ausnahme ist hier die Möglichkeit, dass das Programm mit UNICODE übersetzt wurde und daher unter Win <= 98 (ausser NT-Linie) wegen mangelnder Unterstützung nicht ausgeführt werden kann. Unter XP sollte das aber in der Tat funktionieren...
-
*nachdenk ob die Sachlage den Aufwand zum Bücherregel zu gehen rechtfertigt*
lohnt sich bestimmt. geh schonmal los.

-
An welcher Stelle im Petzold steht denn das?
Hab' kein Bock alles zu durchsuchen, dann schau ich mir das auch mal an.
-
SideWinder schrieb:
Wenn du hier unter XP einen Fehler bekommst, liegts an deiner WNDCLASS, lass die mal sehen - und verwende doch bitte WNDCLASSEX und RegisterClassEx

Dann liegt es wohl mindestens an den beiden.
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { static WCHAR szAppName[] = "Überwachung"; HWND hwnd ; MSG msg ; WNDCLASSW wndclass ; wndclass.style = CS_HREDRAW | CS_VREDRAW ; wndclass.lpfnWndProc = WndProc ; wndclass.cbClsExtra = 0 ; wndclass.cbWndExtra = 0 ; wndclass.hInstance = hInstance ; wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ; wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ; wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ; wndclass.lpszMenuName = NULL ; wndclass.lpszClassName = szAppName ; if (!RegisterClass (&wndclass)) { // UNICODE-Compilierung ist die einzige realistische Fehlermöglichkeit MessageBox (NULL, TEXT ("Programm arbeitet mit Unicode und setzt Windows NT voraus!"), szAppName, MB_ICONERROR) ; return 0 ; } hwnd = CreateWindow (szAppName, //etc //ect //etc while (GetMessage (&msg, NULL, 0, 0)) { TranslateMessage (&msg) ; DispatchMessage (&msg) ; } return msg.wParam ; }PS: ShowWindow() und UpdateWindow() sind nicht mit von der Partie...(da ich kein sichtbares Fenster habe) *g*
Gruss Thomas
-
RegisterClass mit WNDCLASS nicht WNDCLASSW
-
1. Niemals WCHAR verwenden, Unicode-Kompatibel wird man am besten mit TCHAR - so kann mans im Notfall auch noch für ASCII compilieren.
2. Wie bereits gesagt verwende WNDCLASS und nicht WNDCLASSW (bzw. Warum nicht jeweils die EX-Version?)
3. Wenn schon UNICODE dann bitte auch Strings als solche kennzeichnen:// so mit tchar: TEXT("String") // zumindest aber: L"String"MfG SideWinder
-
Oje, ich glaub, ich habe alle an der Nase rumgeführt, was "meine" Fehlermledung betrifft. Das Problem besteht darin, dass ich mit .NET arbeite, und nicht mit 6.0. Wenn ich nämlich ein neues Projekt erstelle, und den Code aus dem Beispiel von Petzold reinkopiere, läuft es...
Ganz fettes Sorry!!
Thomas