#include <mainframe.h>


Public Types | |
| typedef MainFrameBase | super |
Public Member Functions | |
| MDIMainFrame (HWND hwnd) | |
| ChildWindow * | CreateChild (LPCTSTR path=NULL, int mode=OWM_EXPLORE|OWM_DETAILS) |
| ChildWindow * | CreateChild (LPCITEMIDLIST pidl, int mode=OWM_EXPLORE|OWM_DETAILS|OWM_PIDL) |
Static Public Member Functions | |
| static HWND | Create () |
| static HWND | Create (LPCTSTR path, int mode=OWM_EXPLORE|OWM_DETAILS) |
| static HWND | Create (LPCITEMIDLIST pidl, int mode=OWM_EXPLORE|OWM_DETAILS|OWM_PIDL) |
Protected Member Functions | |
| LRESULT | WndProc (UINT nmsg, WPARAM wparam, LPARAM lparam) |
| int | Command (int id, int code) |
| virtual BOOL | TranslateMsg (MSG *pmsg) |
| bool | activate_drive_window (LPCTSTR path) |
| bool | activate_child_window (LPCTSTR filesys) |
| virtual void | resize_frame (int cx, int cy) |
| virtual void | frame_get_clientspace (PRECT prect) |
| virtual bool | go_to (LPCTSTR url, bool new_window) |
Protected Attributes | |
| HWND | _hmdiclient |
| WindowHandle | _hextrabar |
| WindowHandle | _hdrivebar |
| TCHAR | _drives [BUFFER_LEN] |
Definition at line 98 of file mainframe.h.
| typedef MainFrameBase MDIMainFrame::super |
Reimplemented from MainFrameBase.
Definition at line 100 of file mainframe.h.
| MDIMainFrame::MDIMainFrame | ( | HWND | hwnd ) |
Definition at line 717 of file mainframe.cpp.
References _drives, _hdrivebar, _hextrabar, ExplorerGlobals::_hInstance, _hmdiclient, MenuInfo::_hMenuView, MainFrameBase::_hMenuWindow, MainFrameBase::_htoolbar, MainFrameBase::_hwndrebar, MainFrameBase::_menu_info, BUFFER_LEN, g_Globals, ID_DRIVE_DESKTOP, ID_DRIVE_FAT, ID_DRIVE_FIRST, ID_DRIVE_NTOBJ_NS, ID_DRIVE_REGISTRY, ID_DRIVE_SHELL_NS, ID_DRIVE_UNIX_FS, ID_VIEW_DRIVE_BAR, ID_VIEW_EXTRA_BAR, ID_WEB_WINDOW, ID_WINDOW_CASCADE, ID_WINDOW_NEW, ID_WINDOW_TILE_HORZ, ID_WINDOW_TILE_VERT, IDB_DRIVEBAR, IDW_DRIVEBAR, IDW_EXTRABAR, IDW_FIRST_CHILD, RBBS_HIDETITLE, TEXT, and W_VER_NT.
: super(hwnd) { TBBUTTON mdiBtns[] = { {0, 0, 0, BTNS_SEP, {0, 0}, 0, 0}, {0, ID_WINDOW_NEW, TBSTATE_ENABLED, BTNS_BUTTON, {0, 0}, 0, 0}, {1, ID_WINDOW_CASCADE, TBSTATE_ENABLED, BTNS_BUTTON, {0, 0}, 0, 0}, {2, ID_WINDOW_TILE_HORZ, TBSTATE_ENABLED, BTNS_BUTTON, {0, 0}, 0, 0}, {3, ID_WINDOW_TILE_VERT, TBSTATE_ENABLED, BTNS_BUTTON, {0, 0}, 0, 0} }; SendMessage(_htoolbar, TB_ADDBUTTONS, sizeof(mdiBtns)/sizeof(TBBUTTON), (LPARAM)&mdiBtns); CLIENTCREATESTRUCT ccs; ccs.hWindowMenu = _hMenuWindow; ccs.idFirstChild = IDW_FIRST_CHILD; _hmdiclient = CreateWindowEx(WS_EX_CLIENTEDGE|WS_EX_NOPARENTNOTIFY, TEXT("MDICLIENT"), NULL, WS_CHILD|WS_CLIPCHILDREN|WS_VSCROLL|WS_HSCROLL|WS_VISIBLE|WS_BORDER, 0, 0, 0, 0, hwnd, 0, g_Globals._hInstance, &ccs); TBBUTTON extraBtns = {0, 0, TBSTATE_ENABLED, BTNS_SEP, {0, 0}, 0, 0}; #ifndef _NO_REBAR _hextrabar = CreateToolbarEx(hwnd, CCS_NOPARENTALIGN|CCS_NORESIZE|CCS_NODIVIDER| WS_CHILD|TBSTYLE_FLAT|WS_VISIBLE|CCS_NOMOVEY|TBSTYLE_LIST, IDW_EXTRABAR, 2, g_Globals._hInstance, IDB_DRIVEBAR, NULL, 0, 16, 15, 16, 15, sizeof(TBBUTTON)); #else _hextrabar = CreateToolbarEx(hwnd, WS_CHILD|WS_VISIBLE|CCS_NOMOVEY|TBSTYLE_LIST,CCS_NODIVIDER| IDW_EXTRABAR, 2, g_Globals._hInstance, IDB_DRIVEBAR, &extraBtns, 1, 16, 13, 16, 13, sizeof(TBBUTTON)); #endif CheckMenuItem(_menu_info._hMenuView, ID_VIEW_EXTRA_BAR, MF_BYCOMMAND|MF_CHECKED); extraBtns.fsStyle = BTNS_BUTTON; #ifdef __WINE__ // insert unix file system button extraBtns.iString = SendMessage(_hextrabar, TB_ADDSTRING, 0, (LPARAM)TEXT("/\0")); extraBtns.idCommand = ID_DRIVE_UNIX_FS; SendMessage(_hextrabar, TB_INSERTBUTTON, INT_MAX, (LPARAM)&extraBtns); #endif // insert explorer window button extraBtns.iString = SendMessage(_hextrabar, TB_ADDSTRING, 0, (LPARAM)TEXT("Explore\0")); extraBtns.idCommand = ID_DRIVE_DESKTOP; SendMessage(_hextrabar, TB_INSERTBUTTON, INT_MAX, (LPARAM)&extraBtns); // insert shell namespace button extraBtns.iString = SendMessage(_hextrabar, TB_ADDSTRING, 0, (LPARAM)TEXT("Shell\0")); extraBtns.idCommand = ID_DRIVE_SHELL_NS; extraBtns.iBitmap = 6; SendMessage(_hextrabar, TB_INSERTBUTTON, INT_MAX, (LPARAM)&extraBtns); // insert web control button extraBtns.iString = SendMessage(_hextrabar, TB_ADDSTRING, 0, (LPARAM)TEXT("Web\0")); extraBtns.idCommand = ID_WEB_WINDOW; extraBtns.iBitmap = 7; SendMessage(_hextrabar, TB_INSERTBUTTON, INT_MAX, (LPARAM)&extraBtns); if ((HIWORD(GetVersion())>>14) == W_VER_NT) { // insert NT object namespace button extraBtns.iString = SendMessage(_hextrabar, TB_ADDSTRING, 0, (LPARAM)TEXT("NT Obj\0")); extraBtns.idCommand = ID_DRIVE_NTOBJ_NS; extraBtns.iBitmap = 8; SendMessage(_hextrabar, TB_INSERTBUTTON, INT_MAX, (LPARAM)&extraBtns); } #ifndef __REACTOS__ // don't insert reg button for ROS. Regedit should be used. // insert Registry button extraBtns.iString = SendMessage(_hextrabar, TB_ADDSTRING, 0, (LPARAM)TEXT("Reg.\0")); extraBtns.idCommand = ID_DRIVE_REGISTRY; extraBtns.iBitmap = 9; SendMessage(_hextrabar, TB_INSERTBUTTON, INT_MAX, (LPARAM)&extraBtns); #endif #ifdef _DEBUG // insert FAT direct file system access button extraBtns.iString = SendMessage(_hextrabar, TB_ADDSTRING, 0, (LPARAM)TEXT("FAT\0")); extraBtns.idCommand = ID_DRIVE_FAT; extraBtns.iBitmap = 10; SendMessage(_hextrabar, TB_INSERTBUTTON, INT_MAX, (LPARAM)&extraBtns); #endif TBBUTTON drivebarBtn = {0, 0, TBSTATE_ENABLED, BTNS_SEP, {0, 0}, 0, 0}; #ifndef _NO_WIN_FS PTSTR p; #ifndef _NO_REBAR _hdrivebar = CreateToolbarEx(hwnd, CCS_NOPARENTALIGN|CCS_NORESIZE|CCS_NODIVIDER| WS_CHILD|WS_VISIBLE|TBSTYLE_FLAT|CCS_NOMOVEY|TBSTYLE_LIST, IDW_DRIVEBAR, 2, g_Globals._hInstance, IDB_DRIVEBAR, NULL, 0, 16, 15, 16, 15, sizeof(TBBUTTON)); #else _hdrivebar = CreateToolbarEx(hwnd, WS_CHILD|WS_VISIBLE|CCS_NOMOVEY|TBSTYLE_LIST|CCS_NODIVIDER, IDW_DRIVEBAR, 2, g_Globals._hInstance, IDB_DRIVEBAR, &drivebarBtn, 1, 16, 13, 16, 13, sizeof(TBBUTTON)); #endif #endif CheckMenuItem(_menu_info._hMenuView, ID_VIEW_DRIVE_BAR, MF_BYCOMMAND|MF_CHECKED); #ifndef _NO_WIN_FS GetLogicalDriveStrings(BUFFER_LEN, _drives); // register windows drive root strings SendMessage(_hdrivebar, TB_ADDSTRING, 0, (LPARAM)_drives); drivebarBtn.fsStyle = BTNS_BUTTON; drivebarBtn.idCommand = ID_DRIVE_FIRST; for(p=_drives; *p; ) { switch(GetDriveType(p)) { case DRIVE_REMOVABLE: drivebarBtn.iBitmap = 1; break; case DRIVE_CDROM: drivebarBtn.iBitmap = 3; break; case DRIVE_REMOTE: drivebarBtn.iBitmap = 4; break; case DRIVE_RAMDISK: drivebarBtn.iBitmap = 5; break; default:/*DRIVE_FIXED*/ drivebarBtn.iBitmap = 2; } SendMessage(_hdrivebar, TB_INSERTBUTTON, INT_MAX, (LPARAM)&drivebarBtn); ++drivebarBtn.idCommand; ++drivebarBtn.iString; while(*p++); } #endif #ifndef _NO_REBAR int btn_hgt = HIWORD(SendMessage(_htoolbar, TB_GETBUTTONSIZE, 0, 0)); REBARBANDINFO rbBand; rbBand.cbSize = sizeof(REBARBANDINFO); rbBand.fMask = RBBIM_TEXT|RBBIM_STYLE|RBBIM_CHILD|RBBIM_CHILDSIZE|RBBIM_SIZE; #ifndef RBBS_HIDETITLE // missing in MinGW headers as of 25.02.2004 #define RBBS_HIDETITLE 0x400 #endif rbBand.fStyle = RBBS_CHILDEDGE|RBBS_GRIPPERALWAYS|RBBS_HIDETITLE; TCHAR ExtrasBand[] = _T("Extras"); rbBand.lpText = ExtrasBand; rbBand.hwndChild = _hextrabar; rbBand.cxMinChild = 0; rbBand.cyMinChild = btn_hgt; rbBand.cx = 284; SendMessage(_hwndrebar, RB_INSERTBAND, (WPARAM)-1, (LPARAM)&rbBand); #ifndef _NO_WIN_FS rbBand.fStyle |= RBBS_BREAK; TCHAR DrivesBand[] = _T("Drives"); rbBand.lpText = DrivesBand; rbBand.hwndChild = _hdrivebar; rbBand.cxMinChild = 0; rbBand.cyMinChild = btn_hgt; rbBand.cx = 400; SendMessage(_hwndrebar, RB_INSERTBAND, (WPARAM)-1, (LPARAM)&rbBand); #endif #endif }
| bool MDIMainFrame::activate_child_window | ( | LPCTSTR | filesys ) | [protected] |
Definition at line 1310 of file mainframe.cpp.
References Root::_fs, _hmdiclient, ShellBrowser::get_root(), FileChildWindow::get_root(), HWND, PM_GET_FILEWND_PTR, and PM_GET_SHELLBROWSER_PTR.
Referenced by Command().
{
HWND child_wnd;
// search for a already open window of the given file system name
for(child_wnd=GetNextWindow(_hmdiclient,GW_CHILD); child_wnd; child_wnd=GetNextWindow(child_wnd, GW_HWNDNEXT)) {
FileChildWindow* child = (FileChildWindow*) SendMessage(child_wnd, PM_GET_FILEWND_PTR, 0, 0);
if (child) {
if (!lstrcmpi(child->get_root()._fs, filesys)) {
SendMessage(_hmdiclient, WM_MDIACTIVATE, (WPARAM)child_wnd, 0);
if (IsMinimized(child_wnd))
ShowWindow(child_wnd, SW_SHOWNORMAL);
return true;
}
} else {
ShellBrowser* shell_child = (ShellBrowser*) SendMessage(child_wnd, PM_GET_SHELLBROWSER_PTR, 0, 0);
if (shell_child) {
if (!lstrcmpi(shell_child->get_root()._fs, filesys)) {
SendMessage(_hmdiclient, WM_MDIACTIVATE, (WPARAM)child_wnd, 0);
if (IsMinimized(child_wnd))
ShowWindow(child_wnd, SW_SHOWNORMAL);
return true;
}
}
}
}
return false;
}


| bool MDIMainFrame::activate_drive_window | ( | LPCTSTR | path ) | [protected] |
Definition at line 1282 of file mainframe.cpp.
References _hmdiclient, _MAX_DRIVE, Root::_path, _tsplitpath_s, COUNTOF, FileChildWindow::get_root(), HWND, and PM_GET_FILEWND_PTR.
Referenced by Command().
{
TCHAR drv1[_MAX_DRIVE], drv2[_MAX_DRIVE];
HWND child_wnd;
_tsplitpath_s(path, drv1, COUNTOF(drv1), NULL, 0, NULL, 0, NULL, 0);
// search for a already open window for the same drive
for(child_wnd=GetNextWindow(_hmdiclient,GW_CHILD); child_wnd; child_wnd=GetNextWindow(child_wnd, GW_HWNDNEXT)) {
FileChildWindow* child = (FileChildWindow*) SendMessage(child_wnd, PM_GET_FILEWND_PTR, 0, 0);
if (child) {
_tsplitpath_s(child->get_root()._path, drv2, COUNTOF(drv2), NULL, 0, NULL, 0, NULL, 0);
if (!lstrcmpi(drv2, drv1)) {
SendMessage(_hmdiclient, WM_MDIACTIVATE, (WPARAM)child_wnd, 0);
if (IsMinimized(child_wnd))
ShowWindow(child_wnd, SW_SHOWNORMAL);
return true;
}
}
}
return false;
}


| int MDIMainFrame::Command | ( | int | id, |
| int | code | ||
| ) | [protected, virtual] |
Reimplemented from MainFrameBase.
Definition at line 1028 of file mainframe.cpp.
References _drives, MainFrameBase::_haddressedit, _hdrivebar, _hextrabar, _hmdiclient, WindowHandle::_hwnd, _MAX_DRIVE, _tsplitpath_s, activate_child_window(), activate_drive_window(), BUFFER_LEN, MainFrameBase::Command(), CONTEXT, COUNTOF, Create(), MDIShellBrowserChild::create(), FileChildWindow::create(), create_webchildwindow(), display_error(), MainFrameBase::ExecuteCommandbar(), HWND, ID_DRIVE_DESKTOP, ID_DRIVE_FAT, ID_DRIVE_FIRST, ID_DRIVE_NTOBJ_NS, ID_DRIVE_REGISTRY, ID_DRIVE_SHELL_NS, ID_DRIVE_UNIX_FS, ID_EXPLORER_FAQ, ID_VIEW_DRIVE_BAR, ID_VIEW_EXTRA_BAR, ID_VIEW_SDI, ID_WEB_WINDOW, ID_WINDOW_ARRANGE, ID_WINDOW_CASCADE, ID_WINDOW_NEW, ID_WINDOW_TILE_HORZ, ID_WINDOW_TILE_VERT, IDW_COMMANDBAR, PM_DISPATCH_COMMAND, TEXT, and MainFrameBase::toggle_child().
{
CONTEXT("MDIMainFrame::Command()");
HWND hwndClient = (HWND) SendMessage(_hmdiclient, WM_MDIGETACTIVE, 0, 0);
if (hwndClient)
if (SendMessage(hwndClient, PM_DISPATCH_COMMAND, MAKELONG(id,code), 0))
return 0;
#ifndef _NO_WIN_FS
if (id>=ID_DRIVE_FIRST && id<=ID_DRIVE_FIRST+0xFF) {
TCHAR drv[_MAX_DRIVE], path[MAX_PATH];
LPCTSTR root = _drives;
for(int i=id-ID_DRIVE_FIRST; i--; root++)
while(*root)
++root;
if (activate_drive_window(root))
return 0;
_tsplitpath_s(root, drv, COUNTOF(drv), NULL, 0, NULL, 0, NULL, 0);
if (!SetCurrentDirectory(drv)) {
display_error(_hwnd, GetLastError());
return 0;
}
GetCurrentDirectory(MAX_PATH, path); ///@todo store last directory per drive
FileChildWindow::create(FileChildWndInfo(_hmdiclient, path));
return 1;
}
#endif
switch(id) {
case ID_WINDOW_NEW: {
TCHAR path[MAX_PATH];
GetCurrentDirectory(MAX_PATH, path);
FileChildWindow::create(FileChildWndInfo(_hmdiclient, path));
break;}
case ID_WINDOW_CASCADE:
SendMessage(_hmdiclient, WM_MDICASCADE, 0, 0);
break;
case ID_WINDOW_TILE_HORZ:
SendMessage(_hmdiclient, WM_MDITILE, MDITILE_HORIZONTAL, 0);
break;
case ID_WINDOW_TILE_VERT:
SendMessage(_hmdiclient, WM_MDITILE, MDITILE_VERTICAL, 0);
break;
case ID_WINDOW_ARRANGE:
SendMessage(_hmdiclient, WM_MDIICONARRANGE, 0, 0);
break;
case ID_VIEW_EXTRA_BAR:
toggle_child(_hwnd, id, _hextrabar, 1);
break;
#ifndef _NO_WIN_FS
case ID_VIEW_DRIVE_BAR:
toggle_child(_hwnd, id, _hdrivebar, 2);
break;
#endif
#ifdef __WINE__
case ID_DRIVE_UNIX_FS: {
TCHAR path[MAX_PATH];
FileChildWindow* child;
getcwd(path, COUNTOF(path));
if (activate_child_window(TEXT("unixfs")))
break;
FileChildWindow::create(_hmdiclient, FileChildWndInfo(path));
break;}
#endif
case ID_DRIVE_DESKTOP: {
TCHAR path[MAX_PATH];
if (activate_child_window(TEXT("Desktop")))
break;
GetCurrentDirectory(MAX_PATH, path);
MDIShellBrowserChild::create(ShellChildWndInfo(_hmdiclient, path, DesktopFolderPath()));
break;}
case ID_DRIVE_SHELL_NS: {
TCHAR path[MAX_PATH];
GetCurrentDirectory(MAX_PATH, path);
if (activate_child_window(TEXT("Shell")))
break;
FileChildWindow::create(ShellChildWndInfo(_hmdiclient, path, DesktopFolderPath()));
break;}
case ID_DRIVE_NTOBJ_NS: {
if (activate_child_window(TEXT("NTOBJ")))
break;
FileChildWindow::create(NtObjChildWndInfo(_hmdiclient, TEXT("\\")));
break;}
case ID_DRIVE_REGISTRY: {
if (activate_child_window(TEXT("Registry")))
break;
FileChildWindow::create(RegistryChildWndInfo(_hmdiclient, TEXT("\\")));
break;}
case ID_DRIVE_FAT: {
///@todo prompt for image file
if (activate_child_window(TEXT("FAT")))
break;
FileChildWindow::create(FATChildWndInfo(_hmdiclient, TEXT("FAT Image"))); //@@
break;}
case ID_WEB_WINDOW:
#ifdef _DEBUG
create_webchildwindow(WebChildWndInfo(_hmdiclient, TEXT("http://localhost")));
#else
create_webchildwindow(WebChildWndInfo(_hmdiclient, TEXT("http://www.reactos.org")));
#endif
break;
case ID_EXPLORER_FAQ:
create_webchildwindow(WebChildWndInfo(_hmdiclient, TEXT("http://www.foxplanet.de/explorer/")));
break;
case ID_VIEW_SDI:
MainFrameBase::Create(ExplorerCmd());
break;
case IDW_COMMANDBAR:
if (code == 1) {
TCHAR url[BUFFER_LEN];
LPCTSTR dir;
if (GetWindowText(_haddressedit, url, BUFFER_LEN))
dir = url;
else
dir = NULL;
ExecuteCommandbar(dir);
}
break;
///@todo There are even more menu items!
default:
if (super::Command(id, code) == 0)
return 0;
else
return DefFrameProc(_hwnd, _hmdiclient, WM_COMMAND, MAKELONG(id,code), 0);
}
return 0;
}

Definition at line 900 of file mainframe.cpp.
References Create(), CreateChild(), GET_WINDOW, and HWND.
{
HWND hFrame = Create();
if (!hFrame)
return 0;
ShowWindow(hFrame, SW_SHOW);
MDIMainFrame* pMainFrame = GET_WINDOW(MDIMainFrame, hFrame);
if (pMainFrame)
pMainFrame->CreateChild(path, mode);
return hFrame;
}

| HWND MDIMainFrame::Create | ( | ) | [static] |
Definition at line 890 of file mainframe.cpp.
References ExplorerGlobals::_hframeClass, ExplorerGlobals::_hInstance, g_Globals, IDM_MDIFRAME, IDS_TITLE, and WINDOW_CREATOR.
Referenced by Command(), and Create().
{
HMENU hMenuFrame = LoadMenu(g_Globals._hInstance, MAKEINTRESOURCE(IDM_MDIFRAME));
return Window::Create(WINDOW_CREATOR(MDIMainFrame), 0,
(LPCTSTR)(int)g_Globals._hframeClass, ResString(IDS_TITLE), WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
0/*hwndDesktop*/, hMenuFrame);
}

| HWND MDIMainFrame::Create | ( | LPCITEMIDLIST | pidl, |
| int | mode = OWM_EXPLORE|OWM_DETAILS|OWM_PIDL |
||
| ) | [static] |
Definition at line 916 of file mainframe.cpp.
References Create(), CreateChild(), GET_WINDOW, and HWND.
{
HWND hFrame = Create();
if (!hFrame)
return 0;
ShowWindow(hFrame, SW_SHOW);
MDIMainFrame* pMainFrame = GET_WINDOW(MDIMainFrame, hFrame);
if (pMainFrame)
pMainFrame->CreateChild(pidl, mode);
return hFrame;
}

| ChildWindow * MDIMainFrame::CreateChild | ( | LPCTSTR | path = NULL, |
| int | mode = OWM_EXPLORE|OWM_DETAILS |
||
| ) |
Definition at line 933 of file mainframe.cpp.
References WindowHandle::_hwnd, and PM_OPEN_WINDOW.
Referenced by SDIMainFrame::Create(), Create(), and go_to().
{
return reinterpret_cast<ChildWindow*>(SendMessage(_hwnd, PM_OPEN_WINDOW, mode, (LPARAM)path));
}

| ChildWindow * MDIMainFrame::CreateChild | ( | LPCITEMIDLIST | pidl, |
| int | mode = OWM_EXPLORE|OWM_DETAILS|OWM_PIDL |
||
| ) |
Definition at line 938 of file mainframe.cpp.
References WindowHandle::_hwnd, OWM_PIDL, and PM_OPEN_WINDOW.
{
return reinterpret_cast<ChildWindow*>(SendMessage(_hwnd, PM_OPEN_WINDOW, mode|OWM_PIDL, (LPARAM)pidl));
}
| void MDIMainFrame::frame_get_clientspace | ( | PRECT | prect ) | [protected, virtual] |
Reimplemented from MainFrameBase.
Definition at line 1202 of file mainframe.cpp.
References _hdrivebar, and MainFrameBase::frame_get_clientspace().
{
super::frame_get_clientspace(prect);
#ifndef _NO_WIN_FS
if (IsWindowVisible(_hdrivebar)) {
ClientRect rt(_hdrivebar);
prect->top += rt.bottom+2;
}
#endif
}

| bool MDIMainFrame::go_to | ( | LPCTSTR | url, |
| bool | new_window | ||
| ) | [protected, virtual] |
Reimplemented from MainFrameBase.
Definition at line 1346 of file mainframe.cpp.
References _hmdiclient, CreateChild(), MainFrameBase::go_to(), HWND, and PM_JUMP_TO_URL.
{
if (!new_window) {
HWND hwndClient = (HWND) SendMessage(_hmdiclient, WM_MDIGETACTIVE, 0, 0);
if (hwndClient)
if (SendMessage(hwndClient, PM_JUMP_TO_URL, 0, (LPARAM)url))
return true;
}
if (CreateChild(url))
return true;
return super::go_to(url, new_window);
}

| void MDIMainFrame::resize_frame | ( | int | cx, |
| int | cy | ||
| ) | [protected, virtual] |
Reimplemented from MainFrameBase.
Definition at line 1214 of file mainframe.cpp.
References MainFrameBase::_haddressedit, MainFrameBase::_hcommandedit, _hdrivebar, _hextrabar, _hmdiclient, MainFrameBase::_hsidebar, MainFrameBase::_hstatusbar, MainFrameBase::_htoolbar, and MainFrameBase::_hwndrebar.
{
if (cy <= 0)
return; // avoid resizing children when receiving RBN_AUTOSIZE while getting minimized
RECT rect = {0, 0, cx, cy};
if (_hwndrebar) {
int height = SendMessage(_hwndrebar, RB_GETBARHEIGHT, 0, 0);
rect.top += height;
rect.top += 5;
} else {
if (IsWindowVisible(_htoolbar)) {
SendMessage(_htoolbar, WM_SIZE, 0, 0);
WindowRect rt(_htoolbar);
rect.top = rt.bottom;
// rect.bottom -= rt.bottom;
}
if (IsWindowVisible(_hextrabar)) {
SendMessage(_hextrabar, WM_SIZE, 0, 0);
WindowRect rt(_hextrabar);
int new_top = --rect.top + rt.bottom;
MoveWindow(_hextrabar, 0, rect.top, rt.right, new_top, TRUE);
rect.top = new_top;
// rect.bottom -= rt.bottom;
}
#ifndef _NO_WIN_FS
if (IsWindowVisible(_hdrivebar)) {
SendMessage(_hdrivebar, WM_SIZE, 0, 0);
WindowRect rt(_hdrivebar);
int new_top = --rect.top + rt.bottom;
MoveWindow(_hdrivebar, 0, rect.top, rt.right, new_top, TRUE);
rect.top = new_top;
// rect.bottom -= rt.bottom;
}
#endif
}
if (IsWindowVisible(_hstatusbar)) {
int parts[] = {300, 500};
SendMessage(_hstatusbar, WM_SIZE, 0, 0);
SendMessage(_hstatusbar, SB_SETPARTS, 2, (LPARAM)&parts);
ClientRect rt(_hstatusbar);
rect.bottom -= rt.bottom;
}
if (IsWindowVisible(_haddressedit) || IsWindowVisible(_hcommandedit)) {
ClientRect rt(_haddressedit);
rect.bottom -= rt.bottom;
int mid = (rect.right-rect.left) / 2; ///@todo use split bar
SetWindowPos(_haddressedit, 0, 0, rect.bottom, mid, rt.bottom, SWP_NOACTIVATE|SWP_NOZORDER);
SetWindowPos(_hcommandedit, 0, mid+1, rect.bottom, rect.right-(mid+1), rt.bottom, SWP_NOACTIVATE|SWP_NOZORDER);
}
if (IsWindowVisible(_hsidebar)) {
WindowRect rt(_hsidebar);
rect.left += rt.right-rt.left;
SetWindowPos(_hsidebar, 0, -1, rect.top-1, rt.right-rt.left, rect.bottom-rect.top+1, SWP_NOACTIVATE|SWP_NOZORDER);
}
MoveWindow(_hmdiclient, rect.left-1, rect.top-1, rect.right-rect.left+1, rect.bottom-rect.top+1, TRUE);
}
| BOOL MDIMainFrame::TranslateMsg | ( | MSG * | pmsg ) | [protected, virtual] |
Reimplemented from MainFrameBase.
Definition at line 944 of file mainframe.cpp.
References _hmdiclient, and MainFrameBase::TranslateMsg().
{
if (_hmdiclient && TranslateMDISysAccel(_hmdiclient, pmsg))
return TRUE;
return super::TranslateMsg(pmsg);
}

| LRESULT MDIMainFrame::WndProc | ( | UINT | nmsg, |
| WPARAM | wparam, | ||
| LPARAM | lparam | ||
| ) | [protected, virtual] |
Reimplemented from MainFrameBase.
Definition at line 952 of file mainframe.cpp.
References _hmdiclient, WindowHandle::_hwnd, FileChildWndInfo::_open_mode, FileChildWndInfo::_pos, ShellChildWndInfo::_root_shell_path, _tcsstr, ShellPath::assign(), CONTEXT, MDIShellBrowserChild::create(), create_webchildwindow(), GET_WINDOW, LOG, OBJ_CONTEXT, OWM_PIDL, OWM_ROOTED, OWM_SEPARATE, PM_OPEN_WINDOW, MainFrameBase::ProcessMessage(), and TEXT.
{
switch(nmsg) {
case PM_OPEN_WINDOW: {
CONTEXT("MDIMainFrame PM_OPEN_WINDOW");
TCHAR buffer[MAX_PATH];
LPCTSTR path;
ShellPath shell_path = DesktopFolderPath();
if (lparam) {
if (wparam & OWM_PIDL) {
// take over PIDL from lparam
shell_path.assign((LPCITEMIDLIST)lparam); // create as "rooted" window
FileSysShellPath fsp(shell_path);
path = fsp;
if (path) {
LOG(FmtString(TEXT("MDIMainFrame PM_OPEN_WINDOW: path=%s"), path));
lstrcpy(buffer, path);
path = buffer;
}
} else {
// take over path from lparam
path = (LPCTSTR)lparam;
shell_path = path; // create as "rooted" window
}
} else {
///@todo read paths and window placements from registry
if (!GetCurrentDirectory(MAX_PATH, buffer))
*buffer = '\0';
path = buffer;
}
if (path && _tcsstr(path, TEXT("://"))) { // "http://...", "ftp://", ...
OBJ_CONTEXT("create WebChild window", path);
return (LRESULT)GET_WINDOW(ChildWindow, create_webchildwindow(WebChildWndInfo(_hmdiclient, path)));
} else {
OBJ_CONTEXT("create ShellChildWndInfo", path);
// Shell Namespace as default view
ShellChildWndInfo create_info(_hmdiclient, path, shell_path);
if (wparam & OWM_ROOTED)
create_info._root_shell_path = shell_path;
else
create_info._root_shell_path = DesktopFolderPath(); //SpecialFolderPath(CSIDL_DRIVES, _hwnd);
create_info._pos.showCmd = wparam&OWM_SEPARATE? SW_SHOWNORMAL: SW_SHOWMAXIMIZED;
create_info._pos.rcNormalPosition.left = CW_USEDEFAULT;
create_info._pos.rcNormalPosition.top = CW_USEDEFAULT;
create_info._pos.rcNormalPosition.right = CW_USEDEFAULT;
create_info._pos.rcNormalPosition.bottom = CW_USEDEFAULT;
create_info._open_mode = wparam;
// FileChildWindow::create(_hmdiclient, create_info);
return (LRESULT)MDIShellBrowserChild::create(create_info);
}
return TRUE;} // success
default: {
LRESULT res;
if (super::ProcessMessage(nmsg, wparam, lparam, &res))
return res;
else
return DefFrameProc(_hwnd, _hmdiclient, nmsg, wparam, lparam);
}
}
return 0;
}

TCHAR MDIMainFrame::_drives[BUFFER_LEN] [protected] |
Definition at line 134 of file mainframe.h.
Referenced by Command(), and MDIMainFrame().
WindowHandle MDIMainFrame::_hdrivebar [protected] |
Definition at line 116 of file mainframe.h.
Referenced by Command(), frame_get_clientspace(), MDIMainFrame(), and resize_frame().
WindowHandle MDIMainFrame::_hextrabar [protected] |
Definition at line 114 of file mainframe.h.
Referenced by Command(), MDIMainFrame(), and resize_frame().
HWND MDIMainFrame::_hmdiclient [protected] |
Definition at line 112 of file mainframe.h.
Referenced by activate_child_window(), activate_drive_window(), Command(), go_to(), MDIMainFrame(), resize_frame(), TranslateMsg(), and WndProc().
|
ROS Explorer Source Code Documentation
generated on 02.01.2013 by
|