Уточнения по поводу единого интерфейса
В моей клиентской области все элементы управления расположены там где мне нужно, но когда я свою прогу запуская на машине где вместо 96 dpi, все 125 и выши то машина автоматически увеличивает размеры окна >> размеры всех элементов управления >> и в моей клиентсой области становится работать не удобно так как размер картинки на форме увеличивается , а рисунок как был одного размера так и остался, я слышал, что в WIn api есть спец функции, для того чтобы прорисовывать окно так как нужно ну какие и как ими пользоваться из VB я не знаю и буду очнь признателен если кто-нибудь мне подскажет!
Желательно пример!!
:!!!:
В моей клиентской области все элементы управления расположены там где мне нужно, но когда я свою прогу запуская на машине где вместо 96 dpi, все 125 и выши то машина автоматически увеличивает размеры окна >> размеры всех элементов управления >> и в моей клиентсой области становится работать не удобно так как размер картинки на форме увеличивается , а рисунок как был одного размера так и остался, я слышал, что в WIn api есть спец функции, для того чтобы прорисовывать окно так как нужно ну какие и как ими пользоваться из VB я не знаю и буду очнь признателен если кто-нибудь мне подскажет!
Желательно пример!!
по идее, в винде есть такое понятие как режим отображения координат (функции SetMapMode). Режимов отображения несколько, но среди них есть один метрический - т.е. в этом режиме при рисовании задаешь все размеры и координаты в долях милиметра и они выводятся всегда одного размера - независимо от разрешения и т.д. Как сделать такую вещь в VB я не знаю, потому что на C++ эти все режимы связаны с понятием контекста устройства (класс CDC). Контекст устройства - это виртуальное отображение реального контекста, на котором рисуешь.
правда я этим делом пользовался для рисования простых объектов - как линии, квадраты и т.д. Может кто из специалистов по VB подскажет что дельное? других возможностей для твоей проблемы я не знаю. если хочешь, могу привести пример на С++.
по идее, в винде есть такое понятие как режим отображения координат (функции SetMapMode). Режимов отображения несколько, но среди них есть один метрический - т.е. в этом режиме при рисовании задаешь все размеры и координаты в долях милиметра и они выводятся всегда одного размера - независимо от разрешения и т.д. Как сделать такую вещь в VB я не знаю, потому что на C++ эти все режимы связаны с понятием контекста устройства (класс CDC). Контекст устройства - это виртуальное отображение реального контекста, на котором рисуешь.
правда я этим делом пользовался для рисования простых объектов - как линии, квадраты и т.д. Может кто из специалистов по VB подскажет что дельное? других возможностей для твоей проблемы я не знаю. если хочешь, могу привести пример на С++.
:!!!: Мыль пример на мыло [email]vlad_soft@mail.ru[/email] я на с++ сам люблю кодить, но про эту библиотеку не слышал...
:!!!: Мыль пример на мыло [email]vlad_soft@mail.ru[/email] я на с++ сам люблю кодить, но про эту библиотеку не слышал...
неуж не слышал, это ж MFC... :):)
неуж не слышал, это ж MFC... :):)
{
CPaintDC dc(this); // device context for painting
dc.SetMapMode(MM_LOMETRIC); //ustanavlivaem kontekst tak, chto 1 logicheskaya edinica ravna 0.1 mm
dc.MoveTo(100,-100);//smeschaem kursor na 1 cm vniz i vpravo
//risuem kvadrat so storonoi 1 cm
dc.LineTo(200,-100);
dc.LineTo(200,-200);
dc.LineTo(100,-200);
dc.LineTo(100,-100);
// Do not call CWnd::OnPaint() for painting messages
}
этот код позволяет рисовать на экране квадрат с размером 1 см на 1 см независимо от монитора и от разрешения.
по идее кнопки рисуются на диалоговом окне.
контекст диалогового окна можно получить через:
CDC* GetDC();
и установить его режим преобразования координат в один из метрических... не уверен что получится, но попробовать всегда можно! объект класса CDC (контекст устройства) непостоянный, так что, имхо, надо как-то действовать через хэндл устройства HDC, объявленный глобально и получаемый через GetSafeHandle...
задачка интересная, жаль нету времени посмотреть поподробнее... может кто что дельное еще подскажет?
PS. Имхо имеет смысл спросить на сишном форуме...
{
CPaintDC dc(this); // device context for painting
dc.SetMapMode(MM_LOMETRIC); //ustanavlivaem kontekst tak, chto 1 logicheskaya edinica ravna 0.1 mm
dc.MoveTo(100,-100);//smeschaem kursor na 1 cm vniz i vpravo
//risuem kvadrat so storonoi 1 cm
dc.LineTo(200,-100);
dc.LineTo(200,-200);
dc.LineTo(100,-200);
dc.LineTo(100,-100);
// Do not call CWnd::OnPaint() for painting messages
}
этот код позволяет рисовать на экране квадрат с размером 1 см на 1 см независимо от монитора и от разрешения.
по идее кнопки рисуются на диалоговом окне.
контекст диалогового окна можно получить через:
CDC* GetDC();
и установить его режим преобразования координат в один из метрических... не уверен что получится, но попробовать всегда можно! объект класса CDC (контекст устройства) непостоянный, так что, имхо, надо как-то действовать через хэндл устройства HDC, объявленный глобально и получаемый через GetSafeHandle...
задачка интересная, жаль нету времени посмотреть поподробнее... может кто что дельное еще подскажет?
PS. Имхо имеет смысл спросить на сишном форуме...
На мой взгляд, лучше не заморачиваться особо, а продумать ресайз. К тому же можно изначально при помощи API получать параметры экрана и уже при ресайзе плясать от этого.
На мой взгляд, лучше не заморачиваться особо, а продумать ресайз. К тому же можно изначально при помощи API получать параметры экрана и уже при ресайзе плясать от этого.
:???: Я слышал про ряд API которые позволяют получать экранные координаты, но как с ними в VB работать не знаю...
буду признателен за пример!!!!!
:???: Я слышал про ряд API которые позволяют получать экранные координаты, но как с ними в VB работать не знаю...
буду признателен за пример!!!!!
есть функции преобразования логических координат в физические, но они всегда связаны с контекстом устройства... пример - LPtoDP...
я не знаю как можно обойтись без контекста устройства в данном случае... поскольку винда работает не напрямую с физическим устройством вывода, а через виртуальные, коими и являются контексты.