www.pudn.com > ExpBar_src.zip > MainFrm.cpp
// MainFrm.cpp : Implementierung der Klasse CMainFrame
//
#include "stdafx.h"
#include "ExpBarSample.h"
#include "MainFrm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMainFrame
IMPLEMENT_DYNAMIC(CMainFrame, CFrameWnd)
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_CREATE()
ON_WM_SETFOCUS()
ON_UPDATE_COMMAND_UI(ID_VIEW_EXPLORERBAR, OnUpdateViewExplorerbar)
ON_COMMAND(ID_VIEW_EXPLORERBAR, OnViewExplorerbar)
ON_MESSAGE(CBM_RELAYMSG, OnExpBarRelayMessage)
ON_COMMAND(ID_PINSERT_COL1, OnPinsertCol1)
ON_UPDATE_COMMAND_UI(ID_PINSERT_COL1, OnUpdatePinsertCol1)
ON_COMMAND(ID_PINSERT_COL2, OnPinsertCol2)
ON_UPDATE_COMMAND_UI(ID_PINSERT_COL2, OnUpdatePinsertCol2)
ON_COMMAND(ID_PINSERT_COL3, OnPinsertCol3)
ON_UPDATE_COMMAND_UI(ID_PINSERT_COL3, OnUpdatePinsertCol3)
ON_COMMAND(ID_PINSERT_EXP1, OnPinsertExp1)
ON_UPDATE_COMMAND_UI(ID_PINSERT_EXP1, OnUpdatePinsertExp1)
ON_COMMAND(ID_PINSERT_EXP2, OnPinsertExp2)
ON_UPDATE_COMMAND_UI(ID_PINSERT_EXP2, OnUpdatePinsertExp2)
ON_COMMAND(ID_PINSERT_EXP3, OnPinsertExp3)
ON_UPDATE_COMMAND_UI(ID_PINSERT_EXP3, OnUpdatePinsertExp3)
ON_COMMAND(ID_REMOVE_PANE1, OnRemovePane1)
ON_UPDATE_COMMAND_UI(ID_REMOVE_PANE1, OnUpdateRemovePane1)
ON_COMMAND(ID_REMOVE_PANE2, OnRemovePane2)
ON_UPDATE_COMMAND_UI(ID_REMOVE_PANE2, OnUpdateRemovePane2)
ON_COMMAND(ID_REMOVE_PANE3, OnRemovePane3)
ON_UPDATE_COMMAND_UI(ID_REMOVE_PANE3, OnUpdateRemovePane3)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
static UINT indicators[] =
{
ID_SEPARATOR, // Statusleistenanzeige
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
};
/////////////////////////////////////////////////////////////////////////////
// CMainFrame Konstruktion/Zerstörung
CMainFrame::CMainFrame()
{
}
CMainFrame::~CMainFrame()
{
}
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
// create a view to occupy the client area of the frame
if (!m_wndView.Create(NULL, NULL, AFX_WS_DEFAULT_VIEW,
CRect(0, 0, 0, 0), this, AFX_IDW_PANE_FIRST, NULL))
{
TRACE0("Failed to create view window\n");
return -1;
}
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Symbolleiste konnte nicht erstellt werden\n");
return -1; // Fehler bei Erstellung
}
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Statusleiste konnte nicht erstellt werden\n");
return -1; // Fehler bei Erstellung
}
m_bPaneVisible[0] = m_bPaneVisible[1] = m_bPaneVisible[2] = FALSE;
m_uProgress = 0L;
if (!m_wndExpBar.Create(_T("Explorer Bar"), this, 123, CBRS_LEFT|CBRS_SIZE_DYNAMIC))
// if (!m_wndExpBar.Create(_T("Explorer Bar"), this, 123, CBRS_RIGHT|CBRS_SIZE_DYNAMIC))
{
TRACE0("Failed to create explorer bar\n");
return -1; // fail to create
}
m_wndExpBar.EnableDocking(CBRS_ALIGN_LEFT|CBRS_ALIGN_RIGHT);
m_hBigIcon = CreateImageList(AfxGetApp()->m_hInstance,IDB_FOLDER,
48,RGB(0xFF,0x00,0xFF),&m_uNumIcons,NULL,NULL,NULL);
m_hTaskLinkIcons[1] = CreateImageList(AfxGetApp()->m_hInstance,IDB_IMAGELIST,
16,RGB(123,124,125),&m_uNumIcons,NULL,&m_hTaskLinkIcons[2],
&m_hTaskLinkIcons[0]);
EnableDocking(CBRS_ALIGN_ANY);
#ifdef _SCB_REPLACE_MINIFRAME
m_pFloatingFrameClass = RUNTIME_CLASS(CSCBMiniDockFrameWnd);
#endif
DockControlBar(&m_wndToolBar);
DockControlBar(&m_wndExpBar);
return 0;
}
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
cs.dwExStyle &= ~WS_EX_CLIENTEDGE;
cs.lpszClass = AfxRegisterWndClass(0);
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CMainFrame Diagnose
#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
CFrameWnd::AssertValid();
}
void CMainFrame::Dump(CDumpContext& dc) const
{
CFrameWnd::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMainFrame Nachrichten-Handler
void CMainFrame::OnSetFocus(CWnd* pOldWnd)
{
// Fokus an das Ansichtfenster weitergeben
m_wndView.SetFocus();
}
BOOL CMainFrame::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)
{
// Ansichtfenster erhält ersten Eindruck vom Befehl
if (m_wndView.OnCmdMsg(nID, nCode, pExtra, pHandlerInfo))
return TRUE;
// andernfalls die Standardbehandlung durchführen
return CFrameWnd::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
}
void CMainFrame::OnUpdateViewExplorerbar(CCmdUI* pCmdUI)
{
pCmdUI->Enable();
pCmdUI->SetCheck(m_wndExpBar.IsVisible());
}
void CMainFrame::OnViewExplorerbar()
{
BOOL bShow = m_wndExpBar.IsVisible();
ShowControlBar(&m_wndExpBar, !bShow, FALSE);
}
LRESULT CMainFrame::OnExpBarRelayMessage ( WPARAM wParam, LPARAM lParam )
{
PRELAYMSG pRM;
if ((wParam==sizeof(RELAYMSG)) && (lParam))
{
pRM = (PRELAYMSG)lParam;
#ifdef _DEBUG
TCHAR szString[256];
wsprintf(szString,"RELAY(id=%08lX): hwnd=%08lX, msg=%08lX, wParam=%08lX, lParam=%08lX\r\n",
pRM->uPaneId,pRM->hwndDlg,pRM->message,pRM->wParam,pRM->lParam);
OutputDebugString(szString);
#endif
if (pRM->message==WM_NOTIFY)
{
LPNMTTDISPINFO lpnmtdi = (LPNMTTDISPINFO) pRM->lParam;
if (lpnmtdi->hdr.code==CHN_GETDISPINFO)
{
wsprintf(lpnmtdi->szText,_T("pane=%lu: tooltip text for colheader %lu"),pRM->uPaneId,lpnmtdi->hdr.idFrom);
return TRUE;
}
else
if (lpnmtdi->hdr.code==TLN_GETDISPINFO)
{
wsprintf(lpnmtdi->szText,_T("pane=%lu: tooltip text for tasklink %lu"),pRM->uPaneId,lpnmtdi->hdr.idFrom);
return TRUE;
}
return FALSE;
}
switch(pRM->uPaneId)
{
case IDD_PANEDLG1:
switch(pRM->message)
{
case WM_INITDIALOG:
m_wndExpBar.ThreadSendDlgItemMessage(pRM->hwndDlg,ID_APP_ABOUT,
TLM_SETIMAGES,14,(LPARAM)m_hTaskLinkIcons);
m_wndExpBar.ThreadSendDlgItemMessage(pRM->hwndDlg,IDC_CUSTOM2,
TLM_SETIMAGES,15,(LPARAM)m_hTaskLinkIcons);
m_wndExpBar.ThreadSendDlgItemMessage(pRM->hwndDlg,IDC_CUSTOM3,
TLM_SETIMAGES,16,(LPARAM)m_hTaskLinkIcons);
return TRUE;
case WM_COMMAND:
SendMessage(pRM->message,pRM->wParam,pRM->lParam);
return TRUE;
default:
break;
}
break;
case IDD_PANEDLG2:
break;
case IDD_PANEDLG3:
switch(pRM->message)
{
case WM_INITDIALOG:
m_wndExpBar.ThreadSendDlgItemMessage(pRM->hwndDlg,IDC_COMBO1,
CB_ADDSTRING,0,(LPARAM)_T("Combobox Item 1"));
m_wndExpBar.ThreadSendDlgItemMessage(pRM->hwndDlg,IDC_COMBO1,
CB_ADDSTRING,0,(LPARAM)_T("Combobox Item 2"));
m_wndExpBar.ThreadSendDlgItemMessage(pRM->hwndDlg,IDC_COMBO1,
CB_ADDSTRING,0,(LPARAM)_T("Combobox Item 3"));
m_wndExpBar.CheckRadioButton(pRM->hwndDlg,IDC_CUSTOM6,IDC_CUSTOM8,IDC_CUSTOM6);
m_wndExpBar.ThreadSendDlgItemMessage(pRM->hwndDlg,IDC_PROGRESS1,
PBM_SETRANGE32,0,10);
::SetTimer(pRM->hwndDlg,1,500,NULL);
return TRUE;
case WM_DESTROY:
::KillTimer(pRM->hwndDlg,1);
return FALSE;
case WM_TIMER:
m_uProgress++;
if (m_uProgress==11)
m_uProgress=0;
m_wndExpBar.ThreadSendDlgItemMessage(pRM->hwndDlg,IDC_PROGRESS1,
PBM_SETPOS,m_uProgress,0);
return TRUE;
case WM_COMMAND:
if (HIWORD(pRM->wParam)==BN_CLICKED)
switch(LOWORD(pRM->wParam))
{
case IDC_CUSTOM6:
m_wndExpBar.CheckRadioButton(pRM->hwndDlg,IDC_CUSTOM6,IDC_CUSTOM8,IDC_CUSTOM6);
break;
case IDC_CUSTOM7:
m_wndExpBar.CheckRadioButton(pRM->hwndDlg,IDC_CUSTOM6,IDC_CUSTOM8,IDC_CUSTOM7);
break;
case IDC_CUSTOM8:
m_wndExpBar.CheckRadioButton(pRM->hwndDlg,IDC_CUSTOM6,IDC_CUSTOM8,IDC_CUSTOM8);
break;
default:
break;
}
SendMessage(pRM->message,pRM->wParam,pRM->lParam);
return TRUE;
default:
break;
}
break;
default:
break;
}
}
return FALSE;
}
void CMainFrame::OnPinsertCol1()
{
if (m_bPaneVisible[0]) return;
m_bPaneVisible[0] = TRUE;
m_wndExpBar.AddPane(IDD_PANEDLG1,_T("Pane #1 (fade effect)"),
CHS_FOCUSRECT|CHS_NOSETFOCUSONCLICK|CHS_TOOLTIP|
CHS_PLAYSOUND|CHS_ANIMATEFADE,MAKEINTRESOURCE(IDD_PANEDLG1),this);
}
void CMainFrame::OnUpdatePinsertCol1(CCmdUI* pCmdUI)
{
pCmdUI->Enable(!m_bPaneVisible[0]);
}
void CMainFrame::OnPinsertCol2()
{
if (m_bPaneVisible[1]) return;
m_bPaneVisible[1] = TRUE;
m_wndExpBar.AddPane(IDD_PANEDLG2,_T("Pane #2 (no effect)"),
CHS_FOCUSRECT|CHS_NOSETFOCUSONCLICK|CHS_TOOLTIP|
CHS_PLAYSOUND|CHS_SPECIALGROUP,MAKEINTRESOURCE(IDD_PANEDLG2),this,
m_hBigIcon,0,-1);
}
void CMainFrame::OnUpdatePinsertCol2(CCmdUI* pCmdUI)
{
pCmdUI->Enable(!m_bPaneVisible[1]);
}
void CMainFrame::OnPinsertCol3()
{
if (m_bPaneVisible[2]) return;
m_bPaneVisible[2] = TRUE;
m_wndExpBar.AddPane(IDD_PANEDLG3,_T("Pane #3 (roll effect)"),
CHS_FOCUSRECT|CHS_NOSETFOCUSONCLICK|CHS_TOOLTIP|
CHS_PLAYSOUND|CHS_ANIMATEROLL,MAKEINTRESOURCE(IDD_PANEDLG3),this);
}
void CMainFrame::OnUpdatePinsertCol3(CCmdUI* pCmdUI)
{
pCmdUI->Enable(!m_bPaneVisible[2]);
}
void CMainFrame::OnPinsertExp1()
{
if (m_bPaneVisible[0]) return;
m_bPaneVisible[0] = TRUE;
m_wndExpBar.AddPane(IDD_PANEDLG1,_T("Pane #1 (fade effect)"),
CHS_FOCUSRECT|CHS_NOSETFOCUSONCLICK|CHS_TOOLTIP|CHS_CREATEEXPANDED|
CHS_PLAYSOUND|CHS_ANIMATEFADE,MAKEINTRESOURCE(IDD_PANEDLG1),this);
}
void CMainFrame::OnUpdatePinsertExp1(CCmdUI* pCmdUI)
{
pCmdUI->Enable(!m_bPaneVisible[0]);
}
void CMainFrame::OnPinsertExp2()
{
if (m_bPaneVisible[1]) return;
m_bPaneVisible[1] = TRUE;
m_wndExpBar.AddPane(IDD_PANEDLG2,_T("Pane #2 (no effect)"),
CHS_FOCUSRECT|CHS_NOSETFOCUSONCLICK|CHS_TOOLTIP|CHS_CREATEEXPANDED|
CHS_PLAYSOUND|CHS_SPECIALGROUP,MAKEINTRESOURCE(IDD_PANEDLG2),this,
m_hBigIcon,0,-1);
}
void CMainFrame::OnUpdatePinsertExp2(CCmdUI* pCmdUI)
{
pCmdUI->Enable(!m_bPaneVisible[1]);
}
void CMainFrame::OnPinsertExp3()
{
if (m_bPaneVisible[2]) return;
m_bPaneVisible[2] = TRUE;
m_wndExpBar.AddPane(IDD_PANEDLG3,_T("Pane #3 (roll effect)"),
CHS_FOCUSRECT|CHS_NOSETFOCUSONCLICK|CHS_TOOLTIP|CHS_CREATEEXPANDED|
CHS_PLAYSOUND|CHS_ANIMATEROLL,MAKEINTRESOURCE(IDD_PANEDLG3),this);
}
void CMainFrame::OnUpdatePinsertExp3(CCmdUI* pCmdUI)
{
pCmdUI->Enable(!m_bPaneVisible[2]);
}
void CMainFrame::OnRemovePane1()
{
if (!m_bPaneVisible[0]) return;
m_bPaneVisible[0] = FALSE;
m_wndExpBar.DelPane(IDD_PANEDLG1);
}
void CMainFrame::OnUpdateRemovePane1(CCmdUI* pCmdUI)
{
pCmdUI->Enable(m_bPaneVisible[0]);
}
void CMainFrame::OnRemovePane2()
{
if (!m_bPaneVisible[1]) return;
m_bPaneVisible[1] = FALSE;
m_wndExpBar.DelPane(IDD_PANEDLG2);
}
void CMainFrame::OnUpdateRemovePane2(CCmdUI* pCmdUI)
{
pCmdUI->Enable(m_bPaneVisible[1]);
}
void CMainFrame::OnRemovePane3()
{
if (!m_bPaneVisible[2]) return;
m_bPaneVisible[2] = FALSE;
m_wndExpBar.DelPane(IDD_PANEDLG3);
}
void CMainFrame::OnUpdateRemovePane3(CCmdUI* pCmdUI)
{
pCmdUI->Enable(m_bPaneVisible[2]);
}