Главная страница
    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
4-80717
Dimich
2002-01-25 14:32
2002.03.25
Как можно получить текущую раскладку клавы


14-80679
Axel
2002-02-12 11:47
2002.03.25
DELPHI eBOOKs


1-80531
ev
2002-03-11 19:42
2002.03.25
TFileStream


1-80622
Валера_
2002-03-04 11:19
2002.03.25
Наболевший вопрос. Корректно ли такое освобождение памяти


7-80709
Kirill
2001-12-21 20:26
2002.03.25
Format Date





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