Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на C / C++

Выпуск № 233
от 13.04.2003, 20:40

Администратор:
Имя: Nick.Box
URL: Информационный ресурс
ICQ: 365124
[censored], [censored]
О рассылке:
Задано вопросов: 693
Отправлено ответов: 1525
Активность: 220.0 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Ramzes
Статус: Опытный
Общий рейтинг: 129.52
URL: :))
[Подробней >>]
Avl2k
Статус: Опытный
Общий рейтинг: 122.46
[Подробней >>]
akul
Статус: Опытный
Общий рейтинг: 114.91
Телефон: +6019-6416245
[Подробней >>]
 
PL
Статус: Опытный
Общий рейтинг: 113.79
[Подробней >>]
Yuri Gordienko
Статус: Опытный
Общий рейтинг: 114.24
[Подробней >>]
Gibbel
Статус: Профессиональный
Общий рейтинг: 108.34
URL: Страничка обо мне и моих друзьях
Телефон: +7 902 168 02 65
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 685. День добрый тов. эксперты... Вот значится какой вопросец. Пишу ActiveX в нем в OnDraw мне нобходимо ... (ответов: 4)
Вопрос № 686. Здравствуйте ув. эксперты! У меня к вам 2 вопроса. 1.Почему VC не знает функцию EnumDisplaySettingsE... (ответов: 5)
Вопрос № 687. Привет! Не подскажете, что за фигня- создаю в VC диалог- на него помещаю static, размер устанавливаю... (ответов: 2)
Вопрос № 688. Привет опять! to GIBBEL: это понятно- я так и деляю-MoveWindow. Но вот можно ли это обойти? Например... (ответов: 1)

Вопросов: 4, ответов: 12


 Вопрос № 685

День добрый тов. эксперты...
Вот значится какой вопросец. Пишу ActiveX в нем в OnDraw мне нобходимо использовать реальные координаты егоные в смысле где именно на экране он находится (шоб потом оттудова картинку стянуть)..



Вопрос отправлен: 09.04.2003, 21:22
Отправитель: Painbringer

[Следующий вопрос >>] [Список вопросов]

Отвечает Ramzes

Доброе время суток, Painbringer!
RECT rect;
GetClientRect(&rect);
ClientToScreen(&rect);

Ответ отправлен: 10.04.2003, 15:17
Отправитель: Ramzes


Отвечает Avl2k

Доброе время суток, Painbringer!
1. Если нужна клиентская область, то GetClientRect и ClientToScreen;
2. Если нужна вся область контрола, то GetWindowRect;
В качестве hWnd и там, и там надо передавать hWnd контрола.
С уважением, Avl2k.

Ответ отправлен: 10.04.2003, 11:38
Отправитель: Avl2k


Отвечает akul

Добрый день, Painbringer!
ClientToScreen ???


Ответ отправлен: 11.04.2003, 22:26
Отправитель: akul


Отвечает PL

Добрый день, Painbringer!
Есть такие функции - ScreenToClient и ClientToScreen - посмотри в МСДНе, должны помочь.

Ответ отправлен: 10.04.2003, 06:27
Отправитель: PL


 Вопрос № 686

Здравствуйте ув. эксперты!
У меня к вам 2 вопроса.
1.Почему VC не знает функцию EnumDisplaySettingsEx находящейся в Uesr32.dll. Эта функция описана в MSDN.
Я пишу код:
DEVMODE dv;
dv.dmSize=sizeof(DEVMODE);
::EnumDisplaySettingsEx(NULL,ENUM_CURRENT_SETTINGS,&dv,EDS_RAWMODE);
а он говорит что функция не является глобальной.
Как её заюзать?
2.Не могу понять назначение функции API _TrackMouseEvent и TrackMouseEvent.(слаб в англицком.)
Для чего она нужна?
Приму любую помощь.Желательно исходник с примером(e-mail: coder_asm@mail.ru ).
Заранее спасибо.



Вопрос отправлен: 10.04.2003, 06:12
Отправитель: m0v8lack

[Следующий вопрос >>] [Список вопросов]

Отвечает akul

Доброе время суток, m0v8lack!
Обнови Platform SDK для начала, а во вторых правильно выставляй WINVER для функций win98 и выше

Ответ отправлен: 11.04.2003, 22:29
Отправитель: akul


Отвечает Ramzes

Приветствую Вас, m0v8lack!
1. Для того чтобы использовать эту функцию, ты должен цинсталлировать Platform SDK, т.к. в стандартном WinUser.h нет прототипа этой функции. После инсталляции в w Additional Include Directories задашь путь папки с Platform SDK. И не забудь сделать то же в настройкаь линкера.

Ответ отправлен: 10.04.2003, 15:49
Отправитель: Ramzes


Отвечает PL

Добрый день, m0v8lack!
1) А ты пробовал заинклудить windows.h ведь EnumDisplaySettingsEx объявлена в нем.
2)TrackMouseEvent - посылает нотифайные сообщения WM_MOUSELEAVE или WM_MOUSEHOVER - курсор мыши вышел из области окна или попал в нее соответсвенно. Ну или коекакие другие - смотри МСДН.
TRACKMOUSEEVENT tme = { sizeof TRACKMOUSEEVENT, TME_LEAVE, hTrack, 0 };
::TrackMouseEvent (&tme);
При данном примере окошку с хендлом hTrack будет приходить нотифай WM_MOUSELEAVE каждый раз как курсор мыши выходит оз его(hTrack -окошка) области.
вот и все

Ответ отправлен: 10.04.2003, 06:48
Отправитель: PL


Отвечает Yuri Gordienko

Доброе время суток, m0v8lack!
1.Visual C++ у тебя, видимо, 6 версии, а эта функция включена в API w2k и XP. Поэтому, чтобы ее использовать, тебе нужно или компилер обновить или поставить XPDDK, где библиотеки и хедеры
включают эти функции (в Visual C++ соответственно пропиши пути на эти библиотеки в первоочередном порядке). Третий вариант, - это экспортировать эти функции, но первыее два лучше.
Удачи

Ответ отправлен: 10.04.2003, 10:19
Отправитель: Yuri Gordienko


Отвечает Avl2k

Доброе время суток, m0v8lack!
1. Если VC++ 6.0 и header'ы из его стандартной поставки, то это действительно так, поскольку функция достаточно новая (появилась начиная с Win98 и Win2000). В более поздних версиях winuser.h (входящих например в VS.NET и SDK), функция уже есть (под #if(WINVER >= 0x0500)).
2. TrackMouseEvent позволяет (начиная с WinNT 4.0 и Win98) отслеживать моменты входа/выхода в заданное окно. Используют его например для того, чтобы подсвечивать кнопочки при наведении на них курсора мыши.
Пример использования (при выходе курсора из окна показывает сообщение):
BEGIN_MESSAGE_MAP(CTestView, BaseView)
ON_WM_RBUTTONDOWN()
ON_MESSAGE(WM_MOUSELEAVE, OnMouseLeave)
END_MESSAGE_MAP()
void CTestView::OnRButtonDown(UINT nFlags, CPoint point)
{
CView::OnRButtonDown(nFlags, point);
TRACKMOUSEEVENT tme;
tme.cbSize = sizeof( tme );
tme.dwFlags = TME_LEAVE;
tme.hwndTrack = m_hWnd;
tme.dwHoverTime = HOVER_DEFAULT;
VERIFY( TrackMouseEvent(&tme) );
}
LRESULT CTestView::OnMouseLeave(WPARAM, LPARAM)
{
AfxMessageBox( "That's it!" );
return 0;
}
_TrackMouseEvent ищет TrackMouseEvent в user32.dll, если находит, то вызывает ее, иначе эмулирует. Так придумано, видимо, для использования на Win95 + IE3.0 (иначе нафига она нужна?).
С уважением, Avl2k.

Ответ отправлен: 10.04.2003, 11:03
Отправитель: Avl2k


 Вопрос № 687

Привет!
Не подскажете, что за фигня- создаю в VC диалог- на него помещаю static, размер устанавливаю 128*128. Во время выполнения смотрю размер (GetHeight/GetWidth) - получается 208(h)*192(w)??? Посмотрел rc файл- так там 128*128 стоит... Что это такое и как сэтим бороться? Может кто сталкивался- или это мой пивной мозг глючит? Спасибо товарищи! :):):)



Вопрос отправлен: 10.04.2003, 13:25
Отправитель: Morgion (morgion@yandex.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Gibbel

Доброе время суток, Morgion!
Это мелкософт заглючил...
Все дело в том, что размеры, хранящиеся в файле ресурсов не соответствуют тем размерам, с которыми диалог отобразиться на экране. Как утверждают мелкомягкие, сделано это для того, чтобы на любом компе диалог выглядел одинаково (при пересчете учитывается dpi шрифта, размеры монитора...). Если тебе нужно жестко фиксированный размер диалогового окна, то в обработке WM_INITDIALOG вставь MoveWindow() с требуемыми тебе размерами.

Ответ отправлен: 10.04.2003, 13:36
Отправитель: Gibbel


Отвечает Ramzes

Доброе время суток, Morgion!
Сказать честно, не знаю от чего это.
Попробуй в функции диалога OnInitDialog написать
MoveWindow(hWnd, x, y, 128, 128, TRUE);
где hWnd это хендл твоего static-а, х и у координаты.

Ответ отправлен: 10.04.2003, 15:55
Отправитель: Ramzes


 Вопрос № 688

Привет опять!
to GIBBEL: это понятно- я так и деляю-MoveWindow. Но вот можно ли это обойти? Например если мне нужно все элементы управления определённого размера в пикселях (например для вывода графиков и прочей лабуды) то таскать все MoveWindowом- так это моя маааленькая прога раза в 2-3 увеличится :(... В общем- можно ли это отключить или опять ругать дядюшку Билли ?
Спасибо за ответ.



Вопрос отправлен: 10.04.2003, 14:24
Отправитель: Morgion (morgion@yandex.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Gibbel

Добрый день, Morgion!
Ругать... Или создавать окна/контролы из проги с помощью CreateWindow...

Ответ отправлен: 10.04.2003, 15:10
Отправитель: Gibbel



Форма отправки вопроса

Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

© 2002 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (36)
C / C++ (27)
Perl (6)
Delphi (16)
Pascal (21)
Basic / VBA (10)
Java / JavaScript (9)
PHP (4)
MySQL / MSSQL (5)
Пользователю
Windows 95/98/Me (27)
Windows NT/2000/XP (21)
"Железо" (24)
Поиск информации (12)
Администратору
Windows NT/2000/XP (10)
Linux / Unix (12)
Юристу
Гражданское право (9)
Семейное право (5)
Трудовое право (5)
КоАП (6)

Отправить вопрос всем экспертам выбранной рассылки.




Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное