Получил hWnd окна созданного другой (своей же) программой.
Далее делаю:
CWnd* pWnd;
pWnd = new CWnd;
if (pWnd->Attach(hwnd))
{
CDC* dc;
dc=pWnd->GetDC(); dc->TextOut(50,50,"dwgweeeeeeeeeeeeeeeee");
}
Не пишет, хотя в дебаггере все указатели не нулевые.
Почему?
Здравствуйте, avt1, Вы писали:
A>Получил hWnd окна созданного другой (своей же) программой. A>Далее делаю: A>CWnd* pWnd; A>pWnd = new CWnd; A>if (pWnd->Attach(hwnd)) A>{ A>CDC* dc; A>dc=pWnd->GetDC(); dc->TextOut(50,50,"dwgweeeeeeeeeeeeeeeee"); A>} A>Не пишет, хотя в дебаггере все указатели не нулевые. A>Почему?
Потому что вы неправильно делаете.
Ваш этот тестовый текс должен отрисовыватся самим окном в OnPaint или OnDraw
Здравствуйте, Serguei666, Вы писали:
>Ваш этот тестовый текс должен отрисовыватся самим окном в >OnPaint или kl;;l;OnDraw
Отдельно, в обработчике OnOk() в свое диалоговое окно запись проходит и без OnPaint:
CDC* dc;
dc=GetDC(); dc->TextOut(20,20,"dwgweeeeeeeeeeeeeeeee");
Если правда Ваша, то как именно, используя указанные Вами обработчики, писать в окно другой программы?
Здравствуйте, avt1, Вы писали:
A>Здравствуйте, Serguei666, Вы писали:
>Ваш этот тестовый текс должен отрисовыватся самим окном в >OnPaint или kl;;l;OnDraw
A>Отдельно, в обработчике OnOk() в свое диалоговое окно запись проходит и без OnPaint:
Проходить-то, может, и проходит, но это будет стерто после первой же перерисовки окна (вызванной, например, тем, что вы переключились на другое приложение и затем переключились обратно).
A>CDC* dc; A>dc=GetDC(); dc->TextOut(20,20,"dwgweeeeeeeeeeeeeeeee"); A>Если правда Ваша, то как именно, используя указанные Вами обработчики, писать в окно другой программы?
Заводите в вашем окне переменную типа CString, и рисуете ее содержимое в OnPaint или OnDraw (в зависимости от того, от кого ваше окошко унаследовано)
// Приведенный вами код меняется на этот:
CYourWnd *pWnd = // вы, наверное, знаете, откуда это взять pWnd->SetMyText("dwgweeeeeeeeeeeeeeeee"); pWnd->Invalidate(); // заставим окно перерисоваться.
// CMyWnd::OnPaint или CMyWnd::OnDraw
{
...
if(!m_MyText.IsEmpty()) pDC->TextOut(50,50,m_MyText);
...
}