Kleines Tool - Probleme mit Schaltflächen
-
Hallo Leute,
ich versuche ein kleines Tool zu basteln, dass Daten aus einer Datei lesen soll und mir in einer Listbox anzeigen.
Dazu habe ich bis jetzt 3 Schaltflächen verwendet. Für den Test, wollte ich, dass die Schaltfläche "Speichern" das kleine Programm beendet.
Aber ich kann drücken so viel ich will.#include <windows.h> #include <exception> #define ID_ladedaten 1001 // Button: Lade Daten aus Mikrokontroller #define ID_speichern 1002 // Button: Speicher geladene Daten #define ID_listbox 1003 // Ausgabeliste fuer die IDs, die vom mC aufgezeichnet wurden #define ID_about 1004 // Button: about bool Running = true; LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WM_CREATE: { CreateWindowA("button", "Daten Laden", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 10, 10, 100, 40, hwnd, (HMENU)ID_ladedaten, ((LPCREATESTRUCT)lParam)->hInstance, NULL); CreateWindowA("button", "Speichern", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 120, 10, 100, 40, hwnd, (HMENU)ID_speichern, ((LPCREATESTRUCT)lParam)->hInstance, NULL); CreateWindowA("button", "Projekt", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 230, 10, 100, 40, hwnd, (HMENU)ID_about, ((LPCREATESTRUCT)lParam)->hInstance, NULL); CreateWindowA("listbox", NULL, WS_CHILD | WS_VISIBLE | LBS_STANDARD ^ LBS_SORT | LBS_HASSTRINGS, 10, 60, 300, 500, hwnd, (HMENU)ID_listbox, ((LPCREATESTRUCT)lParam)->hInstance, NULL); } case WM_KEYDOWN: switch(wParam) { case VK_ESCAPE: SendMessage(hwnd, WM_CLOSE, 0, 0); break; } case WM_COMMAND: { if (lParam == (LPARAM)ID_speichern) // hwnd vom button { if (HIWORD(wParam) == BN_CLICKED) // id vom button SendMessage(hwnd, WM_CLOSE, 0, 0); // was der dabei machen soll, z.b. daten auslesen } } break; case WM_CLOSE: { DestroyWindow(hwnd); return TRUE; } break; case WM_DESTROY: { Running = false; PostQuitMessage(0); return 0; } break; } return DefWindowProc(hwnd, msg, wParam, lParam); }Sieht jemand meinen Fehler?
-
Doku lesen...
if ( (HIWORD(wParam) == BN_CLICKED) && (LOWORD(wParam) == ID_speichern) ) { SendMessage(hwnd, WM_CLOSE, 0, 0); }ADD: Siehe:
http://msdn2.microsoft.com/en-us/library/ms673346.aspx
-
Danke.
Mir wurde der WM_Command Codeschnippsel so vorgelegt, dachte es liegt vielleicht an meiner ID zuwiesung oder so.