WM_SETREDRAW doesn't work unless...what?
Try a DoEvents in a few places.
Will need a bit of experimenting.
RBS
wrote in message
...
RM Smissaert kindly replied to my recent Q of how to disable screen
updating in a TreeView:
Private Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" (ByVal HWND As Long, ByVal wMsg _
As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const WM_SETREDRAW = &HB
***
SendMessage TreeView1.HWND, WM_SETREDRAW, IIf(EnableTheBugger, 1, 0),
0
(The 1 and 0 in my IIf are reversed from his example, which I presume
is correct, 'cause it seems to work for me.)
But this call fails, UNLESS (I found empirically) I, like, make the
call, then show a MsgBox (which interrupts processing and "seeds" the
screen first...?) Sort of like having to turn off the pilot before
turning off your stove.
What additional API call must I make if any to make WM_SETREDRAW work?
***
Better yet, how do you do this in a native VBA way?
What I'm doing is cleaning & pruning the tree--deleting & moving
hundreds or even thousands of nodes. Each operation of which has to
wait for my ancient video card, which I inherited from Johannes
Vermeer, to repaint (in slow-to-dry Old Master oils) my screen.
Thanks much.
***
|