Форум: "WinAPI";
Текущий архив: 2004.09.19;
Скачать: [xml.tar.bz2];
ВнизНесколько вопросов по 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 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.09.19;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.035 c