I'm trying to add an icon (*.ico) to exe program.
Compiler Option > use icon.
The exe file have an icon ,but when executing the exe file it does not appear at the upper left window.
Please help.
Thanks
ly
Code: Select all
EnableExplicit
Declare SetWinColor(hWnd, clr)
Declare addStringCombo()
Declare xHiWord(a.l)
Declare xLoWord(a.l)
Global wc.WNDCLASSEX, hInstance, msg.MSG, hCb, title.s, hue$=Space(6)
; hue$ = Space(8)
hInstance = GetModuleHandle_(#Null)
Enumeration
#Button_1
#Button_2
#Button_3
#Combo_1
EndEnumeration
#Style = #WS_OVERLAPPEDWINDOW | #WS_VISIBLE
Procedure WindowCallback(hWnd, uMsg, wParam, lParam)
Protected hBtn1, hBtn2, hBtn3, Result, indx
Select uMsg
Case #WM_CREATE
hBtn1 = CreateWindowEx_(0, "Button", "Exit", #WS_CHILD | #WS_VISIBLE, 520, 328, 60, 25, hWnd, #Button_1, hInstance, 0)
hBtn2 = CreateWindowEx_(0, "Button", "RED", #WS_CHILD | #WS_VISIBLE, 440, 328, 60, 25, hWnd, #Button_2,hInstance, 0)
hBtn2 = CreateWindowEx_(0, "Button", "BLUE", #WS_CHILD | #WS_VISIBLE, 360, 328, 60, 25, hWnd, #Button_3, hInstance, 0)
hCb = CreateWindowEx_(0, "combobox", 0, #WS_CHILD | #WS_VISIBLE |#WS_TABSTOP|#CBS_DROPDOWNLIST|#WS_VSCROLL,
250, 328, 90, 235, hWnd, #Combo_1, hInstance, 0)
addStringCombo()
Case #WM_COMMAND
Select xLoWord(wParam)
Case #Button_1
; Debug "#Button_1"
PostQuitMessage_(0)
Case #Button_2
; Debug "#Button_2"
SetWinColor(hWnd,RGB(233,95,85))
InvalidateRect_(hWnd,#False,#True)
UpdateWindow_(hWnd)
Case #Button_3
; Debug "#Button_3"
SetWinColor(hWnd, RGB(85,95,233))
InvalidateRect_(hWnd,#False,#True)
UpdateWindow_(hWnd)
Case #Combo_1
If xHiWord(wParam) = #CBN_SELCHANGE
indx = SendMessage_(hcb,#CB_GETCURSEL,0,0)
SendMessage_(hCb, #CB_GETLBTEXT,indx, @hue$)
title = "Simple - " + hue$
SendMessage_(hWnd,#WM_SETTEXT,0,@title)
Select indx
Case 0 ;default
SetWinColor(hWnd,RGB(255,255,255))
InvalidateRect_(hWnd,#False,#True)
UpdateWindow_(hWnd)
Case 1 ;red
SetWinColor(hWnd,RGB(233,95,85))
InvalidateRect_(hWnd,#False,#True)
UpdateWindow_(hWnd)
Case 2 ;blue
SetWinColor(hWnd, RGB(85,95,233))
InvalidateRect_(hWnd,#False,#True)
UpdateWindow_(hWnd)
EndSelect
EndIf
EndSelect
Case #WM_CLOSE
DestroyWindow_(hWnd)
Result = 0
Case #WM_DESTROY
PostQuitMessage_(0)
Result = 0
Default
Result = DefWindowProc_(hWnd, uMsg, wParam, lParam)
EndSelect
ProcedureReturn Result
EndProcedure
Define.s appName
appName = "Win32"
wc\style = #CS_HREDRAW | #CS_VREDRAW
wc\cbsize = SizeOf(WNDCLASSEX)
wc\lpfnWndProc = @WindowCallback()
wc\hInstance = hInstance
wc\hIcon = LoadIcon_(0, #IDI_APPLICATION )
wc\hCursor = LoadCursor_(0,#IDC_ARROW)
wc\hbrBackground = #COLOR_WINDOW + 1
wc\lpszMenuName = 0
wc\lpszClassName = @appName
If ( RegisterClassEx_( @wc ) = #False )
MessageBox_(#Null, "Failed to register wc!", appName, #MB_ICONERROR )
End 1
EndIf
Define hWnd = CreateWindowEx_(0, appName, "Simple", #Style, 100, 100, 600, 450, 0, 0, hInstance, 0)
ShowWindow_(hWnd, #SW_SHOWDEFAULT)
UpdateWindow_(hWnd)
SetForegroundWindow_(hWnd)
While GetMessage_(msg, 0, 0, 0 )
TranslateMessage_(msg)
DispatchMessage_(msg)
Wend
; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Procedure SetWinColor(hWnd, clr)
Static obj, hbr
hbr = CreateSolidBrush_(clr)
obj = SetClassLongPtr_(hWnd ,#GCL_HBRBACKGROUND ,hbr)
DeleteObject_(obj)
RedrawWindow_(hWnd, 0, 0, 0)
ProcedureReturn 0
EndProcedure
Procedure addStringCombo()
SendMessage_(hCb,#CB_ADDSTRING,0, "DEF")
SendMessage_(hCb,#CB_ADDSTRING,0, "RED")
SendMessage_(hCb,#CB_ADDSTRING,0,"BLUE")
SendMessage_(hCb,#CB_SETCURSEL,0,0)
EndProcedure
Procedure xHiWord(a.l)
ProcedureReturn Int(a / $10000)
EndProcedure
Procedure xLoWord(a.l)
ProcedureReturn Int(a - (Int(a/$10000)*$10000))
EndProcedure