Jump to content

Word/IE embedded in GUI...


Recommended Posts

I borrowed the following code (pretty much) from a 2006 thread:

#include <IE.au3>
#include <GUIConstants.au3>
#include <WindowsConstants.au3>

_IEErrorHandlerRegister ()
$oIE = _IECreateEmbedded()
GUICreate("Embedded word control Test", 640, 580, (@DesktopWidth - 640) / 2, (@DesktopHeight - 580) / 2, _
        $WS_OVERLAPPEDWINDOW + $WS_VISIBLE + $WS_CLIPSIBLINGS)
$GUIActiveX = GUICtrlCreateObj($oIE, 10, 40, 620, 360)
GUISetState()

    $sFile = @DesktopDir & "\Aetrex.Doc"
    _IENavigate ($oIE, $sFile, 0)
    While $oIE.ReadyState <> 4
        Sleep(50)
    WEnd
    $oDoc = $oIE.Document
    $oWord = $oDoc.Application
    ; Put document into 'Web View' mode
    $oWord.Activewindow.View = 6
    ; Manage display of toolbars
    $oDoc.CommandBars ("Reviewing").Visible = False
    $oDoc.CommandBars ("Standard").Visible = False
;   $oDoc.CommandBars("Formatting").Visible = False
;   $oDoc.CommandBars("Drawing").Visible = False
;   $oDoc.CommandBars("Forms").Visible = False
;   $oDoc.DisplayStatusBar = False
;   $oDoc.DisplayCommentIndicator = 0

While 1
    $msg = GUIGetMsg()
    Switch $msg
        Case $GUI_EVENT_CLOSE
            ExitLoop
    EndSwitch
    Sleep(50)
WEnd
_IENavigate ($oIE, "about:blank")
$oDoc = 0
$oWord = 0
GUIDelete()
Exit

It parks a Word document inside an IE object in your GUI.

If you minimize and restore the window, nothing gets repainted.

Is there a fix for this one?

PS - I was also looking for a way to disable the "view" toolbar in the bottom left...

Edited by Spiff59
Link to post
Share on other sites

Toggling the screwy $WS_EX_COMPOSITED style seems to give me a better than 90% success rate in repainting the Word portion of the GUI after a minimize/losefocus event. So, this is the cheesy work-around I have now:

#include <IE.au3>
#include <GUIConstants.au3>
#include <WindowsConstants.au3>

Global Const $SC_RESTORE = 0xF120;
Global $Redraw_flag

_IEErrorHandlerRegister ()
$oIE = _IECreateEmbedded()
$hGUI = GUICreate("Embedded word control Test", 640, 580, (@DesktopWidth - 640) / 2, (@DesktopHeight - 580) / 2, _
        $WS_OVERLAPPEDWINDOW + $WS_VISIBLE + $WS_CLIPSIBLINGS)
$GUIActiveX = GUICtrlCreateObj($oIE, 10, 40, 620, 360)
$button = GUICtrlCreateButton("Minimize, then Restore", 210, 480, 200, 20)
GUISetState()

    $sFile = @DesktopDir & "\test.Doc"
    _IENavigate ($oIE, $sFile, 0)
    While $oIE.ReadyState <> 4
        Sleep(50)
    WEnd
    $oDoc = $oIE.Document
    $oWord = $oDoc.Application
    ; Put document into 'Web View' mode
    $oWord.Activewindow.View = 6
    ; Manage display of toolbars
    $oDoc.CommandBars ("Reviewing").Visible = False
    $oDoc.CommandBars ("Standard").Visible = False
;   $oDoc.CommandBars("Formatting").Visible = False
;   $oDoc.CommandBars("Drawing").Visible = False
;   $oDoc.CommandBars("Forms").Visible = False
;   $oDoc.DisplayStatusBar = False
;   $oDoc.DisplayCommentIndicator = 0

    GUIRegisterMsg($WM_ACTIVATE,"WM_ACTIVATE")


While 1
    $msg = GUIGetMsg()
    Switch $msg
        Case $button
            GUISetState(@SW_MINIMIZE)
            Sleep(300)
            GUISetState(@SW_RESTORE)
        Case $GUI_EVENT_CLOSE
            ExitLoop
    EndSwitch
    If $Redraw_flag Then
        GUISetStyle(-1, $WS_EX_COMPOSITED, $hGUI)
;       Sleep(50)
        GUISetStyle(-1, 0, $hGUI)
        $Redraw_flag = 0
    EndIf
    Sleep(50)
WEnd
_IENavigate ($oIE, "about:blank")
$oDoc = 0
$oWord = 0
GUIDelete()
Exit

Func WM_ACTIVATE($hWndGUI, $MsgID, $wParam, $lParam)
    If $wParam = 1 Then
        $Redraw_flag = 1
    EndIf
    Return $GUI_RUNDEFMSG
EndFunc

Still no other ideas?

PS - You need to point the script ($sFile) to some sort of Word doc to run it.

Edited by Spiff59
Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...