Происходит непонятный глюк при вкл. ниже следующего манифеста в ресурсы. Заключается в том, что при запуске через проводник окно не появляется. Far-ом к примеру запускается на ура. Почему так? manifest.xml: Код (Text): <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="X86" publicKeyToken="6595b64144ccf1df" language="*"/> </dependentAssembly> </dependency> </assembly> test.asm: Код (Text): invoke DialogBoxParam, hInstance, MAINDLG, NULL, ADDR DlgProc, NULL invoke ExitProcess, eax DlgProc proc hWnd:HWND, Msg:UINT, wParam:WPARAM, lParam:LPARAM .IF Msg==WM_INITDIALOG mov eax, TRUE .ELSEIF Msg==WM_CLOSE invoke EndDialog, hWnd, NULL mov eax, TRUE .ELSEIF Msg==WM_COMMAND mov eax, TRUE .ELSE mov eax, FALSE .ENDIF ret DlgProc endp test.rc: Код (Text): #define MAINDLG 1000 #define IDC_BUTTON1 1001 #define IDR_XPMANIFEST1 1 MAINDLG DIALOGEX 0, 0, 120, 54 STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | DS_CENTER CAPTION "Test" FONT 12, "MS Shell Dlg" BEGIN PUSHBUTTON "Button1",IDC_BUTTON1,35,20,50,14 END IDR_XPMANIFEST1 MANIFEST "manifest.xml"
PS. OS - XP SP2 Если в свойствах файла вкл. режим совместимости с Windows 98/Me, запускается нормально.
Всё замечательно запускается без каких-либо дополнительных усилий. Тем не менее: Либо добавить "#define MANIFEST 24", либо исправить эту строчку на "IDR_XPMANIFEST1 24 "manifest.xml"
G13 Заработало!!!! Блин, думал у меня в resource.h MANIFEST дефайнед... Спасибо!!! PS. Посмотрел - а он там действительно прописан, а в начале .rc файла: #include "\masm32\include\resource.h".
Поймал этот глюк снова. Но теперь всё прописано как требуется и как выяснилось проблема вообще была в другом. )) Я просто не подключил comctl32.lib к проекту. Не подключал потому что все раньше работало и без соотв. инклуда comctl32.lib... К тому же прога не запускается даже если манифест не в ресурсах, а валяется рядом. Стоит его удалить - всё работает как должно. Смутные подозрения, что трабла на самом деле не с прогой, а со средой выполнения. Прогнал через Dependency Walker. Он показал загрузку кучи всякой левой дряни типа WL_HOOK.DLL от файрвола. Там же видно, что нелады какие то с comctl32.dll И последнее: Прога нормально запускается под другой ОС (пробовал на Windows7). Вот. Теперь бы выяснить, что именно портит всю малину... Как бы эти хитрые хук-длл по одиночке по отключать?