Re[2]: Новый интерфейс пользователя
От: Varchev ILYA Nickolaevich  
Дата: 07.05.01 14:43
Оценка:
Здравствуйте Игорь Ткачёв, вы писали:

P>>Хотелось бы узнать как в приложении переделать интерфейс пользователя.

P>>То есть, нарисовать элементы управления (кнопки, поля ввода, списки и т.д.) со своим дизайном,

ИТ>Не просто это. Нужно задавать Owner Draw и переписывать всю отрисовку для всех контролов.

ИТ>Иди на http://www.codeguru.com или http://www.codeproject.com, там куча примеров.
ИТ>Можно поискать библиотеку для написания кожи (skin), но те с которыми я работал были платными, громоздкими и глючными. Если бы найти что-то типа WinAmp'овской кожи, было бы классно.

Можно и по-другому — при запуске приложения установить свою собственную процедуру обработки сообщений для целого оконного класса. Этот метод называется Global SubClassing. Вот пример:

WNDPROC g_oldProc = NULL;

LRESULT CALLBACK ButtonWndProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
)
{
switch( uMsg )
{
case WM_PAINT:
.....
return 0;
}
return CallWindowProc( g_oldProc, hwnd, uMsg, wParam, lParam );
}

void f()
{
CButton btn; btn.Create(...);

g_oldProc = ( WNDPROC ) SetClassLong( btn.GetSafeHwnd(),
GCL_WNDPROC,
(LONG) ButtonWndProc );
}

В примере возможны ошибки, но, думаю, суть понятна.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.