Поиск:

Ответ в темуСоздание новой темы Создание опроса
> vs 2010 получить хендл окна 
:(
    Опции темы
gorillka
Дата 4.5.2011, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 1.11.2010

Репутация: нет
Всего: нет



Доброго времени суток!
в vs 2010 не могу получить хендл окна!!!

в vs 2008 делал так:
1) hTargetWnd =(HWND) ::FindWindowEx(0, 0, NULL,(LPCSTR) "WM_COPYDATA-Receiver");
2) hTargetWnd = ::FindWindow( NULL, (LPCSTR) "WM_COPYDATA-Receiver" );
3) hTargetWnd = ::FindWindow( (LPCSTR) "TForm1", NULL);

все три варианта работают в 2008 а в 2010 почему-то нет!

Помогите плз ума не приложу в чем дело

Побывал и FindWindowExW и FindWindowW результат тот же: компилируется нормально а окно не находит

Это сообщение отредактировал(а) gorillka - 4.5.2011, 11:16
PM MAIL   Вверх
gorillka
Дата 4.5.2011, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 1.11.2010

Репутация: нет
Всего: нет



Что настораживает так это, то что если написать например:
FindWindow( NULL, (LPCSTR) "WM_COPYDATA-Receiver" ); 
то vs 2010 ругается на LPCSTR и хочет вместо него LPCWSTR и при этом ссылается на функцию FindWindowW, хотя я вызываю FindWindow. может где-то здесь загвоздка...
PM MAIL   Вверх
gorillka
Дата 4.5.2011, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 1.11.2010

Репутация: нет
Всего: нет



Решил проблему!
Надо использовать функцию FindWindowExA!
P.S. вот намудрили эти мелкософтовцы с кодировкой а я мучайся

Это сообщение отредактировал(а) gorillka - 4.5.2011, 12:38
PM MAIL   Вверх
Earnest
Дата 4.5.2011, 20:22 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Это не они намудрили, а ты так до сих пор и не разобрался, что бывают юникодные программы и не-юникодные. А функции типа FindWindow - это не функции, а макросы, которые расширяются либо до FindWindowW, либо до FindWindowA. Видимо, в 2008 проект был не-юникодный, а теперь - юникодный. Все, что надо сделать - использовать строковые макросы: _T("Трам-пам-пам"), которые автоматически будут превращены на препроцессинге либо в обычные строки, либо в широкие. Вместо уродских кастов и явных A\W - функций.


--------------------
...
PM   Вверх
gorillka
Дата 5.5.2011, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 1.11.2010

Репутация: нет
Всего: нет



Цитата(Earnest @ 4.5.2011,  20:22)
Это не они намудрили, а ты так до сих пор и не разобрался, что бывают юникодные программы и не-юникодные. А функции типа FindWindow - это не функции, а макросы, которые расширяются либо до FindWindowW, либо до FindWindowA. Видимо, в 2008 проект был не-юникодный, а теперь - юникодный. Все, что надо сделать - использовать строковые макросы: _T("Трам-пам-пам"), которые автоматически будут превращены на препроцессинге либо в обычные строки, либо в широкие. Вместо уродских кастов и явных A\W - функций.

Спасибо за разъяснение smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0435 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.