Button grafik wechseln und wert in Textfile schreiben
-
Hallo Leute!
Habe ein Problem mit folgendem code!
Erst mal wie das ganze funktionieren soll:
Wenn man auf einen der Buttons klickt soll das Bild wechseln und ein Wert ("1") in ein Textfile geschriben werden ( wie geht das mit dem Wert schreiben? ).
Wenn man ein zweites mal draufklickt soll der Button wieder das erste Bild laden und einen andere Wert ("0") ins Textfile schreiben.Eigentlich ne ganz simple sache aber halt trozdem schwer wenn man sich noch nicht so mit Winapi auskennt

Das Problem das ich im moment habe, ist dass wenn ich auf einen der 3 Buttons klicke dann wechselt das bild, so wie es halt funktionieren soll.
Wenn ich nun ein zweites mal auf den selben Button klicke dann geht er auch wieder in seine ursprüngliches design zurück aber wenn man ein drittes mal daraufklickt macht er einfach nichts mehr...
Wie kann man das Programmieren, dass er nach jedem klick seine Grafick wechselt und den richtigen Wert in die Textdatei schreibt? Muss man da irgendwo ne schleife einbauen?#include <windows.h> #include <stdio.h> #include <stdlib.h> //#include <commctrl.h> /* Declare Windows procedure */ LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM); /* Make the class name into a global variable */ char szClassName[ ] = "WindowsApp"; int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil) { HWND hwnd; /* This is the handle for our window */ MSG messages; /* Here messages to the application are saved */ WNDCLASSEX wincl; /* Data structure for the windowclass */ /* The Window structure */ wincl.hInstance = hThisInstance; wincl.lpszClassName = szClassName; wincl.lpfnWndProc = WindowProcedure; /* This function is called by windows */ wincl.style = CS_DBLCLKS; /* Catch double-clicks */ wincl.cbSize = sizeof (WNDCLASSEX); /* Use default icon and mouse-pointer */ wincl.hIcon = LoadIcon (hThisInstance,"MYICON"); wincl.hIconSm = LoadIcon (hThisInstance,"MYICON"); wincl.hCursor = LoadCursor (NULL, IDC_ARROW); wincl.lpszMenuName = NULL; /* No menu */ wincl.cbClsExtra = 0; /* No extra bytes after the window class */ wincl.cbWndExtra = 0; /* structure or the window instance */ /* Use Windows's default color as the background of the window */ wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND; /* Register the window class, and if it fails quit the program */ if (!RegisterClassEx (&wincl)) return 0; /* The class is registered, let's create the program*/ hwnd = CreateWindowEx ( 0, /* Extended possibilites for variation */ szClassName, /* Classname */ "Zimmer", /* Title Text */ WS_SYSMENU | WS_MINIMIZEBOX, /* default window */ CW_USEDEFAULT, /* Windows decides the position */ CW_USEDEFAULT, /* where the window ends up on the screen */ 800, /* The programs width */ 600, /* and height in pixels */ HWND_DESKTOP, /* The window is a child-window to desktop */ NULL, /* No menu */ hThisInstance, /* Program Instance handler */ NULL /* No Window Creation data */ ); /* Make the window visible on the screen */ ShowWindow (hwnd, nFunsterStil); /* Run the message loop. It will run until GetMessage() returns 0 */ while (GetMessage (&messages, NULL, 0, 0)) { /* Translate virtual-key messages into character messages */ TranslateMessage(&messages); /* Send message to WindowProcedure */ DispatchMessage(&messages); } /* The program return-value is 0 - The value that PostQuitMessage() gave */ return messages.wParam; } /* This function is called by the Windows function DispatchMessage() */ LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { static HBITMAP hBitMap; static BITMAP bitmap; static HANDLE hBitMap1; static HWND hButton1; static HWND hButton11; static HANDLE hBitMap2; static HWND hButton2; static HANDLE hBitMap3; static HWND hButton3; PAINTSTRUCT ps; HDC hDC, hdcMem; switch(message) { case WM_CREATE: { hBitMap = (HBITMAP)LoadImage(0,"grafik/room.bmp",IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE|LR_LOADFROMFILE|LR_CREATEDIBSECTION); if(hBitMap==NULL) { MessageBox(hwnd,"Das Bild des Zimmers konnte nicht geladen werden!","Error",0); return -1; } GetObject (hBitMap, sizeof (BITMAP), &bitmap) ; //button licht1 hBitMap1= LoadImage (GetModuleHandle (NULL), "grafik/licht01.bmp", IMAGE_BITMAP,0, 0,LR_DEFAULTCOLOR | LR_LOADFROMFILE); hButton1 = CreateWindow("BUTTON", "", WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON|BS_BITMAP, 366, 184, 149, 196, hwnd, 0, GetModuleHandle (NULL), 0); SendMessage (hButton1, BM_SETIMAGE, (WPARAM) IMAGE_BITMAP,(LPARAM)(HANDLE) hBitMap1); //button licht2 hBitMap2= LoadImage (GetModuleHandle (NULL), "grafik/licht02.bmp", IMAGE_BITMAP,0, 0,LR_DEFAULTCOLOR | LR_LOADFROMFILE); hButton2 = CreateWindow("BUTTON", "", WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON|BS_BITMAP, 36, 157, 150, 96, hwnd, 0, GetModuleHandle (NULL), 0); SendMessage (hButton2, BM_SETIMAGE, (WPARAM) IMAGE_BITMAP,(LPARAM)(HANDLE) hBitMap2); //button licht3 hBitMap3= LoadImage (GetModuleHandle (NULL), "grafik/licht03.bmp", IMAGE_BITMAP,0, 0,LR_DEFAULTCOLOR | LR_LOADFROMFILE); hButton3 = CreateWindow("BUTTON", "", WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON|BS_BITMAP, 631, 357, 169, 146, hwnd, 0, GetModuleHandle (NULL), 0); SendMessage (hButton3, BM_SETIMAGE, (WPARAM) IMAGE_BITMAP,(LPARAM)(HANDLE) hBitMap3); } case WM_PAINT: { hDC = BeginPaint(hwnd, &ps); { } hdcMem = CreateCompatibleDC (hDC) ; SelectObject (hdcMem, hBitMap) ; BitBlt (hDC, 0, 0, bitmap.bmWidth, bitmap.bmHeight, hdcMem, 0, 0, SRCCOPY) ; DeleteDC (hdcMem) ; EndPaint (hwnd, &ps) ; return 0; } case WM_COMMAND: { if (lParam == (LPARAM)hButton1) { if (HIWORD(wParam) == BN_CLICKED) //button licht1 hBitMap1= LoadImage (GetModuleHandle (NULL), "grafik/licht1.bmp", IMAGE_BITMAP,0, 0,LR_DEFAULTCOLOR | LR_LOADFROMFILE); hButton1 = CreateWindow("BUTTON", "", WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON|BS_BITMAP, 366, 184, 149, 196, hwnd, 0, GetModuleHandle (NULL), 0); SendMessage (hButton1, BM_SETIMAGE, (WPARAM) IMAGE_BITMAP,(LPARAM)(HANDLE) hBitMap1); MessageBox(hwnd,"Licht1 ist eingeschalten!","Licht1",0); durchgang1 = 1; } if (lParam == (LPARAM)hButton2) { if (HIWORD(wParam) == BN_CLICKED) //button licht2 hBitMap2= LoadImage (GetModuleHandle (NULL), "grafik/licht2.bmp", IMAGE_BITMAP,0, 0,LR_DEFAULTCOLOR | LR_LOADFROMFILE); hButton2 = CreateWindow("BUTTON", "", WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON|BS_BITMAP, 36, 157, 150, 96, hwnd, 0, GetModuleHandle (NULL), 0); SendMessage (hButton2, BM_SETIMAGE, (WPARAM) IMAGE_BITMAP,(LPARAM)(HANDLE) hBitMap2); MessageBox(hwnd,"Licht2 ist eingeschalten!","Licht2",0); } if (lParam == (LPARAM)hButton3) { if (HIWORD(wParam) == BN_CLICKED) //button licht3 hBitMap3= LoadImage (GetModuleHandle (NULL), "grafik/licht3.bmp", IMAGE_BITMAP,0, 0,LR_DEFAULTCOLOR | LR_LOADFROMFILE); hButton3 = CreateWindow("BUTTON", "", WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON|BS_BITMAP, 631, 357, 169, 146, hwnd, 0, GetModuleHandle (NULL), 0); SendMessage (hButton3, BM_SETIMAGE, (WPARAM) IMAGE_BITMAP,(LPARAM)(HANDLE) hBitMap3); MessageBox(hwnd,"Licht3 ist eingeschaltet!","Licht3",0); } return 0; } case WM_CLOSE: { DestroyWindow(hwnd); return 0; } case WM_DESTROY: { DeleteObject (hBitMap); DeleteObject (hBitMap1); DeleteObject (hBitMap2); DeleteObject (hBitMap3); PostQuitMessage(0); return 0; } } return DefWindowProc(hwnd, message, wParam, lParam); }