Главная страница | назад





Article #16489: How to keep a window always on top

 Question and Answer Database
FAQ1489C.txt How to keep a window always on top
Category :OWL
Platform :All
Product :BC++ 5.x
Question:
How can i leave a Window (excat an TDialog Object)
always on top (for example like the clock in Win 3.1)
Answer:
To keep a window on top of the others at all time, use the
EV_WM_ACTIAVTE message and EvActivate function. I'll include
some of the code below:
void DFrame::EvActivate(UINT active, BOOL minimized,
HWND hWndOther)
{
::BringWindowToTop(GetLastActivePopup());
DefaultProcessing();
}
Also remember to include the lines
HWND hwndInsertAfter = HWND_TOPMOST; and
SetWindowPos(hwndInsertAfter, 0, 0, 0, 0, SWP_NOMOVE |
SWP_NOSIZE);
in SetupWindow.
Futher more the InitInstance function in the application class
should read something like this:
void DApp::InitInstance()
{
if (hPrevInstance) {
HWND hwnd = ::FindWindow(WINCLASSNAME, 0);
if (hwnd) {
hwnd = GetLastActivePopup(hwnd);
BringWindowToTop(hwnd);
ShowWindow(hwnd, SW_RESTORE);
}
PostAppMessage(GetCurrentTask(), WM_QUIT, 0, 0);
}
else
TApplication::InitInstance();
}
7/2/98 10:32:32 AM

Last Modified: 01-SEP-99