Dark Bit Factory & Gravity
PROGRAMMING => Other languages => ASM => Topic started by: ViL on June 21, 2018
-
Helloo! i've been looking for a way to add a menu using WinAPI within the same .asm file, without using resource (.rc) files
It can be done in C, like explained in this tutorial http://zetcode.com/gui/winapi/menus/
MASM32's User.lib has the same function prototypes in there (CreateMenu, AppendMenuW, SetMenu)
This is for two reasons, one is because i'd like them not to be edited/spoted using Resource Editors, the other is that i want to keep everything on one .asm source file (as what i want to do is small enough)
I've not seen anyone documenting how to do this before in MASM32 (or even other Win32-targeted compilers) and ran out of ideas trying, any kind of help is very appreciated!
thanks beforehand! :D
-
Helloo! i've been looking for a way to add a menu using WinAPI within the same .asm file, without using resource (.rc) files
It can be done in C, like explained in this tutorial http://zetcode.com/gui/winapi/menus/
MASM32's User.lib has the same function prototypes in there (CreateMenu, AppendMenuW, SetMenu)
This is for two reasons, one is because i'd like them not to be edited/spoted using Resource Editors, the other is that i want to keep everything on one .asm source file (as what i want to do is small enough)
I've not seen anyone documenting how to do this before in MASM32 (or even other Win32-targeted compilers) and ran out of ideas trying, any kind of help is very appreciated!
thanks beforehand! :D
I'm not that big assembly crack..but.. you can use the same functions as you use them in C, if you take a look at MessageBox function you can call it in two ways:
push HWND
push offset MsgText
push NULL
push NULL
call MessageBox
If you want to use a Macro, use INVOKE which does the stack-operations for you:
INVOKE MessageBox, HWND, offset MsgText, NULL, NULL
This should work for every win32 Function too.
:cheers:
-
Hii Knruz and thanks for the tips!, i didn't knew about the first way! :D
After a lot of research i could figure it out and ported everything that tutorial shows to MASM32, i hadn't cleaned the source nor commented it but i think it is readable enough, though, if anyone got a question please tell me in a comment!
All options emit a sound (except exit :) ) This is how it looks like:
(https://i.imgur.com/Zd20rNn.gif)
it's all just one .asm file:
https://pastebin.com/raw/Sx2NJHr6
you can download it, save it as main.asm, and compile it in MASM32 with these both commands (assuming you have MASM32 installed in C:\):
C:\masm32\bin\ml.exe /c /coff /nologo main.asm
to assemble and
C:\masm32\bin\link.exe /nologo /subsystem:windows main.obj
to link
i hope it may be of help to anyone! = 3
edit: attached exe and asm file in if that's better :D
-
Hi ViLXDRYAD,
Did you know there is also a Masm Forum ( it has even a new Game Development section )
http://masm32.com/board/index.php
-
hii, Siekmanski! and nope, i didn't knew about the forums!, seems like a huge source! x3
i'll be around to check some posts there, thanks for sharing it! :D
-
Hii Knruz and thanks for the tips!, i didn't knew about the first way! :D
i hope it may be of help to anyone! = 3
edit: attached exe and asm file in if that's better :D
Well, worked out fine for me too because I needed some asm frame to work with, now I'm capturing yours *evil laugh* :)
Edit: Thanks for sharing the source
-
lol, and you are welcome! = D
-
Hi Knurz,
push HWND
push offset MsgText
push NULL
push NULL
call MessageBox
The push order should be reversed.
push NULL
push NULL
push offset MsgText
push HWND
call MessageBox
-
Hi Knurz,
push HWND
push offset MsgText
push NULL
push NULL
call MessageBox
The push order should be reversed.
push NULL
push NULL
push offset MsgText
push HWND
call MessageBox
Hi!
Thanks, as I said, I'm not really an assembler guy =).
:cheers: