Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Кастомные балуны
SHADE
сообщение 16.06.2008 - 03:17

Bill rulz ^^
******
орден IV степени
Группа: Участник
Сообщений: 1418
Регистрация: 28.09.2003
Пользователь №: 24




Захотелось недавно закастомизировать стандартное всплывающие сообщение.

Прогуглил, оказалось что народ их тупо переписывает с нуля, ну и естественно позволяя туда пихать все что угодно. Так же оказалось что все найденные готовые решения кривые: неправильное выравнивание, корявые бордеры, падают с ошибками ну и т.п.

А есть ли какие-нибудь способы красиво использовать стандартые балуны, позволяя засовывать в них произвольные контролы, или превращать обычные формы в балуны?

Единственная правдоподобная идея которая пришла мне сейчас в голову, это брать форму, менять ей родителя на балун и разворачивать ее там, типо вроде как даже работает и удобно.


(понятно что заголовка у формы не будет, это типо для примера,
а да, еще окно перекрыло бордер балуна, но это не проблема)


Но мб есть другие работающие способы засовывать в балун произвольные контролы или превращать формы в балуны? smile.gif
В идеале для дот нет.

Сообщение отредактировано SHADE - 16.06.2008 - 03:24
Перейти в начало страницы
 
+Цитировать сообщение
tdv
сообщение 16.06.2008 - 18:30

Частый гость
***

Группа: Участник
Сообщений: 225
Регистрация: 15.02.2005
Пользователь №: 6590


SHADE, а чем subclassing плох? Делаем свой контрол модифицируя оконную функцию стандартного TOOLTIPS_CLASS.
Перейти в начало страницы
 
+Цитировать сообщение
SHADE
сообщение 17.06.2008 - 23:31

Bill rulz ^^
******
орден IV степени
Группа: Участник
Сообщений: 1418
Регистрация: 28.09.2003
Пользователь №: 24


Порюхал, не совсем догоняю что именно субкласить

Назначил форме класс tooltips_class32, повесил стили WS_POPUP, TTS_BALLOON, TTS_NOPREFIX, TTS_ALWAYSTIP. В результате к нее исчез бордер и она отбросила тень, но осталась прямоугольной.

Сообщение отредактировано SHADE - 17.06.2008 - 23:33
Перейти в начало страницы
 
+Цитировать сообщение
tdv
сообщение 18.06.2008 - 18:31

Частый гость
***

Группа: Участник
Сообщений: 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
}
Перейти в начало страницы
 
+Цитировать сообщение
SHADE
сообщение 28.06.2008 - 14:26

Bill rulz ^^
******
орден IV степени
Группа: Участник
Сообщений: 1418
Регистрация: 28.09.2003
Пользователь №: 24


никак не доходят руки попробовать, как только что-нить заработаеть обязательно отпишусь
Перейти в начало страницы
 
+Цитировать сообщение
someone
сообщение 3.07.2008 - 19:54

Unknown
****
орден III степени
Группа: Модератор
Сообщений: 405
Регистрация: 29.09.2003
Пользователь №: 74


Ну что там получилось то? С нетерпением жду результатов smile.gif
Перейти в начало страницы
 
+Цитировать сообщение
SHADE
сообщение 6.07.2008 - 17:28

Bill rulz ^^
******
орден IV степени
Группа: Участник
Сообщений: 1418
Регистрация: 28.09.2003
Пользователь №: 24


Пока ничего интересного
Перейти в начало страницы
 
+Цитировать сообщение

Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 20.04.2024 - 17:32