WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  C / C++ / Visual C++
  hwnd активного окна

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   hwnd активного окна
server_mouse опубликован 08-08-2001 10:18 MSK   Click Here to See the Profile for server_mouse   Click Here to Email server_mouse  
Hi ALL!
Как получить сабж? Т.е. окно с которым в данный момент работает юзер. Хочется мне в его заголовок написать от себя...
server_mouse опубликован 08-08-2001 10:29 MSK     Click Here to See the Profile for server_mouse  Click Here to Email server_mouse     
Кстати такой вот код не работает:
CString s;
s="MyString";
SetWindowText(GetActiveWindow(),(LPCTSTR)s);

Почему?

OlegO опубликован 08-08-2001 11:02 MSK     Click Here to See the Profile for OlegO  Click Here to Email OlegO     
Потому что:
However, SetWindowText cannot change the text of a control in another application.
talex опубликован 08-08-2001 11:13 MSK     Click Here to See the Profile for talex  Click Here to Email talex     
Все ок, только надо использовать не GetActiveWindow, a GetForegroundWindow. Разница описана в MSDN(the question is in thread).
server_mouse опубликован 08-08-2001 11:26 MSK     Click Here to See the Profile for server_mouse  Click Here to Email server_mouse     
Интересно, а почему тогда работает следующий код:
{
HWND hw;
if(NULL!=(hw=::FindWindow("#32770","PrTst")))
SetWindowText(hw,(LPCTSTR)s);
}

PrTst -- мой маленький тестовый диалог. ;-)
IMHO винда особым образом передаёт параметры SetWindowText, через границу процессов. В тоже время SetDlgItemText() уже не работает, хотя мы ведь можем получить хэндл GetDlgItem() и воспользоваться всё той же SetWindowText()...
Но что-то я отвлёкся. Какие ещё мысли будут?

ЗЫ Видел я CD-player который в заголовок текущего окна выводил название текущей композиции. ;-)

talex опубликован 08-08-2001 11:31 MSK     Click Here to See the Profile for talex  Click Here to Email talex     
OlegO прав но только если он использует void CWnd::SetWindowText( LPCTSTR lpszString ) в своем классе, a надо API ф-цию: void SetWindowText( LPCTSTR lpszString );, но при условии если у нас есть HWND окна то мы можем. По моему, должно получиться.
да, забил сказать что я вызывал одну ф-цию из DLL/EXE, i а она меняла имя определенного/любого, выбранного окна, но HWND окна я брал по другому(используя ф-ции EnumWindows, EnumWindowsProc).

if(hwnd)
{
::SetWindowText(hwnd, "Debil!!!");
AfxMessageBox("XAXAXA");
textLength = ::GetWindowTextLength(hwnd);
}

server_mouse опубликован 08-08-2001 11:35 MSK     Click Here to See the Profile for server_mouse  Click Here to Email server_mouse     
Сенкс всем, в особености talex. Всё заработало с GetForegroundWindow.
talex опубликован 08-08-2001 11:51 MSK     Click Here to See the Profile for talex  Click Here to Email talex     
незачно главное что получилось:),
главное чтобы ты понял разницу между ф-циями. а ты понял?
если нет пиши, но в MSDN неплохо написано.

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.