Сборник часто задаваемых вопросов по программированию в среде Borland C++ Builder

           

Как сделать ,чтобы мое приложение всегда было в фокусе?



Вопрос: Как сделать ,чтобы мое приложение всегда было в фокусе?

Ответ : Можно так: code: -------------------------------------------------------------------------------- void BringToFrontWindow(HWND hWnd) { HWND hCurrWnd; int iMyTID; int iCurrTID; hCurrWnd = ::GetForegroundWindow(); iMyTID = GetCurrentThreadId(); iCurrTID = GetWindowThreadProcessId(hCurrWnd,0); AttachThreadInput(iMyTID, iCurrTID, TRUE); SetForegroundWindow(hWnd); AttachThreadInput(iMyTID, iCurrTID, FALSE); } -------------------------------------------------------------------------------- здесь hWnd Handle окна приложения которое д.б. активным. Можно сделать постоянным фокус на окне и с помощью CBT_Hook. Правда для этого придётся слепить DLL. Приведу лишь сам отработчик для WH_CBT, из проверенного в работе примера. code: -------------------------------------------------------------------------------- LRESULT CALLBACK CBTProc( int nCode, // hook code WPARAM wParam, // depends on hook code LPARAM lParam // depends on hook code ) { if (nCode<0) return CallNextHookEx(HookData->hHook,nCode,wParam,lParam); if(nCode==HCBT_ACTIVATE) { if(HookData->hWnd !=(HWND)wParam)SetForegroundWindow(HookData->hWnd); } if(nCode==HCBT_SYSCOMMAND)return 0; if(HookData->hWnd ==(HWND)wParam)return 0; else return 1; } --------------------------------------------------------------------------------

Содержание раздела