Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Problem mit statics

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
19.02.2005, 11:12 Uhr
RedEagle



Hi
Ich hab 30 STATIC-Elemente:

C++:
int i=0;
int y=137;
        
for(i=0; (i<iMaxEintrage)&&(i<30); i++)
{
  if(Liste[i].iStatus == 1) hIcon[i] = LoadImage (GetModuleHandle (NULL), "bmp1.bmp", IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR | LR_LOADFROMFILE);

  else if(Liste[i].iStatus == 2) hIcon[i] = LoadImage (GetModuleHandle (NULL), "bmp2.bmp", IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR | LR_LOADFROMFILE);

  else if(Liste[i].iStatus == 3) hIcon[i] = LoadImage (GetModuleHandle (NULL), "bmp3.bmp", IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR | LR_LOADFROMFILE);

  else hIcon[i] = LoadImage (GetModuleHandle (NULL), "bmpE.bmp", IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR | LR_LOADFROMFILE);

  hwndStatic[i] = CreateWindow("STATIC", "", WS_CHILD | WS_VISIBLE | SS_BITMAP, 20, y, 20, 13, hWnd, (HMENU)i, (HINSTANCE) GetWindowLong (hWnd, GWL_HINSTANCE), NULL); //(HMENU)i damit ich bei WM_COMMAND die Punke 0-29 abfragen kann

  SendMessage(hwndStatic[i], STM_SETIMAGE, (WPARAM) IMAGE_BITMAP, (LPARAM)(HANDLE) hIcon[i]);
  y+=15;
}



Mein WM_COMMAND:

C++:
case WM_COMMAND:
{
   switch(LOWORD(wParam)) //Wenn auf ein Icon geklickt wurde:
   {
    case  0: ChangeEintragStatus( 0, hwndStatic[ 0], hIcon[ 0]); break;
    case  1: ChangeEintragStatus( 1, hwndStatic[ 1], hIcon[ 1]); break;
    case  2: ChangeEintragStatus( 2, hwndStatic[ 2], hIcon[ 2]); break;
    //...
    case 28: ChangeEintragStatus(28, hwndStatic[28], hIcon[28]); break;
    case 29: ChangeEintragStatus(29, hwndStatic[29], hIcon[29]); break;
   }
   break;
}



Mein ChangeEintragStatus(29, hwndStatic[29], hIcon[29]);:

C++:
void ChangeEintragStatus(int iEintrag, HWND hwndStatic, HANDLE hIcon)
{
int oldStatus = Liste[iEintrag].iStatus;
  
  if(oldStatus == 1)
  {
    Liste[iEintrag].iStatus = 2;
    hIcon = LoadImage(GetModuleHandle (NULL), "bmp2.bmp", IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR | LR_LOADFROMFILE);
  }
  else if(oldStatus == 2)
  {
    Liste[iEintrag].iStatus = 3;
    hIcon = LoadImage(GetModuleHandle (NULL), "bmp3.bmp", IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR | LR_LOADFROMFILE);
  }
  else if(oldStatus == 3)
  {
    Liste[iEintrag].iStatus = 1;
    hIcon = LoadImage(GetModuleHandle (NULL), "bmp1.bmp", IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR | LR_LOADFROMFILE);
  }
  
SendMessage(hwndStatic, STM_SETIMAGE, (WPARAM) IMAGE_BITMAP, (LPARAM)(HANDLE) hIcon);
}



Wenn ich jetzt auf eins der 30 STATICs klicke, sollen Das sein Symbol ändern.
Aber leider passiert nichts, wenn ich Draufklicke.
Was ist Falsch??
--
MFG RedEagle

Dieser Post wurde am 19.02.2005 um 11:13 Uhr von RedEagle editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
19.02.2005, 11:58 Uhr
RedEagle



Fehler gefunden: SS_NOTIFY musste noch übergeben werden (Warum eigentlich?? Muss man bei anderen Sachen doch auch nicht !?!?!?)

C++:
hwndStatic = CreateWindow("STATIC", "", WS_CHILD | SS_NOTIFY | WS_VISIBLE | SS_BITMAP,/*...*/);


--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
20.02.2005, 10:50 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


SS_NOTIFY heißt das es wenn man das bild anklickt eine nachricht senden soll, sonst tut er das nicht
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: