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: Alles auswählen
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