День добрый тов. эксперты... Вот значится какой вопросец. Пишу ActiveX в нем в OnDraw мне нобходимо использовать реальные координаты егоные в смысле где именно на экране он находится (шоб потом оттудова картинку стянуть)..
Доброе время суток, 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 ). Заранее спасибо.
Доброе время суток, 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 стоит... Что это такое и как сэтим бороться? Может кто сталкивался- или это мой пивной мозг глючит? Спасибо товарищи! :):):)
Доброе время суток, 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 увеличится :(... В общем- можно ли это отключить или опять ругать дядюшку Билли ? Спасибо за ответ.
Добрый день, 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.