dialogboxparam, WM_CTLCOLOREDIT and wParam

Just starting out? Need help? Post your questions and find answers here.
bizdon
User
User
Posts: 12
Joined: Wed Jun 22, 2011 6:49 pm

dialogboxparam, WM_CTLCOLOREDIT and wParam

Post by bizdon »

I have a code on masm32, it's work - edit text and background change color:

Code: Select all

			.386
			.model	flat,stdcall
			option	casemap:none
			include	c:\masm32\include\windows.inc
	 		include c:\masm32\include\kernel32.inc
	 		include c:\masm32\include\user32.inc
	 		include	c:\masm32\include\gdi32.inc
			includelib c:\masm32\lib\kernel32.lib
			includelib c:\masm32\lib\user32.lib
			includelib c:\masm32\lib\gdi32.lib
IDC_EDT2 equ 1009
DlgProc PROTO :DWORD,:DWORD,:DWORD,:DWORD
			.data
hedit dd ?
hInstance dd ?
DlgName db "dlg",0
.code
start:
	invoke GetModuleHandle, NULL
	mov    hInstance,eax
	invoke DialogBoxParam, hInstance, ADDR DlgName,NULL,addr DlgProc,NULL
	invoke ExitProcess,eax

DlgProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
	.IF uMsg==WM_INITDIALOG
	.ELSEIF uMsg==WM_CLOSE
		invoke EndDialog, hWnd,NULL
	.ELSEIF  uMsg==WM_CTLCOLOREDIT
   invoke SetTextColor,wParam,00000FFh
      invoke SetBkColor,wParam,37D9DDh
	.ELSE
		mov eax,FALSE
		ret
	.ENDIF
	mov eax,TRUE
	ret
DlgProc endp
end start
.rc file for it :

Code: Select all

#define IDC_EDT2 1009
dlg DIALOGEX 10,10,213,87
CAPTION "Hiperlink"
FONT 8,"MS Sans Serif",0,0,0
STYLE 0x10CB0800
BEGIN
  CONTROL "",IDC_EDT2,"Edit",0x50010000,24,9,60,15,0x00000200
END
but why don't work same code on PB?

Code: Select all

#IDC_EDT2=1009 
Procedure DialogProc(Wnd,msg,wp,lp )
Select msg
Case #WM_INITDIALOG
Case #WM_CLOSE: enddialog_(Wnd,0)
Case #WM_CTLCOLOREDIT
    SetTextColor_(wp,$00000FF)
    SetBkColor_(wp,$37D9DD)
EndSelect 
EndProcedure
hinst=GetModuleHandle_(0)
hdlg=dialogboxparam_(hinst,@"dlg",0,@DialogProc(),0)
End
thank you for your attention
User avatar
Danilo
Addict
Addict
Posts: 3036
Joined: Sat Apr 26, 2003 8:26 am
Location: Planet Earth

Re: dialogboxparam, WM_CTLCOLOREDIT and wParam

Post by Danilo »

bizdon wrote:but why don't work same code on PB?
The #define in the .rc gives an error and your ASM code returns True for the handled messages, False for other messages.

This works here:
.rc

Code: Select all

dlg DIALOGEX 10,10,213,87
CAPTION "Hiperlink"
FONT 8,"MS Sans Serif",0,0,0
STYLE 0x10CB0800
BEGIN
  CONTROL "",1009,"Edit",0x50010000,24,9,60,15,0x00000200
END
Add a link to this resource file in compiler options -> resources

code

Code: Select all

#IDC_EDT2=1009 
Procedure DialogProc(Wnd,msg,wp,lp )
    Select msg
        Case #WM_INITDIALOG
        Case #WM_CLOSE: EndDialog_(Wnd,0)
        Case #WM_CTLCOLOREDIT
            SetTextColor_(wp,$00000FF)
            SetBkColor_(wp,$37D9DD)
        Default
            ProcedureReturn #False
    EndSelect 
    ProcedureReturn #True
EndProcedure

hinst=GetModuleHandle_(0)
hdlg=DialogBoxParam_(hinst,@"dlg",0,@DialogProc(),0)
End
bizdon
User
User
Posts: 12
Joined: Wed Jun 22, 2011 6:49 pm

Re: dialogboxparam, WM_CTLCOLOREDIT and wParam

Post by bizdon »

Thanks! Danilo
Post Reply