Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
11-1080674755
nester
2004-03-30 23:25
2004.09.19
Как убрать отстув в EditBox при установленом eoPassword?


1-1093958777
TSa
2004-08-31 17:26
2004.09.19
Адресная книга


3-1093012684
Misha Uskov
2004-08-20 18:38
2004.09.19
Подскажите как прибиндить SQL_DATETIME


14-1094015924
Vlad Oshin
2004-09-01 09:18
2004.09.19
Как поменять в WinXP прерывание у железки?


14-1094040889
Kurtevich
2004-09-01 16:14
2004.09.19
Просто так...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский