Floating window beside the main app window
Hi everybody,
I am experiencing a problem that I cannot somehow properly
comprehend...
In my project there is a thread function that runs OK. This function
calls just after the thread start another func
CreateScreenWindow(theApp.m_hInstance);
Its purpose is to create an additional window displaying some extra
output data. The func has the following content :
static void CreateScreenWindow(HINSTANCE hInst) {
const char* className = "ScreenWindow";
WNDCLASS wc;
memset(&wc, 0, sizeof(WNDCLASS));
wc.style = CS_OWNDC;
wc.lpfnWndProc = (WNDPROC)WndProc;
wc.hInstance = hInst;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wc.lpszClassName = className;
if (RegisterClass(&wc) == 0) {
char buf[128];
sprintf(buf, "Failed to register class (%d)", GetLastError());
MessageBox(NULL, buf, NULL, MB_OK);
return;
}
else {
char buf[128];
sprintf(buf, "Class registered");
MessageBox(NULL, buf, NULL, MB_OK);
}
RECT clientSize;
clientSize.top = 0;
clientSize.left = 0;
clientSize.right = 400;
clientSize.bottom = 250;
DWORD style = WS_BORDER | WS_CAPTION;
AdjustWindowRect(&clientSize, style, FALSE);
int winWidth = clientSize.right - clientSize.left;
int winHeight = clientSize.bottom - clientSize.top;
int winLeft = (GetSystemMetrics(SM_CXSCREEN) - winWidth) / 2;
int winTop = (GetSystemMetrics(SM_CYSCREEN) - winHeight) / 2;
hScreen = CreateWindow(className, "toolscreen", style, winLeft,
winTop, winWidth, winHeight, 0, 0, hInst, 0);
if (hScreen == 0) {
char buf[128];
sprintf(buf, "Failed to create window (%d)", GetLastError());
MessageBox(NULL, buf, NULL, MB_OK);
return;
}
ShowWindow(hScreen, SW_SHOW);
UpdateWindow(hScreen);
MoveWindow(hScreen, winLeft, winTop, winWidth, winHeight, TRUE);
}
Indeed, the windows appears on the screen and has wanted size and
caption, but not the position and the color.
What is even worse, it does not have the arrow cursor but only the
sand glass - obviously being too busy with something that I cannot
identify... This window cannot be moved either...
The thread that has created this window runs happily further and works
also properly (its task is not involved with the window - yet, but
should do later).
I tryed to comment out the both last code lines (Update.. and Move..)
with no difference in the behaviour.
I would highly appreciate any ideas aiding to solve my problem.
Kind regards
Victor