Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Не появляется диалог

249
04 июля 2006 года
DissDoc
639 / / 01.10.2004
Работаю с Custom Control. Сразу хочу сказать - что в exe - работает, а в dll - не работает!!! Просто располагаю кастомконтрол. А диалог не появляется! Куда копать? (В кастомконтроле - прописываю имя класса, с табстопа убираю галочку - т.е. все по человечески, проверяю в ехе - работает(!), а в длл - нет)
324
04 июля 2006 года
AndreySar
532 / / 01.08.2004
[QUOTE=DissDoc]Работаю с Custom Control. Сразу хочу сказать - что в exe - работает, а в dll - не работает!!! Просто располагаю кастомконтрол. А диалог не появляется! Куда копать? (В кастомконтроле - прописываю имя класса, с табстопа убираю галочку - т.е. все по человечески, проверяю в ехе - работает(!), а в длл - нет)[/QUOTE]

AFX_EXT_CLASS ???
3
04 июля 2006 года
Green
4.8K / / 20.01.2000
Копай в сторону AFX_MANAGE_STATE(AfxGetAppModuleState()).
398
05 июля 2006 года
Alexandoros
630 / / 21.10.2005
[QUOTE=DissDoc]Работаю с Custom Control. Сразу хочу сказать - что в exe - работает, а в dll - не работает!!! Просто располагаю кастомконтрол. А диалог не появляется! Куда копать? (В кастомконтроле - прописываю имя класса, с табстопа убираю галочку - т.е. все по человечески, проверяю в ехе - работает(!), а в длл - нет)[/QUOTE]

Мало инфы. Длл меджду прочим так просто не создаст свой диалог из ресурса.
1.8K
05 июля 2006 года
k3Eahn
365 / / 19.12.2005
[quote=Alexandoros]Мало инфы.[/quote]
Ага, экстрасенсов здесь нет.
5.9K
05 июля 2006 года
Zushenskiy
161 / / 29.06.2006
Все очень просто когда происходит DLL_PROCESS_ATTACH берешь и сохраняешь HANDLE(это есть екземпляр твоей dll) а потом при загрузки ресурсов используешь этот екземпляр

HANDLE hInst;
BOOL APIENTRY DllMain( HANDLE hModule,DWORD ul_reason_for_call, LPVOID lpReserved)
{
if(ul_reason_for_call == DLL_PROCESS_ATTACH)
{
hInst = hModule;
}

return 0;
}
249
05 июля 2006 года
DissDoc
639 / / 01.10.2004
Спасибо за помощь.но я от такого способа уже отказался - делать через длл (((((( Я хочу попробовать сделать через длл - но когда время будет ;)
1.8K
05 июля 2006 года
k3Eahn
365 / / 19.12.2005
Вот накатал пример (не знаю поможет или нет):
код для dll:
Код:
#include "resource.h"
BOOL CALLBACK DlgProc(HWND,UINT,WPARAM,LPARAM);
BOOL APIENTRY DllMain( HANDLE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
      )
{
 WNDCLASSEX wcex;
 GetClassInfoEx(NULL,"EDIT",&wcex);
 wcex.cbSize=sizeof(WNDCLASSEX);
 wcex.lpszClassName="SUPER";
 wcex.hInstance=(HINSTANCE)hModule;
 RegisterClassEx(&wcex);
 
 DialogBoxParam((HINSTANCE)hModule,MAKEINTRESOURCE(IDD_DIALOG),NULL,DlgProc,0);
    return TRUE;
}
BOOL CALLBACK DlgProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
 switch(uMsg)
 {
  case WM_CLOSE:
  {
   EndDialog(hWnd,0);
   break;
  };
 };
 return FALSE;
}

В ресурсах соответственно диалог IDD_DIALOG с CustomControl с классом SUPER.
exe:
 
Код:
int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
  // TODO: Place code here.
 LoadLibrary("имя_dll.dll");
 return 0;
}
249
05 июля 2006 года
DissDoc
639 / / 01.10.2004
Я записал твой пример - проверю )))
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог