Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Системное программирование и WinAPI > Какое окно выбрать? |
Автор: PIT 17.10.2007, 15:07 |
Всем привет! До этого момента всегда обходился одним окном, ну за исключением эбаут )) А тут понадобилось второе в котором мне надо будут рисовать график. Пытался создать таким же мокаром как и главное CreatWindow(...) но что то не получается (( Начал разбираться и наткнулся на дочерние и диалоговые окна. Дочерние я как понял только в области главного окна, а диалоговые мало функциональны, а мне бы хотелось нормальное окно, такое как CreatWindow создаёт. Может есть какая ни будь возможность его создать? Или на каком окне мне лучше график рисовать? Я использую только голый WinAPI. Заранее спасибо. |
Автор: Mihhail 17.10.2007, 15:29 |
Совсем не обязательно. Здесь так же как и с главным окном - регестрируешь дополнительный класс, например "GPAPH_CLASS_NAME", указываешь функцию обработчик сообщений (отдельную для каждого класса окон). Затем создаёшь обычным образом дочернее внешнее окно, например так: HwndGraph = CreateWindowEx( WS_EX_TOOLWINDOW, "GPAPH_CLASS_NAME", "График", WS_CAPTION | WS_CHILD | WS_POPUP | WS_VISIBLE, 0, 0, 300, 150, HwndGrWin, NULL,GrHnst, NULL); Да и диалоговые окна не настолько примитивны, также можно назначить ф-цию обработчик сообщений, и изменить под свои нужды. Вот как я вызываю окно настроек: DialogBox( GrHinst, "Config", hwndGrWin, (DLGPROC)ConfigDlgProc ); |
Автор: zhgutov 17.10.2007, 15:39 | ||
Просто график можно и в диалоговом. Его же можно сделать переменного размера, без заголовка и пр... График постоянно должен быть? А почему нельзя использовать одно окно (из соображений дизайна)?
Так работает? Если в качестве родительского окна для второго указать первое (как в примере), то второе окно не будет отображаться в панели задач. |
Автор: Mihhail 18.10.2007, 14:13 | ||
Здесь есть два пути либо высчитывать соотношение между реальными размерами и размерами области вывода, и умножать каждую координату графика на этот коэффициент. Это если нужно чтобы он полностью помещался на экране. Либо в окне сделать ещё одно дочернее окно без заголовка и границ нужного нам размера - большего чем экран и родительское окно, выводить на него полноразмерный график, обеспечить при этом прокрутку - т.е. перемешение панели вывода(внутреннего окна) с помощью прикреплённых к родительскому полос прокрутки. Вот кусок кода оределения рабочей области вывода
|
Автор: PIT 19.10.2007, 11:44 |
Mihhail, большое спасибо все работает )) |