Когда я вызываю процедуру COM объекта, который является переменной структуры, происходит ошибкаю. Код (Text): struct DDRAWVARS DDraw DirectDraw DDSPrimary DirectDrawSurface DDSBack DirectDrawSurface DDClipper DirectDrawClipper ddsd DDSURFACEDESC ddscaps DDSCAPS ends ............. ............. ............. DDr DDRAWVARS ............. ............. ............. invoke DirectDrawCreate,NULL,DDr.DDraw,NULL cominvk DDr.DDraw,SetCooperativeLevel,[Hwnd],DDSCL_NORMAL Это моя ошибка или ошибка компилятора, то есть макрос не правильно составлен?
Программа не правильно компилируется, ну и соответственно не правильно работает. Вот дизасм: Код (Text): Так компилируется: push 0 ; pUnkOuter push offset lpDD ; lplpDD push 0 ; lpGUID call ds:DirectDrawCreate push 8 push ds:hWnd mov eax, ds:lpDD push eax mov eax, [eax] call ds:dword_402054[eax] А так должно компилироваться: push 0 ; pUnkOuter push offset lpDD ; lplpDD push 0 ; lpGUID call ds:DirectDrawCreate push 8 push ds:hWnd mov eax, ds:lpDD push eax mov eax, [eax] call dword ptr [eax+50h]