powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / SaveAs Dialog + Statusbar смазывается то за что менять размер формы
4 сообщений из 4, страница 1 из 1
SaveAs Dialog + Statusbar смазывается то за что менять размер формы
    #38906417
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую,
и рассчитываю именно в этом разделе форума на помощь профи.
Есть диалог SaveAs... вызываемый через GetSaveFileName(OFN)
Я его кастомизирую через OFN_ENABLEHOOK + .lpfnHook структуры OPENFILENAME.
В частности добавляю StatusBar через CDN_INITDONE.
Код: vbnet
1.
hStatusBarWnd = CreateStatusWindow(WS_CHILD Or WS_VISIBLE, "StatusBar Text", hwndParent, 0)


hwndParent -это hwnd диалога.

Для того чтоб StatusBar всегда ложился Bottom и прорисовывался, использую 2 вещи (при инициализации диалога CDN_INITDONE, а также при изменении размеров диалога):
Код: vbnet
1.
2.
3.
4.
1)
    SendMessage(hStatusBarWnd, WM_SIZE, 0, 0)
2)
        Call RedrawWindow(hStatusBarWnd, 0, 0, RDW_INVALIDATE Or RDW_FRAME Or RDW_UPDATENOW)



Все хорошо, но у меня Grip (треугольник справа за что тянуть при изменении формы -диалога) слегка смазывается.
И ладно чуть играет при ре-сайзе, но он смазан при изначальном появлении диалога.
Полагаю родной grip диалога накладывается на Grip пририсованного статусбара и пытается прорисоваться поверх.
Перепробовал много чего, не лечится.
Ну, т.е. лечится, только если делать два моих действия (перерисовка StatusBar) при каждом WM_NOTIFY (как правило это CustomDraw), которое посылается диалогу hwndParent. Понятно, что заниматься постоянной перерисовкой не есть гуд (статусбар постоянно мелькать будет и т.п.).

Есть идеи? М.б. как-то родной Grip окна диалога задизейблить чтоб не мешался? Только вот не знаю как.
Даже не знаю как эта "хваталка" правильно называется.

Для пояснения картинка, что именно не нравится. Мелочь конечно...но м.б. кто даст какую идею.
...
Рейтинг: 0 / 0
SaveAs Dialog + Statusbar смазывается то за что менять размер формы
    #38906473
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я правильно понимаю, то "SizeGrip" это ScrollBar, т.е. зная hwndParent диалога можно попытаться его найти (который родной а не от StatusBar) и сделать невидимым. Либо GetDlgItem (но я не знаю что это за ID_??? и не факт что есть такое), либо FindWindowEx по классу окна ScrollBar... Правильно хоть мыслю?
...
Рейтинг: 0 / 0
SaveAs Dialog + Statusbar смазывается то за что менять размер формы
    #38906476
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77рассчитываю именно в этом разделе форума на помощь профи.
Профессионалы свистоперделками не увлекаются.

"Sound quality is not skinnable" (c)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
SaveAs Dialog + Statusbar смазывается то за что менять размер формы
    #38906479
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77"SizeGrip" это ScrollBar, ... зная hwndParent диалога ...найти... и сделать невидимым....FindWindowEx по классу окна ScrollBar...
Угадал.
Код: vbnet
1.
2.
3.
4.
      Case WM_INITDIALOG
...
        Dim hwndSizeGrip As IntPtr = FindWindowEx(hwndParent, IntPtr.Zero, "SCROLLBAR", "")
        SetWindowLong(hwndSizeGrip, GWL_STYLE, GetWindowLong(hwndSizeGrip, GWL_STYLE) And Not WS_VISIBLE)


Теперь отображается только Grip из StatusBar и ничего не смазывается.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / SaveAs Dialog + Statusbar смазывается то за что менять размер формы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]