Поскажите в чем проблема? необходимо создать Image List ;----------------------- call InitCommonControls push 0 push 3 push ILC_MASK push 16 push 16 call ImageList_Create ;--------------------------- выдает сообщение под отладчиком: ERROR_NOTENOGH_MEMORY В SDK приведен слеующий пример : extern int g_nBird, g_nTree; #define CX_ICON 32 #define CY_ICON 32 #define NUM_ICONS 3 HIMAGELIST AddIconsToImageList(HINSTANCE hinst) { HIMAGELIST himlIcons; // handle to new image list HICON hicon; // handle to icon // Ensure that the common control DLL is loaded. InitCommonControls(); // Create a masked image list large enough to hold the icons. himlIcons = ImageList_Create(CX_ICON, CY_ICON, ILC_MASK, NUM_ICONS, 0); // Load the icon resources, and add the icons to the image list. hicon = LoadIcon(hinst, MAKEINTRESOURCE(IDI_BIRD)); g_nBird = ImageList_AddIcon(himlIcons, hicon); hicon = LoadIcon(hinst, MAKEINTRESOURCE(IDI_TREE)); g_nTree = ImageList_AddIcon(himlIcons, hicon); return himlIcons; }
На С++ может и работает а на asme? Просто очень много нюансов, многие структуры и переменные для АПИ должны быть static что означает невозможность использованния стека для их создания и тд. тп. и нигде эти нюансы не описанны хотя возможно системный глюк? Если кто знает в чем дело подскажите плз.
Ну вот и на масме попробовал, работает. Код (Text): .386P ;¯«®áª ï ¬®¤¥«ì .MODEL FLAT, STDCALL ;¯à®â®â¨¯ë ¢¥è¨å ¯à®æ¥¤ãà EXTERN MessageBoxA@16:NEAR EXTERN ExitProcess@4:NEAR EXTERN InitCommonControls@0:NEAR EXTERN ImageList_Create@20:NEAR ;¤¨à¥ªâ¨¢ë ª®¬¯®®¢é¨ªã ¤«ï ¯®¤ª«îç¥¨ï ¡¨¡«¨®â¥ª INCLUDELIB d:\masm32\lib\user32.lib INCLUDELIB d:\masm32\lib\kernel32.lib INCLUDELIB d:\masm32\lib\shell32.lib INCLUDELIB d:\masm32\lib\shell32.lib INCLUDELIB d:\masm32\lib\comctl32.lib ;----------------------------------------------- ;ᥣ¬¥â ¤ ëå _DATA SEGMENT DWORD PUBLIC USE32 'DATA' _DATA ENDS ;ᥣ¬¥â ª®¤ _TEXT SEGMENT DWORD PUBLIC USE32 'CODE' START: CALL InitCommonControls@0 PUSH 0 PUSH 3 PUSH 1 PUSH 16 PUSH 16 CALL ImageList_Create@20 PUSH 1 CALL ExitProcess@4 _TEXT ENDS END START Это не китайски - это дос кодировка. InitCommonControls@0 конечно надо было после ExitProcess@4 всунуть, но решил не портить чистоту эксперимента. В EAX не ноль.
zaqer Откуда значение ERROR_NOTENOGH_MEMORY? Если просто видно под отладчиком, но функция вернула ненулевой хэндл, то попробуй использовать этот хэндл далее.