Главная страница
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.03 c
14-1097135766
Mike Kouzmine
2004-10-07 11:56
2004.10.24
Скончался Морис Уилкинс


14-1097041840
9k33
2004-10-06 09:50
2004.10.24
Кодерам и заказчикам


4-1095785051
Inoplanetjanin
2004-09-21 20:44
2004.10.24
Перехват сообщения


6-1092489926
Quest
2004-08-14 17:25
2004.10.24
многопоточный TCP-сервер


6-1092446907
Nix
2004-08-14 05:28
2004.10.24
idWhois