Re: Progress Bar Stuck after Crashing



John,

My 2 cents worth...
I experimented with code to manipulate the status display a few year back.
I had a couple of crashes and stopped using it.

There are other ways to display progress, including the
simple and reliable...
Application.StatusBar = "Progress " & Format$(lngCount/lngTotal, "00%)

Your users will not appreciate your artistic endeavors, if they lose their work
and have to reboot.
--
Jim Cone
San Francisco, USA
http://www.realezsites.com/bus/primitivesoftware



"John" <john.fuller@xxxxxxxxxxxxxx>
wrote in message
I'm using code like this to update the progress bar in excel:

Private Declare Function FindWindow& Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName$, ByVal lpWindowName$)
Private Declare Function CreateWindowEX& Lib "user32" Alias _
"CreateWindowExA" (ByVal dwExStyle&, ByVal lpClassName$ _
, ByVal lpWindowName$, ByVal dwStyle&, ByVal x&, ByVal y& _
, ByVal nWidth&, ByVal nHeight&, ByVal hWndParent& _
, ByVal hMenu&, ByVal hInstance&, lpParam As Any)
Private Declare Function DestroyWindow& Lib "user32" (ByVal hWnd&)
Private Declare Function SendMessage& Lib "user32" Alias _
"SendMessageA" (ByVal hWnd&, ByVal wMsg&, ByVal wParam&, lParam As
Any)
Private Declare Function GetClientRect& Lib "user32" _
(ByVal hWnd&, lpRect As RECT)
Private Declare Function FindWindowEx& Lib "user32" Alias _
"FindWindowExA" (ByVal hWnd1&, ByVal hWnd2&, ByVal lpsz1$, ByVal
lpsz2$)


Private Type RECT
cl As Long
ct As Long
cr As Long
cb As Long
End Type


Sub PBarDraw()
Dim BarState As Boolean
Dim hWnd&, pbhWnd&, y&, h&, i&, R As RECT
hWnd = FindWindow(vbNullString, Application.Caption)
hWnd = FindWindowEx(hWnd, ByVal 0&, "EXCEL4", vbNullString)
GetClientRect hWnd, R
h = (R.cb - R.ct) - 6: y = R.ct + 3
pbhWnd = CreateWindowEX(0, "msctls_progress32", "" _
, &H50000000, 35, y, 185, h, hWnd, 0&, 0&, 0&)
SendMessage pbhWnd, &H409, 0, ByVal RGB(0, 0, 125)
BarState = Application.DisplayStatusBar
Application.DisplayStatusBar = True
For i = 1 To 50000
DoEvents
Application.StatusBar = Format(i / 50000, "0%")
SendMessage pbhWnd, &H402, Val(Application.StatusBar), 0
Next i
DestroyWindow pbhWnd
Application.StatusBar = False
Application.DisplayStatusBar = BarState
End Sub


My problem is this: If the code crashes and and does not destroy the
pbhWnd, the progress bar stays dispalyed as is till I restart excel.
Is there anyway to relocate the window (since its created on the fly)
and destroy it in a seperate set of code that I could run anytime it
gets hung?

Thanks in advance,

John

.



Relevant Pages

  • Re: New essay: Character function table generator
    ... The other was that it crashes when reading certain files, ... I found that in one case I got the same crash, which was caused when the address of the ... read one file successfully, it did *not* crash, but merely failed to display anything. ... MVP Tips: http://www.flounder.com/mvp_tips.htm ...
    (microsoft.public.vc.mfc)
  • Re: Speed issues using FM 9 Server on Win2k3
    ... Crashes are rare, most often being caused by network hiccups ... display, I can't answer as to the relative speed of either db. ... buttons or screen objects, ... FileMaker Pro 9 however seems a lot more robust aginst file corruptions, that's an advantage - although of course I would rather have FileMaker not crash at all... ...
    (comp.databases.filemaker)
  • Re: How to stop Word 2002 from crashing my display?
    ... What do you mean "crashes the display" (i.e.. ... or is the app crashing)? ... reducing resolution and refresh rates ...
    (microsoft.public.word.application.errors)
  • Re: DataGrid new record
    ... "Crashes" typically refers to an exception. ... "GraemeR" wrote in message ... how can I set a datagrid control to display the new record row? ... > Private mDataAdapter As SqlServerCe.SqlCeDataAdapter ...
    (microsoft.public.dotnet.framework.compactframework)
  • Re: Help. with O2 Free Internet deal.
    ... first x pixels of the first y lines for the phone's x by y display :-) ... That would destroy any laptop session. ...
    (uk.telecom.mobile)

Loading