Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.04.2010, 01:52   #1
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию Свой цвет при создании окна

Код:
  With FRMMain.WinClass Do
   Begin
    Style := $80;
    hIcon := UNTFRMExp.LoadIcon(FRMMain.hInst, PAnsiChar('MAINICON'));
    lpfnWndProc := @UNTFRMProc.WindowProc;
    hInstance := FRMMain.hInst;
    hbrBackground := ??????
    lpszClassName := 'TShrew';
    hCursor := UNTFRMExp.LoadCursor(0, PAnsiChar(32512));
   End;
Как указать не один из системных цветов, а, скажем, $120492?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 21.04.2010, 11:59   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

в alius-е делал так:
Код:
 Handle:= CreateWindowEx(0, 'TAliusForm', 'Alius',
          WS_POPUP ,//or           WS_VISIBLE,
          400, 200, 400, 400,
          0, 0,
          hInst, Nil);
 SetClassLong(handle, GCL_HBRBACKGROUND, CreateSolidBrush(RGB(0,255,0))); // подменяем в классе на расширенный

 AnimateWindow(Handle, 700, AW_BLEND);
 sendmessage(handle,WM_SYSCOMMAND,SC_RESTORE,0);
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 21.04.2010, 14:55   #3
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Блин, точно, надо пойти раскопать хард и отыскать его. Давно уже порывался Спасибо.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 24.04.2010, 02:06   #4
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Что-то не работает, поди.
Код:
UNTFRMExp.SetClassLong(FRMBack.Handle, -10 {BACKGROUND}, UNTFRMExp.CreateSolidBrush($FF00FF));
 UNTFRMExp.SetWindowLong(FRMBack.Handle, -20 {GWL_EXSTYLE},
    UNTFRMExp.GetWindowLong(FRMBack.Handle, -20 {GWL_EXSTYLE})
  Or $00080000 {WS_EX_LAYERED});
 UNTFRMExp.SetLayeredWindowAttributes(FRMBack.Handle, $FF00FF, 50, $00000001 {LWA_COLORKEY});
Должно быть розовое полупрозрачное, а остается стандартным и безрадостным. Уже вторые сутки бьюсь.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 24.04.2010, 10:19   #5
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Еще актуально, очень актуально...

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

То же самое, когда не создаю вторую форму. Дело, по видимому, не в этом.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ

Последний раз редактировалось Alex Cones; 24.04.2010 в 10:26.
Alex Cones вне форума Ответить с цитированием
Старый 24.04.2010, 11:37   #6
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

вот, поизвращался на все случаи жизни все дело в стиле создаваемого окна...
Код:
  hInst := GetModuleHandle(Nil);
  With WinClass Do
    Begin
     Style :=  CS_HREDRAW or CS_VREDRAW; //CS_PARENTDC;  // тут собака порылась                              
     hIcon := LoadIcon(hInst, MAKEINTRESOURCE('MAINICON'));
     lpfnWndProc := @WindowProc;                           
     hInstance := hInst;
     hbrBackground := 12;                 
     lpszClassName := 'TAliusForm';                       
     hCursor := LoadCursor(0, IDC_ARROW);            
    End;
  InitCommonControls;
  windows.RegisterClass(WinClass);                                

  { **************************** }

 Handle:= CreateWindowEx(0, 'TAliusForm', 'Alius',
          WS_POPUP,
          400, 200, 400, 400,
          0, 0,
          hInst, Nil);
 SetClassLong(handle, GCL_HBRBACKGROUND, CreateSolidBrush($FF00FF)); // задаем розовый цвет для формы

 AnimateWindow(Handle, 700, AW_BLEND);
 //sendmessage(handle,WM_SYSCOMMAND,SC_RESTORE,0);

 SetWindowLong(handle,
               GWL_EXSTYLE,
               GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_LAYERED);

 SetLayeredWindowAttributes(handle,
                            rgb(255,255,255), // задаем полную прозрачность для белого (дырка)
                            220,          // задаем полупрозрачность для всей формы
                            LWA_ALPHA or LWA_COLORKEY); // разрешаем флаги
итак, имеем:
1- розовый цвет формы на winapi
2- полупрозрачность для всей формы (220*100/255 %)
3- элементы с белым цветом имеют дырку насквозь (верхний edit)
Изображения
Тип файла: png полупрозрачность на winapi.png (19.3 Кб, 82 просмотров)
Вложения
Тип файла: zip alius.zip (29.7 Кб, 17 просмотров)
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 24.04.2010, 12:33   #7
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Оооооо!!!! Благодарю!

P.S. Гламурненько так
P.P.S. Все равно не на все случаи Нет случая, когда два разных цвета имеют разную прозрачность. Но это я уже ручками наделаю.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 24.04.2010, 12:40   #8
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

уп-с... про это и забыл ...ладно, как нить разрулим/
зы: если помнишь, Вован13 что-такое делал, могу ошибаться, вроде виджеты... а лучше спроси его в личке насчет двух цветов
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 24.04.2010, 12:40   #9
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Блин, ну как всегда! Цвет задается нормально, а когда задаю прозрачность:
Код:
UNTFRMExp.SetWindowLong(FRMBack.Handle, -20 {GWL_EXSTYLE},
    UNTFRMExp.GetWindowLong(FRMBack.Handle, -20 {GWL_EXSTYLE})
  Or $00080000 {WS_EX_LAYERED});
UNTFRMExp.SetLayeredWindowAttributes(FRMBack.Handle, $FF00FF, 50, $00000001 {LWA_COLORKEY});
То форма просто исчезает. Кликаю на панели управления на строку приложения - фокус уходит на другое приложение.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 24.04.2010, 12:42   #10
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Да, да, Вован в этом шарит, в "слоеных окнах" )) Спроси у него.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменить цвет окна Syltan Win Api 2 10.12.2010 20:52
Цвет пикселя неактивного окна. GrindeX Общие вопросы Delphi 2 08.11.2009 16:10
Как изменить цвет заголовка окна CraZZy RabbIt Общие вопросы Delphi 3 20.02.2009 15:47
Необходимо узнать о создании окна Alar Win Api 10 23.11.2007 19:33
Помогите добавить свой цвет в инспектор объектов!!! Denisich Общие вопросы Delphi 1 28.06.2007 23:03