B
bearpaw
Салют, господа!
Прошу Вашей помощи в борьбе с собственным недопониманием)
Есть окно, созданное в чужом процессе.
С помощью Get/SetWindowLong подменяю оконную процедуру этого окна на свою. При приходе определенной месаги создаю окно, родителем которой является это чужое окно (т.е. дочернее оно).
Все бы хорошо, но на созданном окне я не могу ничего нарисовать. В смысле BeginPaint...EndPaint не катит.
Пробовал брать hdc родителя и рисовать на него (что, логично, должно работать) - результат такой же (пустое окно).
Вот, на всякий случай WM_PAINT из оконной процедуры этого дочернего окна
Код:
Буду благодарен за помощь!
P.S.: сообщения к окну приходят нормально.
Прошу Вашей помощи в борьбе с собственным недопониманием)
Есть окно, созданное в чужом процессе.
С помощью Get/SetWindowLong подменяю оконную процедуру этого окна на свою. При приходе определенной месаги создаю окно, родителем которой является это чужое окно (т.е. дочернее оно).
Все бы хорошо, но на созданном окне я не могу ничего нарисовать. В смысле BeginPaint...EndPaint не катит.
Пробовал брать hdc родителя и рисовать на него (что, логично, должно работать) - результат такой же (пустое окно).
Вот, на всякий случай WM_PAINT из оконной процедуры этого дочернего окна
Код:
C++:
case WM_PAINT:
{
RECT rt;
GetWindowRect(hWnd,&rt);
HDC LtmDC = GetDC(GetParent(hWnd));
HDC TmpDC = CreateCompatibleDC(LtmDC);
HBITMAP TmpBMP = CreateCompatibleBitmap(TmpDC,rt.right,rt.bottom);
HBITMAP oldTmpBMP = (HBITMAP)SelectObject(TmpDC,TmpBMP);
HBRUSH brsh=CreateSolidBrush(RGB(128,0,0));
FillRect(TmpDC,&rt,brsh);
SetBkMode(TmpDC,TRANSPARENT);
SetTextColor(TmpDC,RGB(0,128,0));
DrawText(TmpDC,L"Tap to close",12,&rt,DT_CENTER|DT_VCENTER);
BitBlt(LtmDC,rt.left,rt.bottom,rt.right-rt.left,rt.bottom-rt.top,TmpDC,0,0,SRCCOPY);
SelectObject(TmpDC,oldTmpBMP);
DeleteObject(TmpBMP);
DeleteObject(brsh);
ReleaseDC(GetParent(hWnd),LtmDC);
}
break;
Буду благодарен за помощь!
P.S.: сообщения к окну приходят нормально.