Кастомные балуны |
Здравствуйте, гость ( Вход | Регистрация )
Кастомные балуны |
16.06.2008 - 03:17
Вставить ник | Быстрая цитата | Сообщение
#1
|
|
Bill rulz ^^ Группа: Участник Сообщений: 1418 Регистрация: 28.09.2003 Пользователь №: 24 |
Захотелось недавно закастомизировать стандартное всплывающие сообщение. Прогуглил, оказалось что народ их тупо переписывает с нуля, ну и естественно позволяя туда пихать все что угодно. Так же оказалось что все найденные готовые решения кривые: неправильное выравнивание, корявые бордеры, падают с ошибками ну и т.п. А есть ли какие-нибудь способы красиво использовать стандартые балуны, позволяя засовывать в них произвольные контролы, или превращать обычные формы в балуны? Единственная правдоподобная идея которая пришла мне сейчас в голову, это брать форму, менять ей родителя на балун и разворачивать ее там, типо вроде как даже работает и удобно. (понятно что заголовка у формы не будет, это типо для примера, а да, еще окно перекрыло бордер балуна, но это не проблема) Но мб есть другие работающие способы засовывать в балун произвольные контролы или превращать формы в балуны? В идеале для дот нет. Сообщение отредактировано SHADE - 16.06.2008 - 03:24 |
|
|
16.06.2008 - 18:30
Вставить ник | Быстрая цитата | Сообщение
#2
|
|
Частый гость Группа: Участник Сообщений: 225 Регистрация: 15.02.2005 Пользователь №: 6590 |
SHADE, а чем subclassing плох? Делаем свой контрол модифицируя оконную функцию стандартного TOOLTIPS_CLASS.
|
|
|
17.06.2008 - 23:31
Вставить ник | Быстрая цитата | Сообщение
#3
|
|
Bill rulz ^^ Группа: Участник Сообщений: 1418 Регистрация: 28.09.2003 Пользователь №: 24 |
Порюхал, не совсем догоняю что именно субкласить
Назначил форме класс tooltips_class32, повесил стили WS_POPUP, TTS_BALLOON, TTS_NOPREFIX, TTS_ALWAYSTIP. В результате к нее исчез бордер и она отбросила тень, но осталась прямоугольной. Сообщение отредактировано SHADE - 17.06.2008 - 23:33 |
|
|
18.06.2008 - 18:31
Вставить ник | Быстрая цитата | Сообщение
#4
|
|
Частый гость Группа: Участник Сообщений: 225 Регистрация: 15.02.2005 Пользователь №: 6590 |
Ну как-то так. Это на WINAPI
Код LRESULT CALLBACK MyBalloonWndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
{ if(msg==WM_PAINT) { ... return 0; } else return CallWindowProc((WNDPROC)GetProp(hWnd,TEXT("NATIVEPROC")),hWnd, msg,wParam,lParam); } if (HWND hwndToolTips = CreateWindow(TOOLTIPS_CLASS,NULL,WS_POPUP | TTS_NOPREFIX | TTS_BALLOON,0, 0,0, 0,NULL, NULL, g_hinst,NULL)) { WNDPROC nativeproc=(WNDPROC)SetWindowLong(hwndToolTips ,GWL_WNDPROC,(LONG)MyBalloonWndProc); SetProp(hwndToolTips ,TEXT("NATIVEPROC"),(HANDLE)nativeproc); // Save original window procedure } |
|
|
28.06.2008 - 14:26
Вставить ник | Быстрая цитата | Сообщение
#5
|
|
Bill rulz ^^ Группа: Участник Сообщений: 1418 Регистрация: 28.09.2003 Пользователь №: 24 |
никак не доходят руки попробовать, как только что-нить заработаеть обязательно отпишусь
|
|
|
3.07.2008 - 19:54
Вставить ник | Быстрая цитата | Сообщение
#6
|
|
Unknown Группа: Модератор Сообщений: 405 Регистрация: 29.09.2003 Пользователь №: 74 |
Ну что там получилось то? С нетерпением жду результатов
|
|
|
6.07.2008 - 17:28
Вставить ник | Быстрая цитата | Сообщение
#7
|
|
Bill rulz ^^ Группа: Участник Сообщений: 1418 Регистрация: 28.09.2003 Пользователь №: 24 |
Пока ничего интересного
|
|
|
Текстовая версия | Сейчас: 20.04.2024 - 17:32 |