Let me know if you spot or have any problems. Works for me.
Cheers, Jon
Code: Select all
Procedure WindowCallback(Window, Message, wParam, lParam)
Select Message
Case #WM_CLOSE
If MessageBox_(Window, "Exit Program?", "Exit", #MB_YESNO) = #IDYES
DestroyWindow_(Window)
Else
Result = 0
EndIf
Case #WM_DESTROY
PostQuitMessage_(0)
Result = 0
Default
Result = DefWindowProc_(Window, Message, wParam, lParam)
EndSelect
ProcedureReturn Result
EndProcedure
Procedure ChildWindowCallback(Window, Message, wParam, lParam)
Select Message
Case #WM_CLOSE
If MessageBox_(Window, "Exit Program?", "EXIT", #MB_YESNO) = #IDYES
DestroyWindow_(Window)
Else
Result = 0
EndIf
Case #WM_DESTROY
PostQuitMessage_(0)
Result = 0
Default
Result = DefWindowProc_(Window, Message, wParam, lParam)
EndSelect
ProcedureReturn Result
EndProcedure
Procedure DialogCallBack(Window, Message, wParam, lParam)
Select Message
Case #WM_INITDIALOG
result = #True
Case #WM_COMMAND
If wParam = #IDOK Or wParam = #IDCANCEL
result = #True
EndDialog_(Window, wParam)
EndIf
Default
result = #False
EndSelect
ProcedureReturn result
EndProcedure
hlibMain = LoadLibrary_("clipbrd.exe")
hmenuMain = LoadMenu_(hlibMain, "#8")
hicnMain = LoadIcon_(hlibMain, "#2")
#Style = #WS_VISIBLE | #WS_CLIPCHILDREN | #WS_SIZEBOX| #WS_OVERLAPPEDWINDOW
#StyleEx = #WS_EX_OVERLAPPEDWINDOW | #WS_EX_WINDOWEDGE
WindowClass.s = "Test Parent"
wc.WNDCLASSEX
wc\cbSize = SizeOf(WNDCLASSEX)
wc\hIcon = hicnMain
wc\lpfnWndProc = @WindowCallback()
wc\hCursor = LoadCursor_(0, #IDC_CROSS)
wc\hbrBackground = #COLOR_WINDOW + 1
wc\lpszClassName = @WindowClass.s
If RegisterClassEx_(@wc)
hwndMain = CreateWindowEx_(#StyleEx, WindowClass.s, "Test Parent Window", #Style, 10, 10, 600, 600, 0, 0, GetModuleHandle_(0), 0)
ShowWindow_(hwndMain, #SW_SHOWDEFAULT)
UpdateWindow_(hwndMain);
SetMenu_(hwndMain, hmenuMain)
EndIf
#StyleChild = #WS_CLIPSIBLINGS | #WS_CHILD | #WS_SYSMENU | #WS_CLIPCHILDREN | #WS_CAPTION;| #WS_BORDER
#StyleExChild = #WS_EX_OVERLAPPEDWINDOW ;| #WS_EX_STATICEDGE
WindowClassChild.s = "Test child"
wcc.WNDCLASSEX
wcc\cbSize = SizeOf(WNDCLASSEX)
wcc\hIcon = hicnMain
wcc\lpfnWndProc = @ChildWindowCallback()
wcc\hCursor = LoadCursor_(0, #IDC_HAND)
wcc\hbrBackground = #COLOR_WINDOW + 1
wcc\lpszClassName = @WindowClassChild.s
If RegisterClassEx_(@wcc)
hwndChild = CreateWindowEx_(#StyleExChild, WindowClassChild.s , "Test Child Window" , #StyleChild, 0, 0, 320, 240, hwndMain , 0, 0, 0)
ShowWindow_(hwndChild, #SW_SHOWDEFAULT)
UpdateWindow_(hwndChild);
EndIf
hndDialog = DialogBoxParam_(hlibMain, "#100", hwndMain, @DialogCallback(), 0)
ShowWindow_(hndDialog, #SW_SHOW)
While GetMessage_(msg.MSG, #Null, 0, 0 )
TranslateMessage_(msg)
DispatchMessage_(msg)
Wend