SaveAs Dialog + Statusbar смазывается то за что менять размер формы

Дмитрий77
Дата: 16.03.2015 21:00:22
Приветствую,
и рассчитываю именно в этом разделе форума на помощь профи.
Есть диалог SaveAs... вызываемый через GetSaveFileName(OFN)
Я его кастомизирую через OFN_ENABLEHOOK + .lpfnHook структуры OPENFILENAME.
В частности добавляю StatusBar через CDN_INITDONE.
hStatusBarWnd = CreateStatusWindow(WS_CHILD Or WS_VISIBLE, "StatusBar Text", hwndParent, 0)

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

Для того чтоб StatusBar всегда ложился Bottom и прорисовывался, использую 2 вещи (при инициализации диалога CDN_INITDONE, а также при изменении размеров диалога):
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 окна диалога задизейблить чтоб не мешался? Только вот не знаю как.
Даже не знаю как эта "хваталка" правильно называется.

Для пояснения картинка, что именно не нравится. Мелочь конечно...но м.б. кто даст какую идею.
Дмитрий77
Дата: 16.03.2015 23:10:24
Если я правильно понимаю, то "SizeGrip" это ScrollBar, т.е. зная hwndParent диалога можно попытаться его найти (который родной а не от StatusBar) и сделать невидимым. Либо GetDlgItem (но я не знаю что это за ID_??? и не факт что есть такое), либо FindWindowEx по классу окна ScrollBar... Правильно хоть мыслю?
Dimitry Sibiryakov
Дата: 16.03.2015 23:22:31

Дмитрий77
рассчитываю именно в этом разделе форума на помощь профи.

Профессионалы свистоперделками не увлекаются.

"Sound quality is not skinnable" (c)

Posted via ActualForum NNTP Server 1.5

Дмитрий77
Дата: 16.03.2015 23:26:07
Дмитрий77
"SizeGrip" это ScrollBar, ... зная hwndParent диалога ...найти... и сделать невидимым....FindWindowEx по классу окна ScrollBar...

Угадал.
      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 и ничего не смазывается.