Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » 2 Fenster

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 ] > 2 <
010
11.04.2004, 18:20 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Hast du die Fensterklasse2 registriert?

Ansonsten zeig mal den Code, ich find meine Glaskugel nämlich grad nicht
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
11.04.2004, 19:33 Uhr
RedEagle




C++:
int WINAPI WinMain( HINSTANCE hThisInstance, HINSTANCE, PSTR, int nFunsterStil)
{

char szName[]  = "Fensterklasse";
char szName1[] = "Fensterklasse1";

HBRUSH MyBrush = CreateSolidBrush(RGB(0,150,255)); //Eigene BG-Color

WNDCLASS wc, wc1;

wc.style         = CS_HREDRAW | CS_VREDRAW; //CS = Class Style
wc.lpfnWndProc   = WndProc;
wc.cbClsExtra    = 0;
wc.cbWndExtra    = 0;
wc.hInstance     = hThisInstance;
wc.hIcon         = LoadIcon(NULL, IDI_WINLOGO);
wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = MyBrush;//(HBRUSH) COLOR_BACKGROUND;
wc.lpszMenuName  = NULL;
wc.lpszClassName = szName;


wc1.style         = CS_HREDRAW | CS_VREDRAW; //CS = Class Style
wc1.lpfnWndProc   = WndProc1;
wc1.cbClsExtra    = 0;
wc1.cbWndExtra    = 0;
wc1.hInstance     = hThisInstance;
wc1.hIcon         = LoadIcon(NULL, IDI_WINLOGO);
wc1.hCursor       = LoadCursor(NULL, IDC_ARROW);
wc1.hbrBackground = MyBrush;//(HBRUSH) COLOR_BACKGROUND;
wc1.lpszMenuName  = NULL;
wc1.lpszClassName = szName1;
  
  
   RegisterClass (&wc);
  
   hwnd = CreateWindow  (szName, "Hauptmenue",  WS_OVERLAPPEDWINDOW, 10, 10, 150, 360, NULL, NULL, hThisInstance, NULL);
   hwnd1= CreateWindow  (szName1 , "Office",    WS_OVERLAPPEDWINDOW, 50, 50, 150, 360, NULL, NULL, hThisInstance, NULL);
  

ShowWindow (hwnd1, nFunsterStil);
UpdateWindow (hwnd1);

ShowWindow   (hwnd, nFunsterStil);
UpdateWindow (hwnd);

//Nachrichtenschleife
MSG msg;
     while (GetMessage(&msg, NULL, 0, 0))
     {
      TranslateMessage(&msg);
      DispatchMessage (&msg);
     }
return msg.wParam;
}



Das ist jetzt die Kurtzform mit 2 Fensetrn (normal währen es 13, aber das ist alles nach dem selben Prinzip

PS.: Weiß nicht ob ich die Registriet habe (weiß nicht wie man das macht)
--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
11.04.2004, 19:36 Uhr
RedEagle



Fehler gefunden, es lag an der regestrierung

Nächstes Problem:
Wenn ich 1 Fenster schließe, werden alle geschlossen wie kann ich das verhindern


C++:
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
static HWND hwndButton1, hwndButton2, hwndButton3, hwndButton4, hwndButton5,
             hwndButton6, hwndButton7, hwndButton8, hwndButton9, hwndButton10,
             hwndButton11, hwndButton12, hwndButton13;

  
  switch(message)
  {
   case WM_PAINT : hdc = BeginPaint (hwnd, &ps);
                    SetTextColor(hdc, RGB(25 , 25 , 200));
                    SetBkColor  (hdc, RGB(0  , 150, 255));
                    TextOut(hdc, 30, 20, "Hauptmenue", 10); //device context, x, y, string, string-Länge
                   EndPaint (hwnd, &ps);
                   return 0;
  
   case WM_CREATE : hwndButton1  = CreateWindow("button", schaltfl_01.c_str(), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 19,  50, 110, 20, hwnd, (HMENU)1, (HINSTANCE) GetWindowLong (hwnd, GWL_HINSTANCE), NULL);
                    
                    hwndButton13 = CreateWindow("button", schaltfl_13.c_str(), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 19, 300, 110, 20, hwnd, (HMENU)13, (HINSTANCE) GetWindowLong (hwnd, GWL_HINSTANCE), NULL);
                    return 0;
  
   case WM_COMMAND :
                    switch(LOWORD(wParam))
                    {
                     case  1 : ShowWindow(hwnd1, SW_NORMAL);
                               UpdateWindow(hwnd1);                              
                               break;

                    
                                
                     case 13 : PostQuitMessage(0);
                               return 0;
                    }
                    break;
                  
   case WM_DESTROY : PostQuitMessage(0);
                     return 0;
  
  }

return DefWindowProc (hwnd, message, wParam, lParam);
}


////////////////////////////////////////////////////////////////////////////////
/// 1 Office

LRESULT CALLBACK WndProc1 (HWND hwnd1, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
static HWND hwndButton1, hwndButton2, hwndButton3, hwndButton4, hwndButton5,
             hwndButton6, hwndButton7, hwndButton8, hwndButton9, hwndButton10,
             hwndButton11, hwndButton12, hwndButton13;

  switch(message)
  {
   case WM_PAINT : hdc = BeginPaint (hwnd1, &ps);
                          SetTextColor(hdc, RGB(25 , 25 , 200));
                          SetBkColor  (hdc, RGB(0  , 150, 255));
                          TextOut     (hdc, 30, 20, "Office", 6);
                         EndPaint   (hwnd1, &ps);
                         return 0;

   case WM_CREATE : hwndButton13 = CreateWindow("button", schaltfl_13.c_str(), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 19, 300, 110, 20, hwnd, (HMENU)13, (HINSTANCE) GetWindowLong (hwnd1, GWL_HINSTANCE), NULL);
                    return 0;
  
   case WM_COMMAND :
                    switch(LOWORD(wParam))
                    {
                     case 13 : PostQuitMessage(0);
                               return 0;
                    }
                    break;
                    
   case WM_DESTROY : PostQuitMessage(0);
                     return 0;
  }

return DefWindowProc (hwnd1, message, wParam, lParam);
}


--
MFG RedEagle

Dieser Post wurde am 11.04.2004 um 19:36 Uhr von RedEagle editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
11.04.2004, 20:32 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Du schließt nicht nur das Fenster, sondern du sagst Windows das es dein Programm beenden soll (PostQuitMessage)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
11.04.2004, 20:50 Uhr
RedEagle



Und wie sage ich zu Windows "Schließ nur das eine Fenster"???
--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
11.04.2004, 21:02 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Ich glaube du hast das Prinzip nicht richtig verstanden, WM_DESTROY wird gesendet wenn das Fenster bereits "zerstört" wird.
Windows teilt dir nur mit das dies geschieht und du hast die Möglich dabei noch etwas zu tun indem du WM_DESTROY abfängst und deinen Code darein schreibst. Indiesem Fall sagst du das Windows dein Programm beenden soll wenn das Fenster "zerstört" wird.
Du musst also nicht sagen das es geschlossen wird, da das von alleine geschieht

Dieser Post wurde am 11.04.2004 um 21:03 Uhr von Guybrush Threepwood editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
11.04.2004, 21:55 Uhr
RedEagle



also anstatt
case WM_DESTROY : PostQuitMessage(0);
return 0;

kann ich dann

case WM_DESTROY : return 0;

schreiben, oder?

Auf jeden fall danke für die Hilfe
--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
11.04.2004, 22:01 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Wenn du da nichts machen willst, brauchst du es auch nicht abzufangen.
Also lass den ganzen case Zweig einfach weg.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ 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: