Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.10.24;
Скачать: [xml.tar.bz2];

Вниз

Как отключить поддержку стиля 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.10.24;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.275 c
6-1092750108
NLO
2004-08-17 17:41
2004.10.24
Зкачка


1-1097049347
456
2004-10-06 11:55
2004.10.24
создать кнопку (на форме) во время работы программы


3-1096047522
Strish
2004-09-24 21:38
2004.10.24
FastReport


1-1097401031
oleg_SYS
2004-10-10 13:37
2004.10.24
MD5


6-1092720965
serg128
2004-08-17 09:36
2004.10.24
Как принимать/отправлять сообщения при помощи TNMUDP?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский