Author Topic: Some structure, like DLGTEMPLATE, disappered in MASM64 ?  (Read 8329 times)

seasea

  • Regular Member
  • *
  • Posts: 15
Some structure, like DLGTEMPLATE, disappered in MASM64 ?
« on: March 31, 2018, 02:04:06 AM »
Hello, where are the sturcture defines, like  DLGTEMPLATE,DLGITEMTEMPLATE,PROPSHEETHEADERA ...
I can't find them .

hutch--

  • Administrator
  • Member
  • ******
  • Posts: 10000
  • Mnemonic Driven API Grinder
    • The MASM32 SDK
Re: Some structure, like DLGTEMPLATE, disappered in MASM64 ?
« Reply #1 on: March 31, 2018, 02:15:36 AM »
Give this tool a blast, there will always be extra structures, this tool does most of the work and you may need to manually tweak some bits of the result.

http://masm32.com/board/index.php?topic=5546.0
hutch at movsd dot com
http://www.masm32.com    :biggrin:  :skrewy:

seasea

  • Regular Member
  • *
  • Posts: 15
Re: Some structure, like DLGTEMPLATE, disappered in MASM64 ?
« Reply #2 on: March 31, 2018, 02:26:03 AM »
GOOD!
But, itt looks not simple, ha ha. :biggrin:

hutch--, thank you very much. :t

jj2007

  • Member
  • *****
  • Posts: 13287
  • Assembly is fun ;-)
    • MasmBasic
Re: Some structure, like DLGTEMPLATE, disappered in MASM64 ?
« Reply #3 on: March 31, 2018, 03:52:13 AM »
Most probably, the versions in \Masm32\include\Windows.inc will work just fine. Extract them and put them in an extra inc file.
Masm32 Tips, Tricks and Traps

Some members can't live without insulting others. It tells us a lot about them.

seasea

  • Regular Member
  • *
  • Posts: 15
Re: Some structure, like DLGTEMPLATE, disappered in MASM64 ?
« Reply #4 on: March 31, 2018, 02:45:33 PM »
jj2007, thanks.
Yes, may be OK.

But, the problem is that, some vars in the struct should still keep 32bit, some should be changed to 64bit. So, it's a manually work that need more patient.

jj2007

  • Member
  • *****
  • Posts: 13287
  • Assembly is fun ;-)
    • MasmBasic
Re: Some structure, like DLGTEMPLATE, disappered in MASM64 ?
« Reply #5 on: March 31, 2018, 03:11:56 PM »
the problem is that, some vars in the struct should still keep 32bit, some should be changed to 64bit

Only in PROPSHEETHEADER, and it's a handful of fields that are either handles or start with "p".
Masm32 Tips, Tricks and Traps

Some members can't live without insulting others. It tells us a lot about them.

seasea

  • Regular Member
  • *
  • Posts: 15
Re: Some structure, like DLGTEMPLATE, disappered in MASM64 ?
« Reply #6 on: April 01, 2018, 02:08:58 AM »
Only in PROPSHEETHEADER, and it's a handful of fields that are either handles or start with "p".

Yes, I know. So, the problem is that, there is no Micosoft's "offical" masm64 API manual.

jj2007

  • Member
  • *****
  • Posts: 13287
  • Assembly is fun ;-)
    • MasmBasic
Re: Some structure, like DLGTEMPLATE, disappered in MASM64 ?
« Reply #7 on: April 01, 2018, 02:24:23 AM »
You can always code a simple example in Micros??t Visual C, build it in 32- and 64-bit mode, and compare the structure's offsets. But trust me, handles are 32/64, and everything that starts with a "p", too.
Masm32 Tips, Tricks and Traps

Some members can't live without insulting others. It tells us a lot about them.

hutch--

  • Administrator
  • Member
  • ******
  • Posts: 10000
  • Mnemonic Driven API Grinder
    • The MASM32 SDK
Re: Some structure, like DLGTEMPLATE, disappered in MASM64 ?
« Reply #8 on: April 01, 2018, 02:32:41 AM »
Give the struct conversion tool a blast. It gets most of this stuff right. You will sometimes need to edit a data type manually before you hit the convert button, the problem being the VC headers use local #define statements that are hard to track down with a conversion tool.
hutch at movsd dot com
http://www.masm32.com    :biggrin:  :skrewy:

seasea

  • Regular Member
  • *
  • Posts: 15
Re: Some structure, like DLGTEMPLATE, disappered in MASM64 ?
« Reply #9 on: April 01, 2018, 02:28:55 PM »
You can always code a simple example in Micros??t Visual C, build it in 32- and 64-bit mode, and compare the structure's offsets. But trust me, handles are 32/64, and everything that starts with a "p", too.
:t, Yes, thanks.

seasea

  • Regular Member
  • *
  • Posts: 15
Re: Some structure, like DLGTEMPLATE, disappered in MASM64 ?
« Reply #10 on: April 01, 2018, 02:32:02 PM »
Give the struct conversion tool a blast. It gets most of this stuff right. You will sometimes need to edit a data type manually before you hit the convert button, the problem being the VC headers use local #define statements that are hard to track down with a conversion tool.

OK, hutch--, Thanks,  you are warmhearted.

Mikl__

  • Member
  • *****
  • Posts: 1280
Re: Some structure, like DLGTEMPLATE, disappered in MASM64 ?
« Reply #11 on: April 02, 2018, 09:17:17 PM »
Hi, seasea!
asm-file
Code: [Select]
; GUI #
include win64a.inc
IDM_SAYHELLO equ 0
IDM_GETTEXT equ 1
IDM_CLEAR equ 2
IDM_EXIT equ 3
IDC_EDIT equ 0
IDC_BUTTON equ 1
IDC_EXIT equ 2
IDC_MENU equ 100
IDC_DIALOG equ 200
;-----------------------------------------
.code
WinMain proc
local hMem:QWORD

invoke GlobalAlloc,GMEM_FIXED or GMEM_ZEROINIT,1024  ; memory buffer size
      mov hMem,rax; hDialogTemplate
mov edi,eax
mov esi,offset temp
mov ecx,len/8
rep movsq
     ;mov [rsp+20h],rcx; dwInitParam=0
mov r9d,offset DialogFunc
invoke DialogBoxIndirectParam,IMAGE_BASE,eax,0,,0
invoke GlobalFree,hMem
leave
retn
WinMain endp
DialogFunc proc hDlg:QWORD,uMsg:QWORD,wParam:QWORD,lParam:QWORD
size_of_buffer equ 96
local buffer[size_of_buffer]:BYTE

cmp edx,WM_CLOSE
je wmCLOSE
cmp edx,WM_INITDIALOG
je wmINITDIALOG
cmp edx,WM_COMMAND
jne wmBYE
wmCOMMAND:movzx eax,r8w ;movzx eax,word ptr wParam
or r9,r9 ;cmp lParam,0
jnz @f
jmp [menu_handlers+rax*8]
@@: dec eax ;cmp eax,IDC_BUTTON=1
jne @f
SAYHELLO:mov r8d,offset expTxt
jmp @0
@@: dec eax ;cmp eax,IDC_EXIT=2
jne wmBYE
invoke SendMessage,,WM_CLOSE,0,0
jmp wmBYE
wmINITDIALOG:invoke GetDlgItem,,0
invoke SetFocus,eax
jmp wmBYE
CLEAR:xor r8d,r8d
@0: invoke SetDlgItemText,,0
jmp wmBYE
GETTEXT:lea r8d,buffer
invoke GetDlgItemText,,0,,size_of_buffer
mov r8d,offset AppName
lea edx,buffer
      invoke MessageBox,0,,,MB_OK
jmp wmBYE
wmCLOSE:invoke EndDialog,,0
wmBYE:xor eax,eax
leave
retn
menu_handlers dq SAYHELLO,GETTEXT,CLEAR,wmCLOSE
DialogFunc endp
.data
expTxt db "Wow! I'm in an edit box now",0
AppName db 'Our First Dialog Box',0
align 16
temp:
dd DS_CENTER or WS_CAPTION or WS_MINIMIZEBOX or WS_SYSMENU \
           or WS_VISIBLE or WS_OVERLAPPED or DS_MODALFRAME or DS_3DLOOK,0
dw 3,10,10,205,60,-1,IDC_MENU,0
du <Tutorial 10g: DialogBoxIndirectParam+DlgProc>
dw 0
dd WS_VISIBLE or WS_CHILD or ES_LEFT or ES_AUTOHSCROLL or WS_BORDER or WS_TABSTOP,0
dw 15,17,111,13,IDC_EDIT,  -1,81h
dw 0,0,0
dd WS_VISIBLE or WS_CHILD or WS_TABSTOP or BS_DEFPUSHBUTTON,0
dw 141,10,52,13,IDC_BUTTON,-1,80h
du <Say Hello>
dw 0
dd WS_VISIBLE or WS_CHILD or WS_TABSTOP,0     
dw 141,26,52,13,IDC_EXIT,  -1,80h
du <E&xit>
dw 0
len = $ - temp
end     
rc-file
Code: [Select]
#include "resource.h"

#define IDM_SAYHELLO 0
#define IDM_GETTEXT 1
#define IDM_CLEAR 2
#define IDM_EXIT 3
#define IDC_EDIT 0
#define IDC_BUTTON 1
#define IDC_EXIT 2

#define IDC_MENU 100
#define IDC_DIALOG 200

IDC_MENU  MENU
BEGIN
    POPUP "Test Controls"
    BEGIN
        MENUITEM "Say Hello",IDM_SAYHELLO
        MENUITEM "Get Text",IDM_GETTEXT
        MENUITEM "Clear Edit Box",IDM_CLEAR
        MENUITEM SEPARATOR
        MENUITEM "E&xit",IDM_EXIT
    END
END

seasea

  • Regular Member
  • *
  • Posts: 15
Re: Some structure, like DLGTEMPLATE, disappered in MASM64 ?
« Reply #12 on: April 04, 2018, 12:13:38 AM »
Hi, seasea!
asm-file
Code: [Select]
; GUI #
.......
.......
temp:
dd DS_CENTER or WS_CAPTION or WS_MINIMIZEBOX or WS_SYSMENU \
           or WS_VISIBLE or WS_OVERLAPPED or DS_MODALFRAME or DS_3DLOOK,0
dw 3,10,10,205,60,-1,IDC_MENU,0
du <Tutorial 10g: DialogBoxIndirectParam+DlgProc>
dw 0
dd WS_VISIBLE or WS_CHILD or ES_LEFT or ES_AUTOHSCROLL or WS_BORDER or WS_TABSTOP,0
dw 15,17,111,13,IDC_EDIT,  -1,81h
dw 0,0,0
dd WS_VISIBLE or WS_CHILD or WS_TABSTOP or BS_DEFPUSHBUTTON,0
dw 141,10,52,13,IDC_BUTTON,-1,80h
du <Say Hello>
dw 0
dd WS_VISIBLE or WS_CHILD or WS_TABSTOP,0     
dw 141,26,52,13,IDC_EXIT,  -1,80h
du <E&xit>
dw 0
len = $ - temp
end     
......
......


Yep, that's pretty clear :t
Thank you, Mikl__.

And, one small question, what's the meaning "du", I didn't know it, and I had never used it. :redface:



Mikl__

  • Member
  • *****
  • Posts: 1280
Re: Some structure, like DLGTEMPLATE, disappered in MASM64 ?
« Reply #13 on: April 04, 2018, 01:35:25 AM »
Quote
what's the meaning "du",
Hi, seasea!
It is macro for create unicode-strings, my native language is russian, for cyrillic letters are 0400—04FF, for latin letters are 0041-007A
Code: [Select]
du macro string
local bslash
bslash = 0
irpc c,<string>
if bslash eq 0
if '&c' eq "/"
        bslash = 1
elseif '&c'gt 127
db ('&c'- 0B0h),4
else
dw '&c'
endif
else
           bslash = 0
           if '&c' eq "n"
           DW 0Dh,0Ah
           elseif '&c' eq "/"
           dw '/'
           elseif '&c' eq "r"
           dw 0Dh
           elseif '&c' eq "l"
           dw 0Ah
           elseif '&c' eq "s"
           dw 20h
           elseif '&c' eq "c"
           dw 3Bh
           elseif '&c' eq "t"
           dw 9
   endif
endif
endm
dw 0
endm
« Last Edit: April 04, 2018, 09:39:18 AM by Mikl__ »

seasea

  • Regular Member
  • *
  • Posts: 15
Re: Some structure, like DLGTEMPLATE, disappered in MASM64 ?
« Reply #14 on: April 04, 2018, 11:29:08 PM »
Quote
what's the meaning "du",
Hi, seasea!
It is macro for create unicode-strings, my native language is russian, for cyrillic letters are 0400—04FF, for latin letters are 0041-007A

OK, that's pretty good. :t :icon14: