Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Стиль окна


Автор: Firexel 11.2.2009, 19:51
Привет всем.
Возникла вот какая проблема:
Создал в конструкторе форм небольшое окно. Вызываю в программе его так:
Код

case IDM_BTNCONFIG:
            DialogBox(hInst, MAKEINTRESOURCE(IDD_BTNCONFIGURER), hWnd, BtnConfigurer);
            break;

Проблема в том, что в конструкторе окно выглядит вполне пристойно, т.е. все кнопки отображаются в стиле висты (закругления, голубая плавная посдсветка и тп). Созданное же рантаймно окно не отличить от win95. Никаких вистовых красивостей нет. 

Как это исправить? Я так понимаю, надо куда-то прописать нужный стиль. А куда и как не знаю. 

Автор: Dem_max 12.2.2009, 10:59
подключи в ресурсах exe - manifest XP и будет тебе счастье.
манифет прикрепляю.

Автор: BorisVorontsov 12.2.2009, 11:05
Цитата(Firexel @  11.2.2009,  19:51 Найти цитируемый пост)
Я так понимаю, надо куда-то прописать нужный стиль. А куда и как не знаю.  



Linker->Additional manifest dependecies
Либо в коде
Код
#pragma comment(linker,"/manifestdependency:...


Добавлено через 31 секунду
Цитата(Dem_max @  12.2.2009,  10:59 Найти цитируемый пост)
подключи в ресурсах exe - manifest XP и будет тебе счастье.


А ты все еще в 20 веке живешь?

Автор: Dem_max 12.2.2009, 11:24
BorisVorontsov, 
Все от компилятора зависит.
Вот на моем компиляторе у меня так подключается
Код

#pragma resource "XP_Style.res" 

Автор: BorisVorontsov 12.2.2009, 11:31
Цитата(Dem_max @  12.2.2009,  11:24 Найти цитируемый пост)
Все от компилятора зависит.

От линкера. А линкер поддерживает /manifestdependency с 2005 студии точно

Автор: Dem_max 12.2.2009, 11:49
BorisVorontsov, 
а у меня друг на Visual Studio 6 до сих пор сидит и говорит что ему пока больше и не надо.  Так что твой #pragma comment(linker,"/manifestdependency:... там не проканает. Если уж так и хочиться, то можно манифест подцепить уже в готовом релизе. Благо это делается один раз и не часто.

Автор: BorisVorontsov 12.2.2009, 16:15
Цитата(Dem_max @  12.2.2009,  11:49 Найти цитируемый пост)
а у меня друг на Visual Studio 6 до сих пор сидит


Из принципа? Или потому, что нет возможности сидеть на VS2005+?

Цитата(Dem_max @  12.2.2009,  11:49 Найти цитируемый пост)
Если уж так и хочиться, то можно манифест подцепить уже в готовом релизе.


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

Автор: Earnest 13.2.2009, 08:58
Цитата(BorisVorontsov @  12.2.2009,  17:15 Найти цитируемый пост)
Из принципа? Или потому, что нет возможности сидеть на VS2005+?

Вообще-то перенос готового приложения из 6 среды в более новые - еще та задача, если приложение более или менее велико. Так что понять можно. smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)