Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.24;
Скачать: CL | DM;

Вниз

Как отключить поддержку стиля Win XP в своей программе   Найти похожие ветки 

 
Apl   (2004-09-18 04:16) [0]

Если в Win XP(и Win 2003) запущена служба тем, то окна имеют вид резко отличающийся от классического.
Можно ли в таком случае окна моей программы сделать в класическом стиле(Пример : окно электронного словаря из пакета Promt XT выглядит одинаково при любой теме)?


 
Palladin ©   (2004-09-18 04:23) [1]

Странно... обычно спрашивают как ее включить... а ты уже выключаешь...


 
Apl   (2004-09-18 05:19) [2]

а я класику люблю :)


 
Рамиль ©   (2004-09-18 10:47) [3]

Интересный подход. А мне может классика не нравится. Если пользователь захочет, то отключит темы. Если для себя пишешь - аналогично.


 
BorH   (2004-09-18 15:16) [4]

Короче, похоже никто не знает :)..

Впрочем, попробуй выдрать из ресурсов этого твоего Промта ресурс, называемый манифестом. Имеет вид текстового XML файла. Он может находиться и в одной папке с главным экзэшником.  И в этом файла, скорее всего, и порыла собака. Засунь его себе в :) ресурсы с таким же названием как и в Промте.

ИМХО.


 
Kirill ©   (2004-09-18 16:45) [5]

А разве, по-умолчанию, проект создается со стилем темы? К сожалению, проверить сейчас не могу. Создайте пустую форма она уже с видом текущей темы?


 
BorH   (2004-09-18 17:32) [6]

Насколько я понимаю есть "насильственные" методы нацепить скин - службы типа StyleXP и WindowsBlinds. Вот против них и можно бороться перенастроеным  манифестом. (ИМХО) А без их использования в XP скин насильно не вешается. Проверено.


 
BorH   (2004-09-18 17:33) [7]

На Винамп, кстати, скин от этих программ не вешается!! На заметку...


 
Kirill ©   (2004-09-18 17:38) [8]

У WinAmp"а и подобных программ вообще нету ни caption"а, ни контролов. Только скины и активные регионы формы


 
Apl   (2004-09-19 03:20) [9]

to BorH
Впрочем, попробуй выдрать из ресурсов этого твоего Промта  ресурс, называемый манифестом. Имеет вид текстового XML файла. Он может находиться и в одной папке с главным экзэшником.  И в этом файла, скорее всего, и порыла собака.


нету в каталоге с этим промтом никакого манифеста и в ресурсах тоже... впрочем есть какой - то ресурс с именем 241 содержащий двоичные данные.

to All
Может быть я не правильно выразился, но форма(по умолчанию)создаётся с большим синим заголовком, со скруглёнными краями окон и т.п., вот это-то мне и не нравится.


 
wicked ©   (2004-09-19 17:30) [10]

отключить темы для окна hwnd:
SetWindowTheme(hwnd, WideString(" "), WideString(" "));

включить темы для окна hwnd:
SetWindowTheme(hwnd, nil, nil);

сама функция экспортируется dll"кой UxTheme.dll...
прототип функции на си:
typedef HRESULT __stdcall (*theme_func)(HWND hwnd, LPCWSTR AppName, LPCWSTR SubIdList);

то есть, всё вместе будт выглядеть примерно так (пример на си, влом переводить):


// выносим константой имя длл-ки
#define DLL_NAME "\\UxTheme.dll"
#define BUF_LENGTH MAX_PATH + 16
// имя функции
#define PROC_NAME "SetWindowTheme"

// хендл библиотеки
HMODULE uxt_lib;

typedef HRESULT __stdcall (*theme_func)(HWND hwnd, LPCWSTR AppName, LPCWSTR SubIdList);
// указатель на функцию
theme_func SetWindowTheme;

// запускается при старте программы
// (в паскале поместить этот код в секцию Initialization)
void InitStyles(void)
{
#pragma startup InitStyles
char buf[BUF_LENGTH];
uxt_lib = NULL;
SetWindowTheme = NULL;
memset(buf, 0, sizeof(buf));
if(GetSystemDirectory(buf, sizeof(buf) - 1)){
 strcat(buf, DLL_NAME);
 uxt_lib = LoadLibrary(buf);
 if(uxt_lib) SetWindowTheme = (theme_func)GetProcAddress(uxt_lib, PROC_NAME);
}
}

// запускается при выходе из программы
// (в паскале поместить этот код в секцию Finalization)
void DeInitStyles(void)
{
#pragma exit DeInitStyles
if(uxt_lib){
 SetWindowTheme = NULL;
 FreeLibrary(uxt_lib);
 uxt_lib = NULL;
}
}

// собственно сами функции убирания/восстановления стилей окна
void __fastcall RemoveXPStyle(HWND hwnd)
{
if(SetWindowTheme) SetWindowTheme(hwnd, L" ", L" ");
}

void __fastcall RestoreXPStyle(HWND hwnd)
{
if(SetWindowTheme) SetWindowTheme(hwnd, NULL, NULL);
}


 
wicked ©   (2004-09-19 17:32) [11]

ЗЫ я дико извиняюсь, но местный скрипт, принимающий данные постинга есть суксь и маздай - так испоганить форматирование моих исходников.... :(



Страницы: 1 вся ветка

Текущий архив: 2004.10.24;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.044 c
9-1087757905
Inf_96
2004-06-20 22:58
2004.10.24
Ошибка при закрытии программы DirectX


14-1096891606
Guest
2004-10-04 16:06
2004.10.24
Перестал пахать комп, пень первый 166 MHz


8-1090764860
DDDeN
2004-07-25 18:14
2004.10.24
Подать звук по разным каналам


14-1096545934
pasha_golub
2004-09-30 16:05
2004.10.24
TheBat3.0


14-1096818605
Почтальон
2004-10-03 19:50
2004.10.24
Бесплатная почта





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский