How can I know, has window shadow? I'm looking for API-solution. Target window is not mine.
I tried to find out so:
Code: Select all
If Bool(GetWindowLong_(hWnd, #GCL_STYLE) & $00020000) = #True
Thanks in advance.
Code: Select all
If Bool(GetWindowLong_(hWnd, #GCL_STYLE) & $00020000) = #True
Code: Select all
If Bool(GetClassLongPtr_(hWnd, #GCL_STYLE) & #CS_DROPSHADOW) = #True
Code: Select all
hWnd = FindWindow_("TTOTAL_CMD", "Total Commander 9.22a - xxx") ;Change to your title or other window
If hWnd
Debug hWnd
SetForegroundWindow_(hWnd)
Sleep_(1000)
If Bool(GetClassLongPtr_(hWnd, #GCL_STYLE) & #CS_DROPSHADOW) = #True
Debug "Total is active now"
Else
Debug "Total is INactive now"
EndIf
EndIf
Code: Select all
Enumeration
#Window
EndEnumeration
If OpenWindow(#Window, 100, 100, 200, 160, "TEST", #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered)
hWnd = FindWindow_("WindowClass_0", "TEST")
If hWnd
Debug "hWnd = " + Str(hWnd)
TEST.LOGBRUSH = GetClassLong_(hWnd, #GCL_HBRBACKGROUND)
Debug TEST\lbColor
EndIf
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
qiut = 1
EndSelect
Until qiut = 1
EndIf
End
Code: Select all
Enumeration
#Window
EndEnumeration
If OpenWindow(#Window, 100, 100, 200, 160, "TEST", #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered)
hWnd = FindWindow_("WindowClass_0", "TEST")
If hWnd
Debug "hWnd = " + Str(hWnd)
hBrush = GetClassLongPtr_(hWnd, #GCL_HBRBACKGROUND)
buff = GetObject_(hBrush,SizeOf(hBrush),0)
GetObject_(hBrush,buff,test.LOGBRUSH)
Debug test\lbColor
EndIf
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
qiut = 1
EndSelect
Until qiut = 1
EndIf
End
Code: Select all
Declare WndProc(Wnd, Message, wParam, lParam)
Declare XHiWord(a.l)
Declare XLoWord(a.l)
Global Appname.s,hMenu.l
Appname = "Meinfenster"
wc.WNDCLASS
wc\style = #CS_VREDRAW | #CS_HREDRAW
wc\lpfnWndProc = @WndProc()
wc\cbClsExtra = 0
wc\cbWndExtra = 0
wc\hInstance = hInstance
wc\hIcon = LoadIcon_(hInstance, "#1")
wc\hCursor = LoadCursor_(0, #IDC_ARROW)
wc\hbrBackground = CreateSolidBrush_(GetSysColor_(15))
wc\lpszMenuName = 0
wc\lpszClassName = @Appname
RegisterClass_(wc)
hWnd = CreateWindowEx_(0,Appname,Caption$,#WS_OVERLAPPEDWINDOW,#CW_USEDEFAULT,0,#CW_USEDEFAULT,0,0,0,hInstance,0)
UpdateWindow_(hWnd)
ShowWindow_(hWnd,#SW_SHOWNORMAL)
SetForegroundWindow_(hWnd)
hBrush = GetClassLongPtr_(hWnd, #GCL_HBRBACKGROUND)
buff = GetObject_(hBrush,SizeOf(hBrush),0)
GetObject_(hBrush,buff,test.LOGBRUSH)
Debug test\lbColor
;der Einfachheit halber Menü mit PB
hMenu = CreateMenu(0,hWnd)
MenuTitle("File")
MenuItem( 1, "Load")
MenuItem( 2, "Save")
MenuItem( 3, "Save As")
MenuBar()
MenuItem( 4, "Ende")
While GetMessage_(m.MSG, 0, 0, 0)
TranslateMessage_(m)
DispatchMessage_(m)
Wend
Procedure WndProc(Wnd,Message,wParam,lParam)
Returnval.l = DefWindowProc_(Wnd, Message, wParam, lParam)
Select Message
; ***************************************************************************
Case #WM_COMMAND
Select XLoWord(wParam)
Case 1
MessageRequester("Meldung","Load gewنhlt",0)
Case 2
MessageRequester("Meldung","Save gewنhlt",0)
Case 3
MessageRequester("Meldung","Save as...gewنhlt",0)
Case 4
PostQuitMessage_(0)
Case 100
MessageRequester("Meldung","Button gedrückt",0)
EndSelect
; ***************************************************************************
; ***************************************************************************
Case #WM_CLOSE
; ***************************************************************************
UnregisterClass_(Appname,hInstance)
PostQuitMessage_(0)
EndSelect
ProcedureReturn Returnval
EndProcedure
Procedure XHiWord(a.l)
ProcedureReturn Int(a / $10000)
EndProcedure
Procedure XLoWord(a.l)
ProcedureReturn Int(a - (Int(a/$10000)*$10000))
EndProcedure