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

Ваш аккаунт

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

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

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

Ошибка при создании ToolTip'а в dll

52K
01 сентября 2009 года
CoolFaer
1 / / 01.09.2009
Люди, подскажите пожалуйста, уже который день бьюсь. Пробую сделать тултип. Когда делаю в основной ехешке - то все отлично работает, но когда пытаюсь вынести тоже самое в длл, SendMessage TTM_ADDTOOL все время возвращает false. Что может быть не так?

Код:
HWND hToolTip = NULL;
HMODULE hGlobalModule = NULL;

BOOL APIENTRY DllMain( HMODULE hModule,DWORD  ul_reason_for_call,LPVOID lpReserved)
{
  switch (ul_reason_for_call)
  {
     case DLL_PROCESS_ATTACH:
     {
           hGlobalModule = hModule;
   
        WNDCLASS popupcl;
        memset(&popupcl, 0, sizeof(popupcl));
        popupcl.lpszClassName = POPUPCLASS;
        popupcl.lpfnWndProc = (WNDPROC)WinPopupProc;
        popupcl.hInstance = hGlobalModule;
        popupcl.style = CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW;
        popupcl.hIcon = LoadIcon(NULL, IDI_APPLICATION);
        popupcl.hCursor = LoadCursor(NULL, IDC_ARROW);
        popupcl.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
        ATOM retpopup = RegisterClass(&popupcl);

        hThread = CreateThread( NULL,                   // default security attributes
                    0,                      // use default stack size  
                    ThreadMessages,         // thread function name
                    NULL,                   // argument to thread function
                    0,                      // use default creation flags
                    &dwThreadId);           // returns the thread identifier
        }
        break;
     }
.......................
}

DWORD WINAPI ThreadMessages( LPVOID lpParam )
{
    hPopupInfo = CreateWindowEx(    WS_EX_TOPMOST,
                            POPUPCLASS,
                            L"popapchik",
                            WS_POPUP | WS_VISIBLE,
                            50, 50,
                            100, 100,
                            NULL,
                            (HMENU)NULL,
                            hGlobalModule,
                            NULL);
    if(hPopupInfo) ShowWindow(hPopupInfo, SW_SHOW);

    hToolTip = CreateWindowEx(WS_EX_TOPMOST, TOOLTIPS_CLASS, NULL,
                TTS_ALWAYSTIP,
                CW_USEDEFAULT, CW_USEDEFAULT,
                CW_USEDEFAULT, CW_USEDEFAULT,
                hPopupInfo, 0, hGlobalModule, NULL );

    MSG msg;
    while (GetMessage( &msg, NULL, 0, 0 ))
    {
        if (msg.message==WM_QUIT)  
            break;
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return 0;
}

LRESULT CALLBACK WinPopupProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    switch (msg)
    {
      case WM_LBUTTONUP:
        {
            TOOLINFO tooltip = {0};
            tooltip.cbSize = sizeof(TOOLINFO);
            tooltip.uFlags = TTF_SUBCLASS;
            tooltip.hinst = hGlobalModule;
            tooltip.uId = 0;
            tooltip.hwnd = hWnd;
            tooltip.lpszText = L"tooltip";
            tooltip.rect.right = 50;
            tooltip.rect.bottom = 50;

            if (SendMessage(hToolTip, TTM_ADDTOOL, 0, LPARAM(&tooltip)) != TRUE)
                Logger::Log("Error add tooltip\n");      //////!!!!!!!!Всегда возвращается ошибка!!!
        }
            break;
    }
    return DefWindowProc(hWnd, msg, wParam, lParam);
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог