Короче есть набор dll'ек в каждой по одной propertypage. dll'ки загрудаются динамически в основную прогу и там собирается propertysheet . В dll'ках объявлены функции (которые экспортируются), в которых создаются экземпляры страниц.
Косяк в том, что при формировании propertypage ресурс, который, как вы сами догадались, находится в dll'ке — не грузится. короче нужно чо-та с ресурсом dll'и придумать....
Вопрос: ЧТО?????
Здравствуйте CyberKir, Вы писали:
CK>Короче есть набор dll'ек в каждой по одной propertypage. dll'ки загрудаются динамически в основную прогу и там собирается propertysheet . В dll'ках объявлены функции (которые экспортируются), в которых создаются экземпляры страниц.
CK>Косяк в том, что при формировании propertypage ресурс, который, как вы сами догадались, находится в dll'ке — не грузится. короче нужно чо-та с ресурсом dll'и придумать....
CK>Вопрос: ЧТО?????
А AFX_MANAGE_STATE ты не забываешь делать???
void MyFunc()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState( ));
...
some code
...
}
Здравствуйте CyberKir, Вы писали:
CK>Короче есть набор dll'ек в каждой по одной propertypage. dll'ки загрудаются динамически в основную прогу и там собирается propertysheet . В dll'ках объявлены функции (которые экспортируются), в которых создаются экземпляры страниц.
CK>Косяк в том, что при формировании propertypage ресурс, который, как вы сами догадались, находится в dll'ке — не грузится. короче нужно чо-та с ресурсом dll'и придумать....
CK>Вопрос: ЧТО?????
Копай в сторону AfxSetResourceHandle()
вдогонку...
---MSDN---
Call this macro to protect an exported function in a DLL. When this macro is invoked, pModuleState is the effective module state for the remainder of the immediate containing scope. Upon leaving the scope, the previous effective module state will be automatically restored.
The AFX_MODULE_STATE structure contains global data for the module, that is, the portion of the module state that is pushed or popped.
---MSDN---
Здравствуйте KaSA, Вы писали:
KSA>А AFX_MANAGE_STATE ты не забываешь делать???
KSA>KSA>void MyFunc()
KSA>{
KSA>AFX_MANAGE_STATE(AfxGetStaticModuleState( ));
KSA>...
KSA>some code
KSA>...
KSA>}
KSA>
Вот то, что есть у меня в dll:
[ccode]
HRESULT CreatePropPage(HMODULE hModule, void** ppv)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState( ));
CDBProviderPropPage* pPropPage;
// Создание нового экземпляра объекта
pPropPage = new CDBProviderPropPage(hModule);
if ( pPropPage == 0 )
return( E_OUTOFMEMORY );
*ppv = pPropPage;
return (S_OK);
}
[/code]
Эта функция и экспортируется.
А это результат компиляции:
DBProvider error LNK2005: _DllMain@12 already defined in DBProvider.obj
В догонку. это я написал :))))))