Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.03.25;
Скачать: [xml.tar.bz2];

Вниз

Button   Найти похожие ветки 

 
Igor_thief   (2002-01-24 15:26) [0]

Народ, может кто знает как сделать кнопочку нестандартной формы?


 
valery_f   (2002-01-24 15:54) [1]

Да как, берешь и делаешь :)) В смысле - своя компонента со своей отрисовкой. А вообще - этим многие занимались, так что полазь по свалкам компонент.


 
MrAngel   (2002-01-24 16:49) [2]

Очень даже просто. Здесь идёт работа с регионами (ключевое слово в MSDN - Regions). А вообще тебе ещё надо будет ету кнопку правильно нарисовать... но то что здесь задействованы регионы это точно. Сам этим когда то баловался.


 
Evgeny   (2002-01-25 06:11) [3]

Можно обойтись и без регионов. Обычные битмапы вполне подойдут.


 
Raptor   (2002-01-25 12:32) [4]

2 Igor_thief
Все очень просто. При создании кнопки выставляешь ей стиль WS_OWNERDRAW. Например так:
CreateWindowEx(0, "BUTTON", "Button", BS_OWNERDRAW or WS_CHILD or WS_VISIBLE, 10, 10, 120, 40, Wnd, 100, hInstance, NIL);
Потом в оконной процедуре окна, которому принадлежит кнопка, обрабатываешь событие WM_DRAWITEM. Например так:

Function WindowProc(wnd : HWND; Msg : Integer; WParam : WParam; LParam : Longint): Longint; stdcall;
Var
DrawStruct:PDRAWITEMSTRUCT;
DC:HDC;
Case msg Of
....................
WM_DRAWITEM:Case wParam Of
100:Begin//Наша кнопка
DrawStruct:=PDRAWITEMSTRUCT(lParam);
DC:=DrawStruct.hDC;
//Здесь рисуем на DC кнопки разные ее
//состояния (нажата, не нажата,
//фокусированая) в соответствии с
//информацией предоставляемой нам в
//DrawStruct.itemState и
//DrawStruct.itemAction
.............................
//Сообщаем что кнопка успешно нарисована
Result:=Integer(True);
End;
End;//case
...........................
else Result := DefWindowProc(wnd, msg, wparam, lparam);
End;//Case msg
End;//Func

Вот, в принципе, и все.


 
Igor_thief   (2002-01-25 12:45) [5]

Огромнейшее спасибо всем, а оссобенно 2 Raptor.



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

Форум: "WinAPI";
Текущий архив: 2002.03.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.004 c
1-80595
Анатолий
2002-03-11 07:54
2002.03.25
Outlook Express


3-80424
eds_30
2002-02-26 19:24
2002.03.25
ZEOS + mySQL


3-80449
IronHawk
2002-02-25 12:34
2002.03.25
Приветствую Мастеров ! Как ПрАвИлЬнО отобразить содержимое DBGrid-a в DBLisBox-e ?


1-80564
SuperIgor
2002-03-10 05:33
2002.03.25
Отображение иконок.


14-80683
McSimm
2002-02-11 12:01
2002.03.25
Задачка с подвохом





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский