Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как задать цвет окну winapi средствами? 
:(
    Опции темы
BLACK_KOT
Дата 11.9.2010, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 20.12.2006

Репутация: нет
Всего: -1



Код

program BLACK_KOT;

uses Messages,Windows;

var
Form1,Memo1,Memo2,Button2,Button3,Button1,Edit1,CheckBox1,Panel1,RadioButton1,Memo3 : HWND;
BLACK_KOT_window: TWndClass;
Msg: TMsg;

//--------------------главный обработчик сообщений
function WndProc(hnd, wmsg, wparam, lparam: integer): integer; stdcall;
begin
Result:=0;
case wmsg of
  WM_CREATE:
  begin
  Memo1:=CreateWindowEx(WS_EX_CLIENTEDGE, 'Edit', ' ',  ES_MULTILINE or WS_HSCROLL or WS_VISIBLE or WS_CHILD,8, 8, 153,233, hnd, 0, HInstance, nil);
  Memo2:=CreateWindowEx(WS_EX_CLIENTEDGE, 'Edit', ' ',  ES_MULTILINE or WS_HSCROLL or WS_VSCROLL or WS_VISIBLE or WS_CHILD,168, 8, 153,233, hnd, 0, HInstance, nil);
  Button2:=CreateWindowEx(0, 'Button', 'фильтр',WS_VISIBLE or WS_CHILD,328, 216, 73,25, hnd, 0, HInstance, nil);
  Button3:=CreateWindowEx(0, 'Button', 'создать',WS_VISIBLE or WS_CHILD,408, 216, 65,25, hnd, 0, HInstance, nil);
  Button1:=CreateWindowEx(0, 'Button', 'открыть форму ',WS_VISIBLE or WS_CHILD,328, 184, 145,25, hnd, 0, HInstance, nil);
  Edit1:=CreateWindowEx(WS_EX_CLIENTEDGE, 'Edit', 'ПриВет Я андрей',WS_BORDER or ES_AUTOHSCROLL or WS_VISIBLE or WS_CHILD,336, 24, 121,21, hnd, 0, HInstance, nil);
  CheckBox1:=CreateWindowEx(0, 'Button', 'kgugtu',  BS_AUTOCHECKBOX or WS_VISIBLE or WS_CHILD,336, 48, 137,17, hnd, 0, HInstance, nil);
  Panel1:=CreateWindowEx(0, 'Static', 'Panel1', WS_DLGFRAME or WS_VISIBLE or WS_CHILD,336, 88, 105,33, hnd, 0, HInstance, nil);
  RadioButton1:=CreateWindowEx(0, 'Button', 'RadioButton1',  BS_AUTORADIOBUTTON or WS_VISIBLE or WS_CHILD,352, 136, 113,17, hnd, 0, HInstance, nil);
  Memo3:=CreateWindowEx(WS_EX_CLIENTEDGE, 'Edit', ' ',  ES_MULTILINE or WS_HSCROLL or WS_VSCROLL or WS_VISIBLE or WS_CHILD,8, 248, 465,209, hnd, 0, HInstance, nil);
  
  end;
  WM_DESTROY: PostQuitMessage(0);
  else Result:=DefWindowProc(hnd, wmsg, wparam, lparam);
  end;
end;

Procedure CreateMySelf;
begin
with BLACK_KOT_window do
  begin
  lpszClassName:='BLACK_KOT_window';
  lpfnWndProc:=@WndProc;
  hCursor:=LoadCursor(hInstance, IDC_ARROW);
  hbrBackground:=COLOR_3DSHADOW;
  end;
RegisterClass(BLACK_KOT_window);
Form1:=CreateWindowEx(WS_EX_CLIENTEDGE, 'BLACK_KOT_window','Form1', WS_OVERLAPPEDWINDOW or WS_VISIBLE,254, 189, 495,496, 0, 0, HInstance, nil);;
end;

begin
CreateMySelf;
while GetMessage(Msg, 0, 0, 0) do
  begin
  TranslateMessage(Msg);
  DispatchMessage(Msg);
  end;
end.

 
создаю форму. цвет самой формы я могу задать сначала hbrBackground:=COLOR_3DSHADOW; а вот как мне задать например цвет панели или мемо? какое сообщение посылать,с какими параметрами. лучше всего на примере. помогите!


--------------------
                       .. я - демо версия Бога от Microsoft..
PM MAIL   Вверх
Maks1509
Дата 12.9.2010, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 22.8.2007
Где: г. Тольятти

Репутация: 3
Всего: 5



Я предпочитаю узнавать хэндлы окошек через GetDlgItem, так проще, особенно когда идентификаторы этих элементов управления прописаны фиксированно.
Для мем (давай называть вещи своими именами, а не нахлобучки от VCL, это контрол EDIT и всё же ты на апи делаешь теперь) обрабатывай WM_CTLCOLOREDIT, где будешь возвращать в результате кисть, а типа панелька это STATIC - WM_CTLCOLORSTATIC соответственно.

Код

  WM_CTLCOLORSTATIC:
  begin
    case GetDlgCtrlId(lParam) of
      0: Result := GetStockObject(WHITE_BRUSH);
    end;
  end;


Тут у тебя в примере идентификаторы равны нулю, поэтому все статики с ним будут окрашены в белый цвет.
PM MAIL ICQ   Вверх
BLACK_KOT
Дата 12.9.2010, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 20.12.2006

Репутация: нет
Всего: -1



Спасибо тебе большое, очень выручил! Я пишу конвертор, из исходника VCL  чтоб в WinApi переводить проги.  Файлы с гасширением .dfm содержат полное описание всех контролов и свойств самой формы. Перевести форму c VCL на WinApi бообще не проблема. Сложнее наложить на неё код из .pas файлов. Может кто-нибудь занимался этой темой, есть наработки? Может кого заинтересовало?


--------------------
                       .. я - демо версия Бога от Microsoft..
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0429 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.