Пытаюсь вывести текст в чужом окне, получаю его HWND, создаю окно с ним в качестве родителя. Оно появляется, но постоянно затирается, то появится, то исчезнет. Как нужно правильно делать?
void main()
{
..............
GetClassInfo(GetModuleHandle(NULL), L"STATIC", &wcls);
CopyMemory(&wcl, &wcls, sizeof(WNDCLASS));
wcl.hInstance = GetModuleHandle(NULL);
wcl.lpszClassName = L"FTInfoWin";
wcl.lpfnWndProc = (WNDPROC)WinDialogProc;
wcl.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
RegisterClass(&wcl);
HWND hwnd = CreateWindow( L"FTInfoWin",
L"",
WS_CHILD,
posx, posy,
15, 15,
parent->HWnd(), // HWND чужого окна
(HMENU)"",
GetModuleHandle(NULL),
NULL);
if (hwnd)
{
ShowWindow(hwnd,SW_SHOW);
UpdateWindow(hwnd);
SetWindowPos(hwnd, HWND_TOPMOST, posx, posy, 15, 15, SWP_SHOWWINDOW);
}
...............
}
int CFTChildWindow::OnDraw()
{
PAINTSTRUCT ps;
HDC hDC = GetDC(hWnd);
SetBkColor(hDC, RGB(0,0,0));
SetTextColor(hDC, RGB(0,255,0));
wchar_t text[255];
if (_itow(iValue, text, 10))
TextOut(hDC, 0,0, text, wcslen(text));
return 1;
}
LRESULT CALLBACK WinDialogProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
switch (msg)
{
case WM_PAINT:
{
LRESULT r = DefWindowProc(hWnd,msg,wParam,lParam);
if (windows.find(hWnd)!=windows.end())
{
windows[hWnd]->OnDraw(); // рисуем наш контрол
}
return r;
}
break;
}
}