01:26 

Трюк 0x000F — Без труда не вытащишь контрол из комцэтээла.

Куб 0
Comctl32.dll — важная деталь в механизме под названием Windows. Именно этой библиотеке мы обязаны кнопками и прочими элементами в характерном стиле XP. Common controls... Конечно, всё это уходит в прошлое, скоро XP отметит 10-летний юбилей, солидный возраст для софта.

Итак, привычный стиль XP. Если писать приложение с нуля, то стандартный функционал WinAPI не даёт программисту и такого стиля, выдавая на-гора оквадраченные кнопки с убогим системным шрифтом.

Что делать?


Во-первых, статически прилинковать comctl32.lib к проекту, либо сделать одиночный вызов ::LoadLibrary("comctl32.dll";); до начала использования контролов.
Во-вторых, прикрутить сей манифест:


//------------------------------------------------------------

#pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls'
version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"";)

//------------------------------------------------------------



В-третьих, разобраться с именами классов контролов, предоставляемых comctl32.dll.
В этом нам поможет следующая таблица:



//------------------------------------------------------------
--------------------------------------------------------------------------
N Description Class Define
--------------------------------------------------------------------------
1. HEADER CONTROL SysHeader32 WC_HEADER
2. TOOLBAR CONTROL ToolbarWindow32 TOOLBARCLASSNAME
3. REBAR CONTROL ReBarWindow32 REBARCLASSNAME
4. TOOLTIPS CONTROL tooltips_class32 TOOLTIPS_CLASS
5. STATUS BAR CONTROL msctls_statusbar32 STATUSCLASSNAME
6. TRACKBAR CONTROL msctls_trackbar32 TRACKBAR_CLASS
7. UPDOWN CONTROL msctls_updown32 UPDOWN_CLASS
8. PROGRESS CONTROL msctls_progress32 PROGRESS_CLASS
9. HOTKEY CONTROL msctls_hotkey32 HOTKEY_CLASS
10. LISTVIEW CONTROL SysListView32 WC_LISTVIEW
11. TREEVIEW CONTROL SysTreeView32 WC_TREEVIEW
12. ComboBoxEx ComboBoxEx32 WC_COMBOBOXEX
13. TAB CONTROL SysTabControl32 WC_TABCONTROL
14. ANIMATE CONTROL SysAnimate32 ANIMATE_CLASS
15. MONTHCAL CONTROL SysMonthCal32 MONTHCAL_CLASS
16. DATETIMEPICK CONTROL SysDateTimePick32 DATETIMEPICK_CLASS
17. IP Address edit control SysIPAddress32 WC_IPADDRESS
18. Pager Control SysPager WC_PAGESCROLLER
19. Native Font Control NativeFontCtl WC_NATIVEFONTCTL
29. Button Control Button WC_BUTTON
21. Static Control Static WC_STATIC
22. Edit Control Edit WC_EDIT
23. Listbox Control ListBox WC_LISTBOX
24. Combobox Control ComboBox WC_COMBOBOX
25. Scrollbar Control ScrollBar WC_SCROLLBAR
26. SysLink control SysLink WC_LINK
--------------------------------------------------------------------------

//------------------------------------------------------------



Для использования макросов требуется подключить commctrl.h.



Контрол RichEdit живёт отдельно от других, в разных версиях Windows — в разных библиотеках.
RichEdit 1.0 находится в Riched32.dll, RichEdit 2.0 и выше в RichEd20.dll, RichEdit 4.1 и выше в Msftedit.dll.



//------------------------------------------------------------
--------------------------------------------------------------------------
N Description Class Define
--------------------------------------------------------------------------
1. RichEdit 1.0 ANSI RICHEDIT RICHEDIT_CLASS10A
2. RichEdit 2.0+ UNICODE RichEdit20W RICHEDIT_CLASSW
3. RichEdit 2.0+ ANSI RichEdit20A RICHEDIT_CLASSA
4. RichEdit 4.1+ UNICODE RICHEDIT50W MSFTEDIT_CLASS
--------------------------------------------------------------------------
//------------------------------------------------------------



Для использования макросов требуется подключить richedit.h.

@темы: .DLL

URL
   

Записная книжка программиста C++

главная