Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.19;
Скачать: CL | DM;

Вниз

Несколько вопросов по WinApi программированию...   Найти похожие ветки 

 
TankMan   (2004-07-30 23:40) [0]

Я решил опять воссазоздать свою мелкую прожку на WinApi :), написанную мной, но ужастно давно :), после смерти винта ничего вспомнить не могу :)... вот сейчас начал свое "воссоздание" и улучшение :), и у меня появилось несколько вопросов, на которые я так и не нашел ответов в яндексе :)...да и на этом форуме впринципе тоже...:(
Вобщем искал искал, но не нашел, вопросов у меня несколько:
1. Хотелось бы поменять бекграунд, шрифт и цвет шрифта у edit-а.
2. Необходимо наложить bitmap на кнопку.
3. Также необходимо знать, когда мыша наводится на какой либо компонент, т.е. аналог mouseleave/enter...

Едит я создаю просто:CreateWindowEx(0,"edit", "Пока", WS_CHILD+WS_VISIBLE,150,20,120,25,WndHandle,0,hinstance,nil);
А кнопку еще проще :) :CreateWindowEx(0,"button", "Пока", WS_CHILD+WS_VISIBLE,150,70,120,25,WndHandle,0,hinstance,nil);
Вот вобщем то и все что я хотел узнать...


 
GrayFace ©   (2004-07-31 18:00) [1]

1. Обрабатывать WM_ErraseBkgnd.   Слать WM_SETFONT.
2. Обрабатывать WM_Paint и WM_NCPaint.
3. Если WM_MouseMove посылается другому контролу - у него MouseEnter, а у этого - MouseLeave.


 
nikkie ©   (2004-07-31 19:08) [2]

1. для установки цвета ловить WM_CTLCOLOREDIT, WM_CTLCOLORSTATIC
2. установить BS_OWNERDRAW и ловить WM_DRAWITEM
3. при реализации, как предложено в [1], глюк обеспечен - не будет срабатывать MouseLeave, когда контроль расположен близко к краю окна. есть вариант использовать SetCapture, но не знаю насколько этобудет хорошо в твоей ситуации. можешь посмотреть как MouseEnter/MouseLeave реализован в VCL.


 
TankMan ©   (2004-07-31 19:23) [3]

ОО я уж думал что не найдется человека, кто хоть чего-нибудь ответит... :) ...все на счет 1го и 2го я еще попробую, а вот на счет 3го я хотел уточнить задачу для которой мне нужно знать когда и над каким компонентом находится мышь - хотелось бы при наведение например на кнопку (не нажимая), менять картинку на другую :) вот и все, что мне нужно :)...


 
TankMan ©   (2004-08-01 00:15) [4]

...эх...Попробовал я...
Вобщем WM_ErraseBkgnd..мне не понятен, я им ниразу не пользовался, а вот WM_SETFONT нормально работает - спасибо.

На счет WM_CTLCOLOREDIT - я просто замучался но ничего так и не добился от него :)...    
WM_CTLCOLOREDIT:
     begin
     SetBkMode(Wparam,TRANSPARENT);
     SetBkColor(Wparam,RGB(0,$FF,100));
     Result:=CreateSolidBrush(RGB($0,$FF,000));
     end;
Как я понял из описания этого сообщения, я должен возвращать кисть, которой буду красить,но... никакого результата :(...
а вот WM_CTLCOLORSTATIC я смог использовать нормально для label-ов...

На счет 2го еще не смотрел... мучаюсь с Edit-ом :)
А кстати, хотел спросить, как сделать эдиту нормальный 3d бордер, а то WS_BORDER дает только лишь рамочку маленькую :(


 
TankMan ©   (2004-08-01 00:31) [5]

АА...й заработало все нормально, просто
Я вообще делал так с WM_CTLCOLOREDIT
   WM_CTLCOLOREDIT:
     begin
     SetBkMode(Wparam,TRANSPARENT);
     SetBkColor(Wparam,RGB(0,$FF,100));
     SetTextColor(wparam,rgb(0,0,255));
     Result:=bkgColorEdit;
     end;
а bkgColorEdit это кисть, которая создавалась в WM_Create, но дело в том что переменная была описана у меня в моем WndProc и поэтому все решилось переносом декларации bkgColorEdit на глобальный "уровень" :)... но вот что делать с рамкой... :)


 
GrayFace ©   (2004-08-05 12:27) [6]

nikkie ©   (31.07.04 19:08) [2]
> при реализации, как предложено в [1], глюк обеспечен...
> можешь посмотреть как MouseEnter/MouseLeave реализован в VCL

В Delphi сделано так.

> но вот что делать с рамкой... :)

WS_EX_CLIENTEDGE


 
nikkie ©   (2004-08-08 02:57) [7]

>В Delphi сделано так.
сделано как? не мешало бы заглянуть в исходники, прежде, чем делать такие заявления.



Страницы: 1 вся ветка

Текущий архив: 2004.09.19;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.053 c
1-1094040165
bloodman
2004-09-01 16:02
2004.09.19
Как получить доступ ко всем пунктам меню?


3-1092908536
gunner
2004-08-19 13:42
2004.09.19
Post в TADOQuery ?


4-1091614965
Deedlit
2004-08-04 14:22
2004.09.19
Дерегистрация типа файла в системе


1-1094034749
Wolfram
2004-09-01 14:32
2004.09.19
Проблема с dxDBGrid


6-1089781251
negrila
2004-07-14 09:00
2004.09.19
Как перехватить http-запрос?