Aktuelle Zeit: 23.10.2018 05:35

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: WinAPI
BeitragVerfasst: 16.05.2018 18:40 
Offline

Registriert: 27.08.2012 21:08
Hallo

Suche eine Möglichkeit wie man bei Labels die Hintergrundfarbe ändert und Icons transparent dargestellt.
Es sollen keine Purebasic Befehle wie SetGadgetColor verwendet werden, sondern nur reines Winapi.


Code:

Procedure WindowCallback(hWnd, Msg, wParam, lParam)
  Shared hButton
 
  Select Msg
    Case #WM_COMMAND

    Case #WM_CLOSE
      DestroyWindow_(hWnd)
    Case #WM_DESTROY
      PostQuitMessage_(0) : Result  = 0
    Default
      Result  = DefWindowProc_(hWnd, Msg, wParam, lParam)
  EndSelect
 
  ProcedureReturn Result
EndProcedure 
 
        InitCommonControls_()
       
        #Style  = #WS_VISIBLE | #WS_CAPTION | #WS_SYSMENU
        DefaultFont = GetStockObject_(#DEFAULT_GUI_FONT)
 
        WindowClass.s    = "My_Win"
        wc.WNDCLASSEX
        wc\cbsize        = SizeOf(WNDCLASSEX)
        wc\lpfnWndProc   = @WindowCallback()
        wc\hCursor       = LoadCursor_(0, #IDC_ARROW)
        wc\hbrBackground = #COLOR_WINDOW
        wc\lpszClassName = @WindowClass
        RegisterClassEx_(@wc)
 
        Win_x=GetSystemMetrics_(#SM_CXSCREEN)/2-100
        Win_y=GetSystemMetrics_(#SM_CYSCREEN)/2-50
 
        hWndMain  = CreateWindowEx_(0, WindowClass, "WinAPI", #Style, Win_x, Win_y, 300, 200, 0, 0, 0, 0)
 
        Text.s="Label"
        hText=CreateWindowEx_(0,"Static", Text, #WS_CHILD | #WS_VISIBLE, 10,10,180,54, hWndMain, 0, 0, 0)
        SendMessage_(hText, #WM_SETFONT, DefaultFont, 1)
 
 
     
         Text.s=""
         hText1=CreateWindowEx_(#WS_EX_TRANSPARENT,"Static", "", #WS_CHILD | #WS_VISIBLE|#SS_ICON|#WS_DISABLED|#SS_CENTERIMAGE, 10,80,104,60, hWndMain, 0, 0, 0)
      ; : SendMessage_(hText, #WM_SETFONT, DefaultFont, 1)
 
      ;   hBrush2 = CreateSolidBrush_(RGB(255, 255, 255))
      ;  SetClassLong_(hText1, #GCL_HBRBACKGROUND, hBrush2)


      ;SetWinColor(hText,RGB(233,95,85))
      ; InvalidateRect_(hText1,#False,#True)
      ; UpdateWindow_(hText1)
 
       num_icons = ExtractIconEx_("shell32.dll", 3, @ico, #Null, 1)
      ; Debug num_icons
    ;   SendMessage_( hText1, #STM_SETIMAGE, #IMAGE_BITMAP, Ergebnis)
       SendMessage_( hText1, #STM_SETIMAGE, #IMAGE_ICON, ico)
       ; SendMessage_(hText1, #WM_SETICON, 1, ico)
       ;#ima
       
        ShowWindow_(hWndMain,  #SW_SHOWDEFAULT)
        UpdateWindow_(hWndMain);
 
        While GetMessage_(msg.MSG, #Null, 0, 0 )
          TranslateMessage_(msg)
          DispatchMessage_(msg)
        Wend
End



Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: WinAPI
BeitragVerfasst: 16.05.2018 19:20 
Offline
Benutzeravatar

Registriert: 30.03.2010 15:24
Also hier auf meinem Win10 ist das Symbol transparent.
Die Hintergrundfarbe des Lables kann man mit WM_CTLCOLORSTATIC ändern.

Code:
Global hText

Procedure WindowCallback(hWnd, Msg, wParam, lParam)
  Shared hButton
 
  Select Msg
    Case #WM_COMMAND
     
    Case #WM_CTLCOLORSTATIC
      If lParam = hText
        ;SetTextColor_(wParam, $FF00FF)
        SetBkColor_(wparam, $00FF00)
        ProcedureReturn CreateSolidBrush_($00FF00)
      Else
        ProcedureReturn DefWindowProc_(hWnd, Msg, wParam, lParam)
      EndIf     
     
     
    Case #WM_CLOSE
      DestroyWindow_(hWnd)
    Case #WM_DESTROY
      PostQuitMessage_(0) : Result  = 0
    Default
      Result  = DefWindowProc_(hWnd, Msg, wParam, lParam)
  EndSelect
 
  ProcedureReturn Result
EndProcedure 
 
        InitCommonControls_()
       
        #Style  = #WS_VISIBLE | #WS_CAPTION | #WS_SYSMENU
        DefaultFont = GetStockObject_(#DEFAULT_GUI_FONT)
 
        WindowClass.s    = "My_Win"
        wc.WNDCLASSEX
        wc\cbsize        = SizeOf(WNDCLASSEX)
        wc\lpfnWndProc   = @WindowCallback()
        wc\hCursor       = LoadCursor_(0, #IDC_ARROW)
        wc\hbrBackground = #COLOR_WINDOW
        wc\lpszClassName = @WindowClass
       
        RegisterClassEx_(@wc)

       
        Win_x=GetSystemMetrics_(#SM_CXSCREEN)/2-100
        Win_y=GetSystemMetrics_(#SM_CYSCREEN)/2-50
 
        hWndMain  = CreateWindowEx_(0, WindowClass, "WinAPI", #Style, Win_x, Win_y, 300, 200, 0, 0, 0, 0)
 
        Text.s="Label"
        hText=CreateWindowEx_(0,"Static", Text, #WS_CHILD | #WS_VISIBLE, 10,10,180,54, hWndMain, 0, 0, 0)
        SendMessage_(hText, #WM_SETFONT, DefaultFont, 1)
 
 
     
         Text.s=""
         hText1=CreateWindowEx_(#WS_EX_TRANSPARENT,"Static", "", #WS_CHILD | #WS_VISIBLE|#SS_ICON|#WS_DISABLED|#SS_CENTERIMAGE, 10,80,104,60, hWndMain, 0, 0, 0)
      ; : SendMessage_(hText, #WM_SETFONT, DefaultFont, 1)
 
      ;   hBrush2 = CreateSolidBrush_(RGB(255, 255, 255))
      ;  SetClassLong_(hText1, #GCL_HBRBACKGROUND, hBrush2)


      ;SetWinColor(hText,RGB(233,95,85))
      ; InvalidateRect_(hText1,#False,#True)
      ; UpdateWindow_(hText1)
 
       num_icons = ExtractIconEx_("shell32.dll", 3, @ico, #Null, 1)
      ; Debug num_icons
    ;   SendMessage_( hText1, #STM_SETIMAGE, #IMAGE_BITMAP, Ergebnis)
       SendMessage_( hText1, #STM_SETIMAGE, #IMAGE_ICON, ico)
       ; SendMessage_(hText1, #WM_SETICON, 1, ico)
       ;#ima
       
        ShowWindow_(hWndMain,  #SW_SHOWDEFAULT)
        UpdateWindow_(hWndMain);
 
        While GetMessage_(msg.MSG, #Null, 0, 0 )
          TranslateMessage_(msg)
          DispatchMessage_(msg)
        Wend
End


_________________
PureBasic 5.46 LTS (Windows x86/x64) | windows 10 x64 Falling Bug


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: WinAPI
BeitragVerfasst: 17.05.2018 06:26 
Offline

Registriert: 27.08.2012 21:08
Danke _Jon_, es funktioniert. :allright:


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  
cron

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye