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);
}
Ошибка при создании ToolTip'а в dll
Люди, подскажите пожалуйста, уже который день бьюсь. Пробую сделать тултип. Когда делаю в основной ехешке - то все отлично работает, но когда пытаюсь вынести тоже самое в длл, SendMessage TTM_ADDTOOL все время возвращает false. Что может быть не так?