Load resources from dll or exe with API - example
Posted: Sun Jan 29, 2006 2:18 am
This opens clipbrd.exe and loads an icon, menu, and dialog box then puts them on screen.
Let me know if you spot or have any problems. Works for me.
Cheers, Jon
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