Главная страница
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.49 MB
Время: 0.036 c
4-1095419377
Квэнди
2004-09-17 15:09
2004.10.24
Трей


11-1081879198
hammer
2004-04-13 21:59
2004.10.24
Фреймы в kol e


6-1092719789
Duka
2004-08-17 09:16
2004.10.24
Локальная сеть


8-1085750766
Bruno
2004-05-28 17:26
2004.10.24
Как вырезать из AVI отдельные кадры в bmp, jpeg....


3-1096090773
SergeyM
2004-09-25 09:39
2004.10.24
Поиск с фильтром в компонентах ADO