simplify, simplify, simplify...

added editor support.
added multiple document support.
reduced what interfaces were needed by the WebBrowser class.


Not Part of build!
This commit is contained in:
dougt%netscape.com 2000-06-27 01:30:20 +00:00
parent 20181164f8
commit 888cb9091a
5 changed files with 153 additions and 444 deletions

View File

@ -34,18 +34,42 @@
#include "nsIDocShell.h"
#include "nsIContentViewer.h"
#include "nsIContentViewerFile.h"
#include "nsIDocShell.h"
#include "nsIWebNavigation.h"
#include "nsIEditorShell.h"
#include "nsIDOMWindow.h"
#include "nsIScriptGlobalObject.h"
#include "nsIInterfaceRequestor.h"
//*****************************************************************************
//*** WebBrowser: Object Management
//*****************************************************************************
WebBrowser::WebBrowser()
nsresult
ConvertDocShellToDOMWindow(nsIDocShell* aDocShell, nsIDOMWindow** aDOMWindow)
{
NS_INIT_REFCNT();
if (!aDOMWindow)
return NS_ERROR_FAILURE;
*aDOMWindow = nsnull;
nsCOMPtr<nsIScriptGlobalObject> scriptGlobalObject(do_GetInterface(aDocShell));
nsCOMPtr<nsIDOMWindow> domWindow(do_QueryInterface(scriptGlobalObject));
if (!domWindow)
return NS_ERROR_FAILURE;
*aDOMWindow = domWindow.get();
NS_ADDREF(*aDOMWindow);
return NS_OK;
}
WebBrowser::WebBrowser(){}
WebBrowser::~WebBrowser()
{
PRBool duh;
if (mEditor) // not good place for it!
mEditor->SaveDocument(PR_FALSE, PR_FALSE, &duh);
}
nsresult
@ -61,24 +85,18 @@ WebBrowser::Init(nsNativeWidget widget)
mBaseWindow = do_QueryInterface(mWebBrowser);
rv = mBaseWindow->InitWindow( widget,
nsnull,
0,
32,
450,
450);
nsnull,
0,
0,
100,
100);
mWebBrowser->SetTopLevelWindow(nsnull);
mWebBrowser->SetTopLevelWindow(this);
mBaseWindow->Create();
nsCOMPtr <nsIDocShell> rootDocShell;
mWebBrowser->GetDocShell(getter_AddRefs(rootDocShell));
rootDocShell->SetAllowPlugins(PR_TRUE);
mBaseWindow->SetVisibility(PR_TRUE);
return rv;
return rv;
}
nsresult
@ -89,7 +107,6 @@ WebBrowser::GetIWebBrowser(nsIWebBrowser **outBrowser)
return NS_OK;
}
nsresult
WebBrowser::GoTo(char* url)
{
@ -97,6 +114,26 @@ WebBrowser::GoTo(char* url)
return webNav->LoadURI(NS_ConvertASCIItoUCS2(url).GetUnicode());
}
nsresult
WebBrowser::Edit(char* url)
{
nsresult rv;
mEditor = do_CreateInstance("component://netscape/editor/editorshell", &rv);
if (NS_FAILED(rv)) return rv;
nsCOMPtr <nsIDocShell> rootDocShell;
mWebBrowser->GetDocShell(getter_AddRefs(rootDocShell));
nsCOMPtr<nsIDOMWindow> domWindow;
ConvertDocShellToDOMWindow(rootDocShell, getter_AddRefs(domWindow));
mEditor->Init();
mEditor->SetEditorType(NS_ConvertASCIItoUCS2("html").GetUnicode());
mEditor->SetWebShellWindow(domWindow);
mEditor->SetContentWindow(domWindow);
return mEditor->LoadUrl(NS_ConvertASCIItoUCS2(url).GetUnicode());
}
nsresult
WebBrowser::Print(void)
@ -118,296 +155,9 @@ WebBrowser::Print(void)
}
// an empty implementation.
//*****************************************************************************
// WebBrowser::nsISupports
//*****************************************************************************
NS_IMPL_ADDREF(WebBrowser)
NS_IMPL_RELEASE(WebBrowser)
NS_INTERFACE_MAP_BEGIN(WebBrowser)
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIWebBrowserChrome)
NS_INTERFACE_MAP_ENTRY(nsIInterfaceRequestor)
NS_INTERFACE_MAP_ENTRY(nsIWebBrowserChrome)
NS_INTERFACE_MAP_ENTRY(nsIWebProgressListener)
NS_INTERFACE_MAP_ENTRY(nsIBaseWindow)
NS_INTERFACE_MAP_ENTRY(nsIPrompt)
NS_INTERFACE_MAP_END
//*****************************************************************************
// WebBrowser::nsIInterfaceRequestor
//*****************************************************************************
NS_IMETHODIMP WebBrowser::GetInterface(const nsIID &aIID, void** aInstancePtr)
nsresult
WebBrowser::SetPositionAndSize(int x, int y, int cx, int cy)
{
return QueryInterface(aIID, aInstancePtr);
return mBaseWindow->SetPositionAndSize(x, y, cx, cy, true);
}
//*****************************************************************************
// WebBrowser::nsIWebBrowserChrome
//*****************************************************************************
NS_IMETHODIMP WebBrowser::SetJSStatus(const PRUnichar* aStatus)
{
return NS_OK;
}
NS_IMETHODIMP WebBrowser::SetJSDefaultStatus(const PRUnichar* aStatus)
{
return NS_OK;
}
NS_IMETHODIMP WebBrowser::SetOverLink(const PRUnichar* aLink)
{
return NS_OK;
}
NS_IMETHODIMP WebBrowser::GetWebBrowser(nsIWebBrowser** aWebBrowser)
{
return NS_OK;
}
NS_IMETHODIMP WebBrowser::SetWebBrowser(nsIWebBrowser* aWebBrowser)
{
return NS_OK;
}
NS_IMETHODIMP WebBrowser::GetChromeMask(PRUint32* aChromeMask)
{
return NS_OK;
}
NS_IMETHODIMP WebBrowser::SetChromeMask(PRUint32 aChromeMask)
{
return NS_OK;
}
extern nsresult CreateNativeWindowWidget(nsIWebBrowser **outBrowser);
NS_IMETHODIMP WebBrowser::GetNewBrowser(PRUint32 chromeMask, nsIWebBrowser **outBrowser)
{
CreateNativeWindowWidget(outBrowser);
return NS_OK;
}
NS_IMETHODIMP WebBrowser::FindNamedBrowserItem(const PRUnichar* aName,
nsIDocShellTreeItem ** aWebBrowser)
{
return NS_ERROR_FAILURE;
}
NS_IMETHODIMP WebBrowser::SizeBrowserTo(PRInt32 aCX, PRInt32 aCY)
{
return NS_OK;
}
NS_IMETHODIMP WebBrowser::ShowAsModal(void)
{
return NS_OK;
}
//*****************************************************************************
// WebBrowser::nsIWebProgressListener
//*****************************************************************************
NS_IMETHODIMP WebBrowser::OnStateChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, PRInt32 aStateFlags, PRUint32 aStatus)
{
return NS_OK;
}
NS_IMETHODIMP WebBrowser::OnProgressChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, PRInt32 aCurSelfProgress, PRInt32 aMaxSelfProgress, PRInt32 aCurTotalProgress, PRInt32 aMaxTotalProgress)
{
return NS_OK;
}
NS_IMETHODIMP WebBrowser::OnLocationChange(nsIURI *location)
{
return NS_OK;
}
//*****************************************************************************
// WebBrowser::nsIBaseWindow
//*****************************************************************************
NS_IMETHODIMP WebBrowser::InitWindow(nativeWindow aParentNativeWindow,
nsIWidget* parentWidget, PRInt32 x, PRInt32 y, PRInt32 cx, PRInt32 cy)
{
return NS_OK;
}
NS_IMETHODIMP WebBrowser::Create()
{
return NS_ERROR_UNEXPECTED;
}
NS_IMETHODIMP WebBrowser::Destroy()
{
return NS_ERROR_UNEXPECTED;
}
NS_IMETHODIMP WebBrowser::SetPosition(PRInt32 x, PRInt32 y)
{
return NS_OK;
}
NS_IMETHODIMP WebBrowser::GetPosition(PRInt32* x, PRInt32* y)
{
NS_ENSURE_ARG_POINTER(x && y);
return NS_OK;
}
NS_IMETHODIMP WebBrowser::SetSize(PRInt32 cx, PRInt32 cy, PRBool fRepaint)
{
return NS_OK;
}
NS_IMETHODIMP WebBrowser::GetSize(PRInt32* cx, PRInt32* cy)
{
NS_ENSURE_ARG_POINTER(cx && cy);
return NS_OK;
}
NS_IMETHODIMP WebBrowser::SetPositionAndSize(PRInt32 x, PRInt32 y, PRInt32 cx,
PRInt32 cy, PRBool fRepaint)
{
return mBaseWindow->SetPositionAndSize(x, y,cx, cy,fRepaint);
}
NS_IMETHODIMP WebBrowser::GetPositionAndSize(PRInt32* x, PRInt32* y, PRInt32* cx,
PRInt32* cy)
{
return NS_OK;
}
NS_IMETHODIMP WebBrowser::Repaint(PRBool aForce)
{
return NS_OK;
}
NS_IMETHODIMP WebBrowser::GetParentWidget(nsIWidget** aParentWidget)
{
NS_ENSURE_ARG_POINTER(aParentWidget);
return NS_OK;
}
NS_IMETHODIMP WebBrowser::SetParentWidget(nsIWidget* aParentWidget)
{
return NS_OK;
}
NS_IMETHODIMP WebBrowser::GetParentNativeWindow(nativeWindow* aParentNativeWindow)
{
NS_ENSURE_ARG_POINTER(aParentNativeWindow);
return NS_OK;
}
NS_IMETHODIMP WebBrowser::SetParentNativeWindow(nativeWindow aParentNativeWindow)
{
return NS_OK;
}
NS_IMETHODIMP WebBrowser::GetVisibility(PRBool* aVisibility)
{
NS_ENSURE_ARG_POINTER(aVisibility);
return NS_OK;
}
NS_IMETHODIMP WebBrowser::SetVisibility(PRBool aVisibility)
{
return NS_OK;
}
NS_IMETHODIMP WebBrowser::GetMainWidget(nsIWidget** aMainWidget)
{
NS_ENSURE_ARG_POINTER(aMainWidget);
return NS_OK;
}
NS_IMETHODIMP WebBrowser::SetFocus()
{
return NS_OK;
}
NS_IMETHODIMP WebBrowser::FocusAvailable(nsIBaseWindow* aCurrentFocus,
PRBool* aTookFocus)
{
return NS_OK;
}
NS_IMETHODIMP WebBrowser::GetTitle(PRUnichar** aTitle)
{
return NS_OK;
}
NS_IMETHODIMP WebBrowser::SetTitle(const PRUnichar* aTitle)
{
return NS_OK;
}
//*****************************************************************************
// WebBrowser::nsIPrompt
//*****************************************************************************
NS_IMETHODIMP WebBrowser::Alert(const PRUnichar *dialogTitle, const PRUnichar *text)
{
return NS_OK;
}
NS_IMETHODIMP WebBrowser::Confirm(const PRUnichar *dialogTitle, const PRUnichar *text, PRBool *_retval)
{
return NS_OK;
}
NS_IMETHODIMP WebBrowser::ConfirmCheck(const PRUnichar *dialogTitle, const PRUnichar *text, const PRUnichar *checkMsg, PRBool *checkValue, PRBool *_retval)
{
return NS_OK;
}
NS_IMETHODIMP WebBrowser::Prompt(const PRUnichar *dialogTitle, const PRUnichar *text, const PRUnichar *passwordRealm, PRUint32 savePassword, const PRUnichar *defaultText, PRUnichar **result, PRBool *_retval)
{
return NS_OK;
}
NS_IMETHODIMP WebBrowser::PromptUsernameAndPassword(const PRUnichar *dialogTitle, const PRUnichar *text, const PRUnichar *passwordRealm, PRUint32 savePassword, PRUnichar **user, PRUnichar **pwd, PRBool *_retval)
{
return NS_OK;
}
NS_IMETHODIMP WebBrowser::PromptPassword(const PRUnichar *dialogTitle, const PRUnichar *text, const PRUnichar *passwordRealm, PRUint32 savePassword, PRUnichar **user, PRBool *_retval)
{
return NS_OK;
}
NS_IMETHODIMP WebBrowser::Select(const PRUnichar *dialogTitle, const PRUnichar *text, PRUint32 count, const PRUnichar **selectList, PRInt32 *outSelection, PRBool *_retval)
{
return NS_OK;
}
NS_IMETHODIMP WebBrowser::UniversalDialog(const PRUnichar *inTitleMessage, const PRUnichar *inDialogTitle, const PRUnichar *inMsg, const PRUnichar *inCheckboxMsg, const PRUnichar *inButton0Text, const PRUnichar *inButton1Text, const PRUnichar *inButton2Text, const PRUnichar *inButton3Text, const PRUnichar *inEditfield1Msg, const PRUnichar *inEditfield2Msg, PRUnichar **inoutEditfield1Value, PRUnichar **inoutEditfield2Value, const PRUnichar *inIConURL, PRBool *inoutCheckboxState, PRInt32 inNumberButtons, PRInt32 inNumberEditfields, PRInt32 inEditField1Password, PRInt32 *outButtonPressed)
{
return NS_OK;
}

View File

@ -24,49 +24,31 @@
#ifndef __WebBrowser__
#define __WebBrowser__
// Helper Classes
#include "nsCOMPtr.h"
// Interfaces Needed
#include "nsIWidget.h"
#include "nsIWebBrowser.h"
#include "nsIWebBrowserChrome.h"
#include "nsIBaseWindow.h"
#include "nsIWebProgressListener.h"
#include "nsIInterfaceRequestor.h"
#include "nsIPrompt.h"
#include "nsIWebBrowser.h"
#include "nsIEditorShell.h"
class WebBrowser : public nsIWebBrowserChrome,
public nsIWebProgressListener,
public nsIBaseWindow,
public nsIPrompt,
public nsIInterfaceRequestor
class WebBrowser
{
public:
NS_DECL_ISUPPORTS
NS_DECL_NSIWEBBROWSERCHROME
NS_DECL_NSIWEBPROGRESSLISTENER
NS_DECL_NSIBASEWINDOW
NS_DECL_NSIPROMPT
NS_DECL_NSIINTERFACEREQUESTOR
nsresult Init(nsNativeWidget widget);
nsresult SetPositionAndSize(int x, int y, int cx, int cy);
nsresult GoTo(char* url);
nsresult Edit(char* url);
nsresult Print(void);
nsresult GetIWebBrowser(nsIWebBrowser **outBrowser);
WebBrowser();
virtual ~WebBrowser();
protected:
nsCOMPtr<nsIWidget> mWindow;
nsCOMPtr<nsIWebBrowser> mWebBrowser;
nsCOMPtr<nsIBaseWindow> mBaseWindow;
//for editing
nsCOMPtr<nsIEditorShell> mEditor;
};
#endif /* __WebBrowser__ */

View File

@ -8,6 +8,7 @@
#define IDS_APP_TITLE 103
#define IDM_ABOUT 104
#define MOZ_OpenURI 104
#define MOZ_GetURI 104
#define IDM_EXIT 105
#define IDS_HELLO 106
#define IDI_WINEMBED 107
@ -17,6 +18,8 @@
#define MOZ_EDIT_URI 1001
#define MOZ_Open 32771
#define MOZ_Print 32772
#define MOZ_NewBrowser 32773
#define MOZ_NewEditor 32774
#define IDC_STATIC -1
// Next default values for new objects
@ -24,7 +27,7 @@
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 129
#define _APS_NEXT_COMMAND_VALUE 32773
#define _APS_NEXT_COMMAND_VALUE 32775
#define _APS_NEXT_CONTROL_VALUE 1002
#define _APS_NEXT_SYMED_VALUE 110
#endif

View File

@ -22,25 +22,16 @@
*/
#include <stdio.h>
#include "stdafx.h"
#include "Windows.h"
#include "resource.h"
class nsIWebBrowser;
#include "nsIDocShell.h"
#include "nsIWebNavigation.h"
#include "nsIEditorShell.h"
#include "nsIDOMWindow.h"
#include "nsIScriptGlobalObject.h"
#include "nsEmbedAPI.h"
#include "WebBrowser.h"
WebBrowser *mozBrowser = nsnull;
extern nsresult NS_InitEmbedding(const char *aPath);
extern nsresult NS_TermEmbedding();
nsresult CreateWebBrowser(WebBrowser **outBrowser);
extern nsresult CreateNativeWindowWidget(nsIWebBrowser **outBrowser);
#define MAX_LOADSTRING 100
@ -53,32 +44,10 @@ TCHAR szWindowClass[MAX_LOADSTRING]; // The title bar text
// Foward declarations of functions included in this code module:
ATOM MyRegisterClass(HINSTANCE hInstance);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK OpenURI(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK GetURI(HWND, UINT, WPARAM, LPARAM);
ConvertDocShellToDOMWindow(nsIDocShell* aDocShell, nsIDOMWindow** aDOMWindow)
{
if (!aDOMWindow)
return NS_ERROR_FAILURE;
*aDOMWindow = nsnull;
nsCOMPtr<nsIScriptGlobalObject> scriptGlobalObject(do_GetInterface(aDocShell));
nsCOMPtr<nsIDOMWindow> domWindow(do_QueryInterface(scriptGlobalObject));
if (!domWindow)
return NS_ERROR_FAILURE;
*aDOMWindow = domWindow.get();
NS_ADDREF(*aDOMWindow);
return NS_OK;
}
#define RUN_EDITOR 1
nsCOMPtr<nsIEditorShell> editor;
char gLastURI[100];
int main ()
{
@ -93,37 +62,17 @@ int main ()
LoadString(hInstance, IDC_WINEMBED, szWindowClass, MAX_LOADSTRING);
MyRegisterClass(hInstance);
NS_InitEmbedding(nsnull);
// Init Embedding APIs
NS_InitEmbedding("");
nsCOMPtr<nsIWebBrowser> theBrowser;
CreateNativeWindowWidget(getter_AddRefs(theBrowser));
#ifndef RUN_EDITOR
nsCOMPtr<nsIWebNavigation> webNav(do_QueryInterface(theBrowser));
webNav->LoadURI(NS_ConvertASCIItoUCS2("http://people.netscape.com/dougt").GetUnicode());
#else
nsresult rv;
editor = do_CreateInstance("component://netscape/editor/editorshell", &rv);
if (NS_FAILED(rv))
// put up at lease on browser window ....
/////////////////////////////////////////////////////////////
WebBrowser* newBrowser;
CreateWebBrowser(&newBrowser);
if (!newBrowser)
return -1;
nsCOMPtr <nsIDocShell> rootDocShell;
theBrowser->GetDocShell(getter_AddRefs(rootDocShell));
nsCOMPtr<nsIDOMWindow> domWindow;
ConvertDocShellToDOMWindow(rootDocShell, getter_AddRefs(domWindow));
editor->Init();
editor->SetEditorType(NS_ConvertASCIItoUCS2("html").GetUnicode());
editor->SetWebShellWindow(domWindow);
editor->SetContentWindow(domWindow);
editor->LoadUrl(NS_ConvertASCIItoUCS2("http://lxr.mozilla.org/").GetUnicode());
#endif
newBrowser->GoTo("http://people.netscape.com/dougt");
/////////////////////////////////////////////////////////////
// Main message loop:
@ -132,12 +81,8 @@ int main ()
TranslateMessage(&msg);
DispatchMessage(&msg);
}
#ifdef RUN_EDITOR
PRBool duh;
editor->SaveDocument(PR_FALSE, PR_FALSE, &duh);
#endif
// Close down Embedding APIs
NS_TermEmbedding();
return msg.wParam;
@ -181,7 +126,7 @@ ATOM MyRegisterClass(HINSTANCE hInstance)
nsresult CreateNativeWindowWidget(nsIWebBrowser **outBrowser)
nsresult CreateWebBrowser(WebBrowser **outBrowser)
{
STARTUPINFO StartupInfo;
@ -192,9 +137,13 @@ nsresult CreateNativeWindowWidget(nsIWebBrowser **outBrowser)
int nCmdShow = StartupInfo.dwFlags & STARTF_USESHOWWINDOW ? StartupInfo.wShowWindow : SW_SHOWDEFAULT;
HWND hWnd;
WebBrowser *browser = new WebBrowser();
if (! browser)
return NS_ERROR_FAILURE;
hWnd = CreateWindow( szWindowClass,
HWND hWnd;
hWnd = CreateWindow( szWindowClass,
szTitle,
WS_OVERLAPPEDWINDOW,
0,
@ -204,33 +153,30 @@ nsresult CreateNativeWindowWidget(nsIWebBrowser **outBrowser)
NULL,
NULL,
hInstance,
NULL);
NULL);
if (!hWnd)
{
if (!hWnd)
{
return NS_ERROR_FAILURE;
}
}
SetWindowLong( hWnd, GWL_USERDATA, (LONG)browser); // save the browser LONG_PTR.
mozBrowser = new WebBrowser();
if (! mozBrowser)
return NS_ERROR_FAILURE;
NS_ADDREF(mozBrowser);
if ( NS_FAILED( mozBrowser->Init(hWnd) ) )
if ( NS_FAILED( browser->Init(hWnd) ) ) // this will own hWnd
return NS_ERROR_FAILURE;
RECT rect;
GetClientRect(hWnd, &rect);
rect.top += 32;
mozBrowser->SetPositionAndSize(rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, true);
browser->SetPositionAndSize(rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top);
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
if (outBrowser)
mozBrowser->GetIWebBrowser(outBrowser);
*outBrowser = browser;
return NS_OK;
}
@ -252,6 +198,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
HDC hdc;
TCHAR szHello[MAX_LOADSTRING];
LoadString(hInst, IDS_HELLO, szHello, MAX_LOADSTRING);
WebBrowser *browser = (WebBrowser *) GetWindowLong(hWnd, GWL_USERDATA);
switch (message)
{
@ -262,19 +209,50 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
switch (wmId)
{
case IDM_EXIT:
DestroyWindow(hWnd);
if (browser)
delete browser;
DestroyWindow(hWnd);
break;
case MOZ_NewBrowser:
gLastURI[0] = 0;
if (DialogBox(hInst, (LPCTSTR)MOZ_GetURI, hWnd, (DLGPROC)GetURI))
{
WebBrowser* newBrowser;
CreateWebBrowser(&newBrowser);
if (!newBrowser)
break;
newBrowser->GoTo(gLastURI);
}
break;
case MOZ_NewEditor:
gLastURI[0] = 0;
if (DialogBox(hInst, (LPCTSTR)MOZ_GetURI, hWnd, (DLGPROC)GetURI))
{
WebBrowser* newBrowser;
CreateWebBrowser(&newBrowser);
if (!newBrowser)
break;
newBrowser->Edit(gLastURI);
}
break;
case MOZ_Open:
DialogBox(hInst, (LPCTSTR)MOZ_OpenURI, hWnd, (DLGPROC)OpenURI);
break;
gLastURI[0] = 0;
if (browser && DialogBox(hInst, (LPCTSTR)MOZ_GetURI, hWnd, (DLGPROC)GetURI))
{
browser->GoTo(gLastURI);
}
break;
case MOZ_Print:
//if (mozBrowser)
// mozBrowser->Print();
editor->SetTextProperty(NS_ConvertASCIItoUCS2("font").GetUnicode(),
NS_ConvertASCIItoUCS2("color").GetUnicode(),
NS_ConvertASCIItoUCS2("BLUE").GetUnicode());
if (browser)
browser->Print();
// editor->SetTextProperty(NS_ConvertASCIItoUCS2("font").GetUnicode(),
// NS_ConvertASCIItoUCS2("color").GetUnicode(),
// NS_ConvertASCIItoUCS2("BLUE").GetUnicode());
break;
default:
@ -286,8 +264,8 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
RECT rect;
GetClientRect(hWnd, &rect);
rect.top += 32;
if (mozBrowser)
mozBrowser->SetPositionAndSize(rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, true);
if (browser)
browser->SetPositionAndSize(rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top);
break;
case WM_PAINT:
@ -308,7 +286,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
case WM_DESTROY:
PostQuitMessage(0);
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
@ -317,7 +295,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
}
// Mesage handler for about box.
LRESULT CALLBACK OpenURI(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
LRESULT CALLBACK GetURI(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
@ -327,19 +305,13 @@ LRESULT CALLBACK OpenURI(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
case WM_COMMAND:
if (LOWORD(wParam) == IDOK)
{
char szBuf[1000];
GetDlgItemText(hDlg, MOZ_EDIT_URI, szBuf, 1000);
GetDlgItemText(hDlg, MOZ_EDIT_URI, gLastURI, 100);
EndDialog(hDlg, LOWORD(wParam));
mozBrowser->GoTo(szBuf);
return TRUE;
}
else if (LOWORD(wParam) == IDNO)
{
EndDialog(hDlg, LOWORD(wParam));
return TRUE;
}
break;

View File

@ -43,7 +43,9 @@ IDC_WINEMBED MENU DISCARDABLE
BEGIN
POPUP "&File"
BEGIN
MENUITEM "Open URL...", MOZ_Open
MENUITEM "New Browser...", MOZ_NewBrowser
MENUITEM "New Editor...", MOZ_NewEditor
MENUITEM "Change Current URL...", MOZ_Open
MENUITEM "Print Page", MOZ_Print
MENUITEM "E&xit", IDM_EXIT
END
@ -55,9 +57,9 @@ END
// Dialog
//
MOZ_OpenURI DIALOG DISCARDABLE 22, 17, 230, 75
MOZ_GetURI DIALOG DISCARDABLE 22, 17, 230, 75
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Open URL"
CAPTION "Enter A URL"
FONT 8, "System"
BEGIN
ICON IDI_WINEMBED,IDC_MYICON,8,4,20,20