Win32 Assembly
c:\masm32\win32asm
per il MASM e:c:\tasm\win32asm
per il TASM.c:\masm32\win32asm\Risorse
per il MASM e:c:\tasm\win32asm\Risorse
per il TASM.#include "..\include\resource.h"
/* codici per i menu */
// codici per i menu
#define CM_MENU1a 101
CM_MENU1a = 101
RisorseMenu MENU
3500 MENU
#define ID_MENU 3500
ID_MENU MENU
POPUP "&Bitmap"
MENUITEM "&Penna", 304
MENUITEM "&Penna", CM_CURSOR4
NomeSimbolico ICON "nomefile.ico"
RisorseIcon ICON "risorse.ico"
RisorseCursor1 CURSOR "jet.cur"
RisorseLogo BITMAP "ramlogo.bmp"
#define ID_CURSOR2 4002
ID_CURSOR2 CURSOR "stella.cur"
rc /v risorse.rc
brcc32 risorse.rc
menuName db 'RisorseMenu', 0 iconName db 'RisorseIcon', 0 bitmap1Name db 'RisorseBmp1', 0 bitmap2Name db 'RisorseBmp2', 0 bitmap3Name db 'RisorseBmp3', 0 bitmap4Name db 'RisorseBmp4', 0 cursor1Name db 'RisorseCursor1', 0 cursor2Name db 'RisorseCursor2', 0 cursor3File db 'libro.cur', 0 cursor4File db 'penna.cur', 0 animcurFile db 'dinosau2.ani', 0 AboutDlgName db 'RisorseAboutDlg', 0 |
INCLUDE risorse.inc
wc.lpszMenuName
mov wc.lpszMenuName, NULL
menuName db 'RisorseMenu', 0
mov wc.lpszMenuName, offset menuName
#define ID_MENU 1001
ID_MENU MENU
ID_MENU = 1001
mov wc.lpszMenuName, ID_MENU
menuName db 'RisorseMenu', 0
RisorseIcon ICON "risorse.ico"
wc.hIcon
mov wc.hIcon, NULL
call LoadIcon, NULL, IDI_WARNING mov wc.hIcon, eax |
iconName db 'RisorseIcon', 0
call LoadIcon, hInstance, offset iconName mov wc.hIcon, eax |
#define ID_PROGICON 2001
ID_PROGICON ICON "risorse.ico"
ID_PROGICON = 2001
call LoadIcon, hInstance, ID_PROGICON mov wc.hIcon, eax |
wc.hIconSm
(handle to small icon)mov wc.hIconSm, NULL
cursor1Name db 'RisorseCursor1', 0
wc.hCursor
call LoadCursor, hInstance, offset cursor1Name mov wc.hCursor, eax |
call LoadCursor, NULL, IDC_ARROW mov wc.hCursor, eax |
HBITMAP LoadBitmap(HINSTANCE hInstance, LPCTSTR lpBitmapName);
bitmap1Name db 'RisorseBmp1', 0
call LoadBitmap, hInstance, offset bitmap1Name mov handleBitmap1, eax |
call LoadBitmap, hInstance, ID_BITMAP1 mov handleBitmap1, eax |
call LoadCursor, NULL, IDC_ARROW mov handleCursore, eax |
cursor1Name db 'RisorseCursor1', 0
call LoadCursor, hInstance, offset cursor1Name mov handleCursor1, eax |
call LoadCursor, hInstance, ID_CURSOR1 mov handleCursor1, eax |
HCURSOR LoadCursorFromFile(LPCTSTR lpFileName);
id = LOWORD(wParam);
codeNotify = HIWORD(wParam);
void Cls_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify);
messaggio_WM_COMMAND: cmp uMsg, WM_COMMAND ; (uMsg == WM_COMMAND) ? jne messaggio_WM_CLOSE mov eax, wParam ; eax = wParam mov ecx, eax ; ecx = wParam and eax, 0000ffffh ; eax = id = LOWORD(wParam) shr ecx, 16 ; ecx = codeNotify = HIWORD(wParam) call Risorse_OnCommand, hWnd, eax, lParam, ecx jmp exitWndProc |
if ((id >= CM_MENU1a) && (id <= CM_MENUEXIT)) { /* elaborazione popup "Principale" */ } else if ((id >= CM_BITMAP1) && (id <= CM_BITMAP5)) { /* elaborazione popup "Bitmap" */ } else if ((id >= CM_CURSOR1) && (id <= CM_CURSOR6)) { /* elaborazione popup "Cursori" */ } else if ((id >= CM_FONT1) && (id <= CM_FONT9)) { /* elaborazione popup "Font" */ } else if ((id >= CM_HELP) && (id <= CM_ABOUT)) { /* elaborazione popup "Informazioni" */ } |
LRESULT SendMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
call SendMessage, hwnd, WM_CLOSE, NULL, NULL
HBRUSH CreatePatternBrush(HBITMAP hBmp);
call CreatePatternBrush, handleBitmap1
DWORD SetClassLong(HWND hWnd, int nIndex, LONG dwNewLong);
BOOL InvalidateRect(HWND hWnd, CONST RECT *lpRect, BOOL bErase);
call InvalidateRect, hwnd, NULL, TRUE
call CreatePatternBrush, handleBitmap1 call SetClassLong, hwnd, GCL_HBRBACKGROUND, eax call InvalidateRect, hwnd, NULL, TRUE |
call LoadBitmap, hInstance, offset bitmap1Name call CreatePatternBrush, eax mov wc.hbrBackground, eax |
call SetClassLong, hwnd, GCL_HCURSOR, handleCursor2
call LoadCursor, NULL, IDC_ARROW
.
nome_simbolico DIALOG x, y, larghezza, altezza
MENU "RisorseMenu"
CTEXT "stringa di testo", id, x, y, laghezza, altezza, stile
PUSHBUTTON "stringa di testo", id, x, y, laghezza, altezza, stile
CONTROL nome_simbolico, id, "tipo controllo", stile, x, y, laghezza,
altezza
int DialogBoxParam(HINSTANCE hInstance, /* istanza dell'applicazione */ LPCTSTR lpTemplateName,/* indirizzo nome simbolico dialog box */ HWND hwndParent, /* handle della finestra madre */ DLGPROC lpDialogFunc, /* indirizzo window procedure */ LPARAM dwInitParam /* informazioni di inizializzazione */ ); |
call DialogBoxParam, hInstance, offset AboutDlgName, hwnd,
offset AboutWinProc, NULL
BOOL EndDialog(HWND hDlg, int nResult);
c:\masm32\win32asm\Risorse
risorse.bat
c:\tasm\win32asm\Risorse
..\..\bin\make -B -frisorse.mak