vita et mortuus
1796 / 696 / 152
Регистрация: 10.06.2009
Сообщений: 2,736
|
|||||||||||||||||||||
1 | |||||||||||||||||||||
MASM64 Menu, Ошибка построения ресурсов09.04.2015, 09:34. Показов 2769. Ответов 6
Метки нет (Все метки)
Я так хотел подружиться с менюшками, но никак.
main.asm
resource.h
resource.inc
rsrc.rc
make64.bat
Код
@echo off if not exist rsrc.rc goto empty D:\masm\masm64\bin\rc /v "rsrc.rc" D:\masm\masm64\bin\cvtres /machine:x64 "rsrc.res" :empty if exist "%1.obj" del "%1.obj" if exist "%1.exe" del "%1.exe" D:\masm\masm64\bin\ml64 /c /Cp /I"D:\masm\masm64\include" "%1.asm" "%1.def" if errorlevel 1 goto errasm if not exist rsrc.obj goto nores D:\masm\masm64\bin\Link /LIBPATH:"D:\masm\masm64\lib" /ENTRY:WinMain /SUBSYSTEM:WINDOWS /MERGE:.data=.text /MERGE:.rdata=.text /ALIGN:16 /stub:stub.exe "%1.obj" "rsrc.obj" if errorlevel 1 goto errlink dir "%1.*" goto TheEnd :nores D:\masm\masm64\bin\Link /LIBPATH:"D:\masm\masm64\lib" /ENTRY:WinMain /SUBSYSTEM:WINDOWS /ALIGN:16 /stub:stub.exe "%1.obj" if errorlevel 1 goto errlink dir "%1.*" goto TheEnd :errlink echo _ echo Link error goto TheEnd :errasm echo _ echo Assembly Error goto TheEnd call "%1.exe" :TheEnd Добавлено через 1 минуту rc.exe и cvtres из amd64 от VisualStudio 2010
0
|
09.04.2015, 09:34 | |
Ответы с готовыми решениями:
6
Обьясните пожалуйста как работает селектор .main-menu > li:hover .sub-menu Создать функцию menu или вызвать menu в программе Компонент menu и menu.section вывести картинку не запускается комп.- ошибка BOOT MENU |
Ушел с форума
16338 / 7659 / 1075
Регистрация: 11.11.2010
Сообщений: 13,696
|
|
09.04.2015, 10:08 | 2 |
NoNaMe,
в фасме меню из ресурсов строится, а вот в масме никак
0
|
Ушел с форума
16338 / 7659 / 1075
Регистрация: 11.11.2010
Сообщений: 13,696
|
|||||||||||
09.04.2015, 11:39 | 3 | ||||||||||
Кликните здесь для просмотра всего текста
Кликните здесь для просмотра всего текста
Код
cls set masm64_path=\masm64\ set filename=%1 %masm64_path%bin\RC /r %filename%.rc || exit %masm64_path%bin\cvtres /machine:X64 %filename%.res || exit %masm64_path%bin\ml64 /Cp /c /I"%masm64_path%Include" %filename%.asm || exit %masm64_path%bin\link /SUBSYSTEM:WINDOWS /LIBPATH:"%masm64_path%Lib" ^ /entry:WinMain %filename%.obj %filename%.res /LARGEADDRESSAWARE:NO ^ /ALIGN:16 /SECTION:.text,W ^ /BASE:0x400000 /STUB:%masm64_path%\bin\stubby.exe || exit del %filename%.obj del %filename%.res Кликните здесь для просмотра всего текста
1
|
Ушел с форума
16338 / 7659 / 1075
Регистрация: 11.11.2010
Сообщений: 13,696
|
|
10.04.2015, 04:44 | 4 |
"Причесанный" вариант с менюшкой
Во вложении bat-,asm-,rc-,exe-файлы, а также rc.exe и cvtres.exe
1
|
vita et mortuus
1796 / 696 / 152
Регистрация: 10.06.2009
Сообщений: 2,736
|
|
10.04.2015, 06:12 [ТС] | 5 |
Mikl___, Я понял в чём была проблема.
При линковке нужно указывать именно ресурс rsrc.res, а я думал как по старинке прилинковать обектник. Код
rem %masm64_path%bin\cvtres /machine:X64 %filename%.res || exit Эту строчку можно выкинуть. =) И заставить менюшку появиться удалось, только через создание WNDCLASSEX Структуры. Фишка с menu_handlers в вашем примере будет работать только если используются короткие id ресурсов. Что-то непонятное с работой длинных ID ресурсов, нужен макрос.
0
|
Ушел с форума
16338 / 7659 / 1075
Регистрация: 11.11.2010
Сообщений: 13,696
|
|
10.04.2015, 06:18 | 6 |
NoNaMe,
ничего подобного, у меня ресурс имеет то же имя что и асм-файл, при этом всё собирается нормально
0
|
vita et mortuus
1796 / 696 / 152
Регистрация: 10.06.2009
Сообщений: 2,736
|
||||||
10.04.2015, 12:11 [ТС] | 7 | |||||
main.asm
resource.h
Код
#define VER_FILEVERSION 1,0,0,0 #define VER_PRODUCTVERSION 1,0,0,0 #define IDM_TEST 0x00 #define IDM_OPEN 0x01 #define IDM_SAVE 0x02 #define IDM_EXIT 0x03 #define VER_COMPANYNAME_STR "Iternal Developers \000" #define VER_FILEDESCRIPTION_STR "Description Of Application \000" #define VER_FILEVERSION_STR "1.0\000" #define VER_INTERNALNAME_STR "Item Name\000" #define VER_ORIGINALFILENAME_STR "main.exe\000" #define VER_LEGALCOPYRIGHT_STR "\251 1995-2015 Iternal Developers. All right!\000" #define VER_LEGALTRADEMARKS1_STR "VER_LEGALTRADEMARKS1_STR\000" #define VER_LEGALTRADEMARKS2_STR "VER_LEGALTRADEMARKS2_STR\000" #define VER_PRODUCTNAME_STR "Item Name\000" #define VER_PRODUCTVERSION_STR "1.0\000" resource.inc
Код
VER_FILEVERSION equ 1,0,0,0 VER_PRODUCTVERSION equ 1,0,0,0 IDM_TEST equ 0h IDM_OPEN equ 1h IDM_SAVE equ 2h IDM_EXIT equ 3h VER_COMPANYNAME_STR equ "Iternal Developers \000" VER_FILEDESCRIPTION_STR equ "Description Of Application \000" VER_FILEVERSION_STR equ "1.0\000" VER_INTERNALNAME_STR equ "Item Name\000" VER_ORIGINALFILENAME_STR equ "main.exe\000" VER_LEGALCOPYRIGHT_STR equ "\251 1995-2015 Iternal Developers. All right!\000" VER_LEGALTRADEMARKS1_STR equ "VER_LEGALTRADEMARKS1_STR\000" VER_LEGALTRADEMARKS2_STR equ "VER_LEGALTRADEMARKS2_STR\000" VER_PRODUCTNAME_STR equ "Item Name\000" VER_PRODUCTVERSION_STR equ "1.0\000" rsrc.rc
Код
#include "resource.h" #include "D:\masm\masm32\include\Resource.h" //LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT //# //# Menu //# //IDR_MENU MENUEX MOVEABLE IMPURE LOADONCALL DISCARDABLE IDR_MENU MENU { POPUP "&File" { MENUITEM "&Test", IDM_TEST MENUITEM "&Open", IDM_OPEN MENUITEM "&Save", IDM_SAVE MENUITEM SEPARATOR//MENUITEM "", , 0x0800// MENUITEM "&Exit", IDM_EXIT } MENUITEM "&Exit", IDM_EXIT } VS_VERSION_INFO VERSIONINFO FILEVERSION VER_FILEVERSION PRODUCTVERSION VER_PRODUCTVERSION FILEOS VOS_UNKNOWN | VOS__WINDOWS32 | VOS_NT_WINDOWS32 FILETYPE VFT_APP // FILETYPE VFT_DLL { BLOCK "StringFileInfo" { BLOCK "040904B0" { VALUE "CompanyName", VER_COMPANYNAME_STR VALUE "FileDescription", VER_FILEDESCRIPTION_STR VALUE "FileVersion", VER_FILEVERSION_STR VALUE "InternalName", VER_INTERNALNAME_STR VALUE "LegalCopyright", VER_LEGALCOPYRIGHT_STR VALUE "LegalTrademarks1", VER_LEGALTRADEMARKS1_STR VALUE "LegalTrademarks2", VER_LEGALTRADEMARKS2_STR VALUE "OriginalFilename", VER_ORIGINALFILENAME_STR VALUE "ProductName", VER_PRODUCTNAME_STR VALUE "ProductVersion", VER_PRODUCTVERSION_STR } } BLOCK "VarFileInfo" { VALUE "Translation", 0x409, 1200 } } make64.bat
Код
@echo off if not exist rsrc.rc goto empty D:\masm\masm64\bin\rc /r /v "rsrc.rc" rem D:\masm\masm64\bin\cvtres /machine:x64 "rsrc.res" :empty if exist "%1.obj" del "%1.obj" if exist "%1.exe" del "%1.exe" D:\masm\masm64\bin\ml64 /c /Cp /I"D:\masm\masm64\include" "%1.asm" "%1.def" if errorlevel 1 goto errasm if not exist rsrc.res goto nores D:\masm\masm64\bin\Link /LIBPATH:"D:\masm\masm64\lib" /ENTRY:WinMain /SUBSYSTEM:WINDOWS /LARGEADDRESSAWARE:NO /SECTION:.text,W /BASE:0x400000 /ALIGN:16 /stub:stub.exe "%1.obj" "rsrc.res" if errorlevel 1 goto errlink dir "%1.*" goto TheEnd :nores D:\masm\masm64\bin\Link /LIBPATH:"D:\masm\masm64\lib" /ENTRY:WinMain /SUBSYSTEM:WINDOWS /ALIGN:16 /stub:stub.exe "%1.obj" if errorlevel 1 goto errlink dir "%1.*" goto TheEnd :errlink echo _ echo Link error goto TheEnd :errasm echo _ echo Assembly Error goto TheEnd call "%1.exe" :TheEnd Я вот так собираю. Добавлено через 3 часа 13 минут Не по теме: Mikl___, Спасибо за интересные примеры.
1
|
10.04.2015, 12:11 | |
10.04.2015, 12:11 | |
Помогаю со студенческими работами здесь
7
Ошибка в работе виджета Vertical Mega Menu Ошибка при нажатии на один из компонентов Main.Menu Masm64 masm64 и winAPI Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |