Announcement

Collapse
No announcement yet.

Hintergrundfarbe des Parents ändern- ich verzweifele!

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Hintergrundfarbe des Parents ändern- ich verzweifele!

    Hallo. Ich bin auf dieses Forum gestossen, weil ich so etwas mit der WinApi rumspiele und , wie es sicher den meisten geht, habe ich ein kleines Problem mit der Nachrichtensteuerung:
    Mir fällt ainfach keine Lösung hierzu ein, daher hoffe ich hier auf ein einige Tipps ( und ich denke, ich habe nur was banales übersehen.........)
    Kurze beschreibung:
    Ein Fenster, parent, mit zwei Knöpfen und einem Edit, children, ABER NUR
    einer Nachrichtenfunktion, welche anhand des (HMENU) die Herkunft selektiert.
    Der erste Knopf soll beim Klicken die Hintergundfarbe des Fensters ändern,
    die BkColor der Caption auch.
    Allerdings klappt es ( die Stelle ist im Q-C markiert, einfach nicht:
    Bitte sehr, der Post des Q-C.
    Code:
    /* parent and children- windows: on a click the bg.color shall be 
       changed
    */
    #define STRICT
    #include<windows.h>
    #include<time.h>
    #include<stdlib.h>
    //-- preprocesing---------------------------------------------------------------
    const  UINT PM_CLRCHG = WM_APP+1;
    LRESULT CALLBACK MessFunc(HWND,UINT,WPARAM,LPARAM);
    const char szPaNa[] = "The parent window";
    
    //-- global funcs and vars------------------------------------------------------
    int WINAPI WinMain(HINSTANCE hiact,HINSTANCE hiprev,LPSTR cmdline,int showhow)
    {
                 
      MSG mess;
      WNDCLASS wcx;
      HWND hparentw;
      
      wcx.style = CS_HREDRAW | CS_VREDRAW;
      wcx.cbClsExtra = 0;
      wcx.cbWndExtra = 0;
      
      wcx.hInstance = hiact;
      wcx.lpfnWndProc = MessFunc;
      wcx.lpszClassName = szPaNa;
      wcx.lpszMenuName = NULL;
      
      wcx.hIcon = LoadIcon(NULL,IDI_EXCLAMATION);
      wcx.hCursor = LoadCursor(NULL,IDC_ARROW);
      wcx.hbrBackground = (HBRUSH)CreateSolidBrush(RGB(120,140,200));
      
      if(!RegisterClass(&wcx))
      {
        MessageBox(NULL,"Registration failed", "Error occured",MB_OK);
        return 0;  
      }
      
      hparentw = CreateWindow(szPaNa,"Fucking parent window",
                              WS_OVERLAPPEDWINDOW,
                              CW_USEDEFAULT,CW_USEDEFAULT,300,300,
                              NULL,
                              NULL,
                              hiact,
                              NULL
                              );
      ShowWindow(hparentw,showhow);
      UpdateWindow(hparentw);
      
      while(GetMessage(&mess,NULL,0,0)>0)
      {
        TranslateMessage(&mess);
        DispatchMessage(&mess);
      }  
      return mess.wParam;
    }
    LRESULT CALLBACK MessFunc(HWND mwinhan,UINT mcode, WPARAM wm_Wflags,LPARAM wm_Lflags)
    {
      RECT clrect;
      GetClientRect(mwinhan,&clrect);
      
      switch(mcode)
      {
        case WM_SIZE:
        { 
          
          //SendMessage(mwinhan,WM_CREATE,wm_Wflags);
        break;
        }
        case WM_CREATE:
        {
          HWND hchildb1 = CreateWindow("button","\"COLOR\"",
                                        WS_CHILD | WS_VISIBLE |BS_PUSHBUTTON,
                                        clrect.right/4-35,clrect.bottom/3, 70, 30,
                                        mwinhan,
                                        (HMENU)2,
                                        (HINSTANCE)GetWindowLong(mwinhan,GWL_HINSTANCE),
                                        NULL
                                      );
          HWND hchildb2 = CreateWindow("button","\"B/W\"",
                                        WS_CHILD | WS_VISIBLE |BS_PUSHBUTTON,
                                        clrect.right/2+35,clrect.bottom/3, 70, 30,
                                        mwinhan,
                                        (HMENU)3,
                                        (HINSTANCE)GetWindowLong(mwinhan,GWL_HINSTANCE),
                                        NULL
                                      );
          HWND hchilde1 = CreateWindow("edit","",
                                        WS_CHILD | WS_VISIBLE | ES_MULTILINE,
                                        
                                        clrect.right/4-35,clrect.bottom/2,(clrect.right/2+clrect.right/4)-6,100,
                                        mwinhan,
                                        (HMENU)4,
                                        (HINSTANCE)GetWindowLong(mwinhan,GWL_HINSTANCE),
                                        NULL
                                      );
        break;
        }
        case WM_COMMAND:
        {
          case WM_LBUTTONDOWN:
          {
            switch (LOWORD(wm_Wflags))
            {
              case 2:
              {
                SendMessage(mwinhan,WM_PAINT,0,1);
                
                
                
              break;
              }
              case 3:
              {
               MessageBox(NULL,"FUCK","YOU 2",MB_OK);
              break;
              }      
            break;
            }
          break;
          }
        break;
        }
            
        case WM_PAINT:
        {
           HDC hdevcon;
           PAINTSTRUCT paintinfo;           
           if(wm_Lflags ==1)
    //------------------------------------------------------------------------------
           {
              hdevcon = BeginPaint(mwinhan,&paintinfo);
              Rectangle(hdevcon,30,30,70,70);
              EndPaint( mwinhan,&paintinfo);
    //------------------------------------------------------------------------------
          }
         else
        {       
          
           const char szinfo[] = "Two button-children";
           hdevcon = BeginPaint(mwinhan,&paintinfo);
           SetBkMode(hdevcon,RGB(120,140,200));
           TextOut(hdevcon,clrect.right/4,clrect.bottom/8,szinfo,strlen(szinfo));      
           EndPaint( mwinhan,&paintinfo);
         } 
        break;
        }    
        case WM_DESTROY:
        {
          PostQuitMessage(0);
        break;  
        }
        
       return 0;
      }
      return DefWindowProc(mwinhan,mcode,wm_Wflags,wm_Lflags);
    }
Working...
X