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.


Anmelden zum Antworten