Главная страница
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.061 c
14-1093953233
lipskiy
2004-08-31 15:53
2004.09.19
На каком максимальном расстоянии срабатывает смарт-карта в метро?


14-1093789238
Esu
2004-08-29 18:20
2004.09.19
Кто сходу вспомнит


1-1094135805
Lord de Mon
2004-09-02 18:36
2004.09.19
Filter


4-1088471570
mvgfirst
2004-06-29 05:12
2004.09.19
Отправка SMS через мобилу + COM-порт. Не могу послать AT команду.


1-1094049177
Lord de Mon
2004-09-01 18:32
2004.09.19
MediaPlayer