Я пытаюсь создать полноэкранное окно панели управления с множеством элементов управления: кнопками, ползунками, списками и т. д.

Я могу создать диалоговое окно и добавить в него элементы управления, но все масштабируется в диалоговых единицах. Я просто хочу создать окно в графическом редакторе, которое масштабируется в пикселях, а не в производных единицах, таких как диалоговые единицы.

Я могу расположить все элементы управления в графическом редакторе, а затем программно изменить размер окна на весь экран с помощью SetWindowPos, но диалоговое окно в графическом редакторе не будет выглядеть так же, как конечный продукт. Я хочу, чтобы в графическом редакторе был WYSIWIG.

Это внешний интерфейс для небольшого специализированного компьютера управления приборами под управлением XP. SDK написан в MFC. Мне приходится часто добавлять и изменять элементы управления. Экран небольшой, 7 дюймов @ 800 x 600, поэтому, конечно, я разрабатываю программу на другом компьютере. Я не хочу, чтобы окно программы менялось при смене монитора - я хочу, чтобы оно было фиксированным на 800 x 600, и я хочу, чтобы элементы управления были фиксированными по размеру и расположению.

Должен быть способ - это более простой функционал, чем функциональность по умолчанию.

Спасибо.

0
JCoenia 7 Июл 2009 в 01:13

2 ответа

Единицы диалога основаны на свойствах шрифта, используемого в диалоге. Горизонтальная единица диалога равна 1/4 средней ширины текущего шрифта.

Вертикальная единица диалога равна 1/8 средней высоты символа текущего шрифта.

Я бы рекомендовал использовать метод 2 (MapDialogRect() для диалогового окна 4 x 8) для определите, сколько DLU 800x600 соответствует на вашем выходном дисплее, затем создайте справочную форму, равную этому размеру. Позже вы сможете использовать эту справочную форму при разработке.

P.s. Я рад, что Visual Studio больше не выделяет диалоговые блоки, поскольку с ними всегда было сложно иметь дело.

1
Shea 7 Июл 2009 в 01:32

Спасибо. Я смог создать эталонную форму, просто изменяя размер формы вручную в графическом редакторе снова и снова, пока она точно не заполнила экран... Без шуток, что диалоговые блоки - это боль. Судя по вашему ответу, я думаю, что в текущей Visual Studio есть лучший способ сделать это? (Это мой первый опыт программирования под Windows).

0
JCoeniaJCoenia 7 Июл 2009 в 04:28