Re[22]: Или бага, или sort() от меня чего-то ждет
От: Scorpion1105 Россия  
Дата: 11.10.16 05:55
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Такое впечатление что у тебя где-то вызов SciterGetMin/MaxWidth/Height() где-то воткнут не по делу.


Воткнут, да. Но казалось бы, что по делу — реакция на WM_GETMINMAXINFO для ограничения минимального размера диалога:
INT_PTR scdialog::on_WM_GETMINMAXINFO(HWND hwndDlg, WPARAM wParam, LPARAM lParam)
{
   RECT rcScreen;
   ::GetWindowRect(hwndDlg, &rcScreen);

   RECT rcClient = rcScreen;
   ::ScreenToClient(hwndDlg, (LPPOINT)&rcClient);
   ::ScreenToClient(hwndDlg, (LPPOINT)&rcClient.right);

   SIZE szBorder = { rcScreen.right - rcScreen.left - rcClient.right,
                     rcScreen.bottom - rcScreen.top - rcClient.bottom };

   auto ctl = self(hwndDlg);

   MINMAXINFO *pInfo = (MINMAXINFO *)lParam;
   POINT Max = ctl->GetMaxDialogSize();
   POINT Min = ctl->GetMinDialogSize();
   Min.x += szBorder.cx;
   Min.y += szBorder.cy;

   pInfo->ptMinTrackSize = Min;
   pInfo->ptMaxTrackSize = Max;

   return 0;
}

SIZE scdialog::GetMinDialogSize()
{
   SIZE sz = { 0, 0 };
   sz.x = ::SciterGetMinWidth(hwnd);
   sz.y = ::SciterGetMinHeight(hwnd, sz.x);
   return sz;
}

Так неправильно?
Как тогда? Сохранить результат и не запрашивать его на каждое сообщение?
И как так получается, что константная, по сути, функция влияет на рендер?

  P.S. Ну и в обработчике WM_INITDIALOG есть, но там-то должно быть точно по делу
   // ...

   SIZE sz;
   sz.cx = ::SciterGetMinWidth(hwndDlg);
   sz.cy = ::SciterGetMinHeight(hwndDlg, sz.cx);

   RECT rc; rc.left = ctl->position.x;
   rc.top = ctl->position.y;
   rc.right = rc.left + sz.cx;
   rc.bottom = rc.top + sz.cy;

   ::AdjustWindowRectEx(&rc,
                        static_cast<DWORD>(GetWindowLongPtr(hwndDlg, GWL_STYLE)), FALSE,
                        static_cast<DWORD>(GetWindowLongPtr(hwndDlg, GWL_EXSTYLE)));

   // ...

P.P.S. Вопрос по инспектору — он совсем не умеет показывать markup для контента, загруженного через SciterLoadHtml? Или можно как-то?
Так получается, что всё показывает — DOM, внешние css, картинки и пр., а саму страницу нет.
--
&nbsp;
Отредактировано 11.10.2016 6:27 Scorpion1105 . Предыдущая версия . Еще …
Отредактировано 11.10.2016 6:20 Scorpion1105 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.