Alexander Nicolaysen Sørnes : shdocvw: Add a toolbar to IE.
Alexandre Julliard
julliard at winehq.org
Tue Aug 3 13:10:37 CDT 2010
Module: wine
Branch: master
Commit: 5d7c46096222b2f1c78c450defb0558eb29559b0
URL: http://source.winehq.org/git/wine.git/?a=commit;h=5d7c46096222b2f1c78c450defb0558eb29559b0
Author: Alexander Nicolaysen Sørnes <alex at thehandofagony.com>
Date: Tue Aug 3 12:36:30 2010 +0200
shdocvw: Add a toolbar to IE.
---
dlls/shdocvw/En.rc | 10 ++++++++
dlls/shdocvw/iexplore.c | 58 +++++++++++++++++++++++++++++++++++++++++++---
dlls/shdocvw/resource.h | 8 ++++++
3 files changed, 72 insertions(+), 4 deletions(-)
diff --git a/dlls/shdocvw/En.rc b/dlls/shdocvw/En.rc
index 0c70851..ee6e378 100644
--- a/dlls/shdocvw/En.rc
+++ b/dlls/shdocvw/En.rc
@@ -60,3 +60,13 @@ IDR_BROWSE_MAIN_MENU MENU
MENUITEM "&About Internet Explorer...", ID_BROWSE_ABOUT
}
}
+
+STRINGTABLE
+{
+ IDS_TB_BACK "Back"
+ IDS_TB_FORWARD "Forward"
+ IDS_TB_STOP "Stop"
+ IDS_TB_REFRESH "Refresh"
+ IDS_TB_HOME "Home"
+ IDS_TB_PRINT "Print"
+}
diff --git a/dlls/shdocvw/iexplore.c b/dlls/shdocvw/iexplore.c
index c934753..a908744 100644
--- a/dlls/shdocvw/iexplore.c
+++ b/dlls/shdocvw/iexplore.c
@@ -319,10 +319,39 @@ static void ie_dialog_about(HWND hwnd)
DestroyIcon(icon);
}
+static void add_tb_separator(HWND hwnd)
+{
+ TBBUTTON btn;
+
+ ZeroMemory(&btn, sizeof(btn));
+
+ btn.iBitmap = 3;
+ btn.fsStyle = BTNS_SEP;
+ SendMessageW(hwnd, TB_ADDBUTTONSW, 1, (LPARAM)&btn);
+}
+
+static void add_tb_button(HWND hwnd, int bmp, int cmd, int strId)
+{
+ TBBUTTON btn;
+ WCHAR buf[30];
+
+ LoadStringW(shdocvw_hinstance, strId, buf, sizeof(buf)/sizeof(buf[0]));
+
+ btn.iBitmap = bmp;
+ btn.idCommand = cmd;
+ btn.fsState = TBSTATE_ENABLED;
+ btn.fsStyle = BTNS_SHOWTEXT;
+ btn.dwData = 0;
+ btn.iString = (INT_PTR)buf;
+
+ SendMessageW(hwnd, TB_ADDBUTTONSW, 1, (LPARAM)&btn);
+}
+
static void create_rebar(HWND hwnd)
{
HWND hwndRebar;
HWND hwndAddress;
+ HWND hwndToolbar;
REBARINFO rebarinf;
REBARBANDINFOW bandinf;
WCHAR addr[] = {'A','d','d','r','e','s','s',0};
@@ -336,16 +365,37 @@ static void create_rebar(HWND hwnd)
SendMessageW(hwndRebar, RB_SETBARINFO, 0, (LPARAM)&rebarinf);
+ hwndToolbar = CreateWindowExW(TBSTYLE_EX_MIXEDBUTTONS, TOOLBARCLASSNAMEW, NULL, TBSTYLE_FLAT | WS_CHILD | WS_VISIBLE, 0, 0, 0, 0, hwndRebar, (HMENU)IDC_BROWSE_TOOLBAR, shdocvw_hinstance, NULL);
+
+ SendMessageW(hwndToolbar, TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0);
+ add_tb_button(hwndToolbar, I_IMAGENONE, 0, IDS_TB_BACK);
+ add_tb_button(hwndToolbar, I_IMAGENONE, 0, IDS_TB_FORWARD);
+ add_tb_button(hwndToolbar, I_IMAGENONE, 0, IDS_TB_STOP);
+ add_tb_button(hwndToolbar, I_IMAGENONE, 0, IDS_TB_REFRESH);
+ add_tb_button(hwndToolbar, I_IMAGENONE, 0, IDS_TB_HOME);
+ add_tb_separator(hwndToolbar);
+ add_tb_button(hwndToolbar, I_IMAGENONE, ID_BROWSE_PRINT, IDS_TB_PRINT);
+ SendMessageW(hwndToolbar, TB_SETBUTTONSIZE, 0, MAKELPARAM(50,40));
+ SendMessageW(hwndToolbar, TB_AUTOSIZE, 0, 0);
+
+ bandinf.cbSize = sizeof(bandinf);
+ bandinf.fMask = RBBIM_STYLE | RBBIM_CHILD | RBBIM_CHILDSIZE | RBBIM_SIZE;
+ bandinf.fStyle = RBBS_CHILDEDGE;
+ bandinf.cx = 100;
+ bandinf.cyMinChild = 42;
+ bandinf.hwndChild = hwndToolbar;
+
+ SendMessageW(hwndRebar, RB_INSERTBANDW, -1, (LPARAM)&bandinf);
+
hwndAddress = CreateWindowExW(0, WC_COMBOBOXEXW, NULL, WS_BORDER|WS_CHILD|WS_VISIBLE|CBS_DROPDOWN, 0, 0, 100,20,hwndRebar, (HMENU)IDC_BROWSE_ADDRESSBAR, shdocvw_hinstance, NULL);
- bandinf.fMask = RBBIM_STYLE | RBBIM_CHILD | RBBIM_CHILDSIZE | RBBIM_SIZE | RBBIM_TEXT;
- bandinf.fStyle = RBBS_CHILDEDGE | RBBS_GRIPPERALWAYS;
+ bandinf.fMask |= RBBIM_TEXT;
+ bandinf.fStyle = RBBS_CHILDEDGE | RBBS_BREAK;
bandinf.lpText = addr;
- bandinf.cx = 100;
bandinf.cyMinChild = 20;
bandinf.hwndChild = hwndAddress;
- SendMessageW(hwndRebar, RB_INSERTBANDW, 0, (LPARAM)&bandinf);
+ SendMessageW(hwndRebar, RB_INSERTBANDW, -1, (LPARAM)&bandinf);
}
static LRESULT iewnd_OnCreate(HWND hwnd, LPCREATESTRUCTW lpcs)
diff --git a/dlls/shdocvw/resource.h b/dlls/shdocvw/resource.h
index 898703c..3e497fe 100644
--- a/dlls/shdocvw/resource.h
+++ b/dlls/shdocvw/resource.h
@@ -27,6 +27,7 @@
#define IDC_BROWSE_REBAR 1003
#define IDC_BROWSE_ADDRESSBAR 1004
#define IDC_BROWSE_STATUSBAR 1005
+#define IDC_BROWSE_TOOLBAR 1006
#define ID_BROWSE_NEW_WINDOW 275
#define ID_BROWSE_OPEN 256
@@ -42,3 +43,10 @@
#define ID_BROWSE_GOTOFAV_FIRST 2000
#define ID_BROWSE_GOTOFAV_MAX 65000
+
+#define IDS_TB_BACK 1100
+#define IDS_TB_FORWARD 1101
+#define IDS_TB_STOP 1102
+#define IDS_TB_REFRESH 1103
+#define IDS_TB_HOME 1104
+#define IDS_TB_PRINT 1105
More information about the wine-cvs
mailing list