📄 mainfrm.cpp
字号:
/////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "Myimgapp.h"
#include "MainFrm.h"
#include "View.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMainFrame
IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_CREATE()
ON_COMMAND(ID_GFX_LARGEICON, OnGfxLargeicon)
ON_UPDATE_COMMAND_UI(ID_GFX_LARGEICON, OnUpdateGfxLargeicon)
ON_COMMAND(ID_GFX_SMALLICON, OnGfxSmallicon)
ON_UPDATE_COMMAND_UI(ID_GFX_SMALLICON, OnUpdateGfxSmallicon)
ON_COMMAND(IDC_MSG_RECIEVED,OnMsgRecieved)
ON_COMMAND(IDC_MSG_SENDED,OnMsgSended)
ON_COMMAND(IDC_TELBOOK, OnTelBook)
ON_COMMAND(IDC_GETALLSIM,OnGetAllSimMsg)
ON_COMMAND(IDC_REFRESH, OnRefreshSel)
ON_COMMAND(IDC_REFRESHALL, OnRefreshAll)
ON_COMMAND(IDC_MSG_DELETED, OnMsgDeleted)
ON_COMMAND(IDC_WRITEMSG,OnWriteMsg)
ON_COMMAND(IDC_SCHOOL_REPORT_CARD, OnSchoolReportCard)
ON_WM_TIMER()
//}}AFX_MSG_MAP
ON_NOTIFY(TBN_DROPDOWN, AFX_IDW_TOOLBAR, OnToolbarDropDown)
ON_WM_GETMINMAXINFO()
ON_WM_CONTEXTMENU()
END_MESSAGE_MAP()
static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
};
/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction
CMainFrame::CMainFrame()
{
// TODO: add member initialization code here
}
CMainFrame::~CMainFrame()
{
}
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
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("Failed to create toolbar\n");
return -1; // fail to create
}
*/
if (!this->CreateExToolBar())
return -1;
if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create status bar\n");
return -1; // fail to create
}
// TODO: Delete these three lines if you don't want the toolbar to
// be dockable
/* m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
CToolBar& tb = m_wndToolBar;
tb.SendMessage(TB_SETEXTENDEDSTYLE, 0, TBSTYLE_EX_DRAWDDARROWS);
// change button style to dropdown
int iButton = tb.SendMessage(TB_COMMANDTOINDEX, ID_FILE_OPEN);
DWORD dwStyle = tb.GetButtonStyle(iButton);
dwStyle |= TBSTYLE_DROPDOWN;
tb.SetButtonStyle(iButton, dwStyle);
DragAcceptFiles(TRUE);
*/
CWnd* pWnd;
pWnd=pWnd->FromHandle(m_wndStatusBar.m_hWnd);
m_test.Create(WS_CHILD|WS_VISIBLE,CRect(460,0,900,20),pWnd,0);
m_test.SetRange(1,100);//设置进度条范围
m_test.SetStep(10);
timer=SetTimer(1,500,NULL);
return 0;
}
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
cs.lpszClass = AfxRegisterWndClass(
0, // no redraw
NULL, // no cursor (use default)
NULL, // no background brush
AfxGetApp()->LoadIcon(IDR_MAINFRAME)); // app icon
ASSERT(cs.lpszClass);
cs.style |= WS_CLIPCHILDREN;
cs.style &=~FWS_ADDTOTITLE;
return CFrameWnd::PreCreateWindow(cs);
}
////////////////
// Create CFolderFrame in main frame
//
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT, CCreateContext* pcc)
{
/* if (!wndSplitter.CreateStatic(this, 1, 2)) return false;
// if (!wndSplitter.CreateView(0, 1, pcc->m_pNewViewClass, CSize(0,0), pcc)) return false;
DWORD dwf = CGfxOutBarCtrl::fDragItems|
CGfxOutBarCtrl::fEditGroups|
CGfxOutBarCtrl::fEditItems|
CGfxOutBarCtrl::fRemoveGroups|
CGfxOutBarCtrl::fRemoveItems|
CGfxOutBarCtrl::fAddGroups|
CGfxOutBarCtrl::fAnimation;
wndBar.Create(WS_CHILD|WS_VISIBLE, CRect(0,0,0,0), &wndSplitter,
wndSplitter.IdFromRowCol(0, 0), dwf);
wndBar.SetOwner(this);
imaLarge.Create(IDB_IMAGELIST, 32, 0, RGB(128,128,128));
imaSmall.Create(IDB_SMALL_IMAGELIST, 16, 0, RGB(0,128,128));
wndBar.SetImageList(&imaLarge, CGfxOutBarCtrl::fLargeIcon);
wndBar.SetImageList(&imaSmall, CGfxOutBarCtrl::fSmallIcon);
wndTree.Create(WS_CHILD|TVS_HASLINES|TVS_LINESATROOT|TVS_HASBUTTONS|TVS_SHOWSELALWAYS,
CRect(0,0,0,0), &wndBar, 1010);
wndTree.SetImageList(&imaSmall, TVSIL_NORMAL);
wndBar.SetAnimationTickCount(10);
wndBar.SetAnimSelHighlight(200);
//Blue Sky加入的控制
wndBar.SetIfQueryRemove(true);
HTREEITEM htm = wndTree.InsertItem("tree 1", 0,0);
HTREEITEM htm1 = wndTree.InsertItem("tree 2", 1,1, htm);
wndTree.InsertItem("tree 3", 1,1, htm);
for (int xx = 0; xx < 5; xx ++)
{
htm = wndTree.InsertItem("tree 1", 0,0);
htm1 = wndTree.InsertItem("tree 2", 1,1, htm);
wndTree.InsertItem("tree 3", 1,1, htm);
htm = wndTree.InsertItem("tree 1", 0,0);
htm1 = wndTree.InsertItem("tree asdasdasdadasdasdasdasdas2", 1,1, htm);
wndTree.InsertItem("tree 3", 1,1, htm);
}
wndBar.AddFolder("我的任务", 0);
wndBar.AddFolderBar("通知及公告", &wndTree);
wndBar.AddFolder("附加任务1", 1);
wndBar.AddFolder("附加任务2", 2);
wndBar.AddFolder("附加任务3", 3);
wndBar.InsertItem(0, 0, "Item 1", 0, 0);
wndBar.InsertItem(0, 1, "Item 2", 1, 0);
wndBar.InsertItem(0, 2, "Item 3", 2, 0);
wndBar.InsertItem(0, 3, "Item 4", 3, 0);
wndBar.InsertItem(0, 4, "Item 5", 0, 0);
wndBar.InsertItem(0, 5, "Item 6", 1, 0);
wndBar.InsertItem(0, 6, "Item 7", 2, 0);
wndBar.InsertItem(0, 7, "Item 8", 3, 0);
wndBar.InsertItem(2, 0, "Item 1", 0, 0);
wndBar.InsertItem(2, 1, "Item 2", 1, 0);
wndBar.InsertItem(2, 2, "Item 3", 2, 0);
wndBar.InsertItem(2, 3, "Item 4", 3, 0);
wndBar.SetSelFolder(1);
CRect r;
GetClientRect(&r);
int w1 = r.Width()/5;
int w2 = r.Width()/4;
wndSplitter.SetColumnInfo( 0, w1, 0 );
wndSplitter.SetColumnInfo( 1, w2, 0 );
wndSplitter.RecalcLayout();//*/
m_wndFolderFrame.Create(this,
RUNTIME_CLASS(CPictureView),
pcc,
IDR_FOLDERTABS);
return true;
}
long CMainFrame::OnOutbarNotify(WPARAM wParam, LPARAM lParam)
{
switch (wParam)
{
case NM_OB_ITEMCLICK:
// cast the lParam to an integer to get the clicked item
{
int index = (int) lParam;
CString cs, cs1;
cs1 = wndBar.GetItemText(index);
int iFloder = wndBar.GetSelFolder();
cs.Format("您的任务编辑区", iFloder, (int)lParam, cs1);
AfxMessageBox(cs);
}
return 0;
case NM_OB_ONLABELENDEDIT:
// cast the lParam to an OUTBAR_INFO * struct; it will contain info about the edited item
// return 1 to do the change and 0 to cancel it
{
OUTBAR_INFO * pOI = (OUTBAR_INFO *) lParam;
TRACE2("Editing item %d, new text:%s\n", pOI->index, pOI->cText);
}
return 1;
case NM_OB_ONGROUPENDEDIT:
// cast the lParam to an OUTBAR_INFO * struct; it will contain info about the edited folder
// return 1 to do the change and 0 to cancel it
{
OUTBAR_INFO * pOI = (OUTBAR_INFO *) lParam;
TRACE2("Editing folder %d, new text:%s\n", pOI->index, pOI->cText);
}
return 1;
case NM_OB_DRAGITEM:
// cast the lParam to an OUTBAR_INFO * struct; it will contain info about the dragged items
// return 1 to do the change and 0 to cancel it
{
OUTBAR_INFO * pOI = (OUTBAR_INFO *) lParam;
TRACE2("Drag item %d at position %d\n", pOI->iDragFrom, pOI->iDragTo);
}
return 1;
}
return 0;
}
void CMainFrame::OnGfxLargeicon()
{
wndBar.SetSmallIconView(false);
}
void CMainFrame::OnUpdateGfxLargeicon(CCmdUI* pCmdUI)
{
pCmdUI->SetCheck(!wndBar.IsSmallIconView());
}
void CMainFrame::OnGfxSmallicon()
{
wndBar.SetSmallIconView(true);
}
void CMainFrame::OnUpdateGfxSmallicon(CCmdUI* pCmdUI)
{
pCmdUI->SetCheck(wndBar.IsSmallIconView());
}
/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics
#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
CFrameWnd::AssertValid();
}
void CMainFrame::Dump(CDumpContext& dc) const
{
CFrameWnd::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers
//////////////////
// Handle TBN_DROPDOWN
// Default is to display the specified menu at the right place.
// You can override to generate dynamic menus
//
// Args:
// - NMTOOLBAR struct from TBN_DROPDOWN
// - command id of button
// - point to display menu at
//
void CMainFrame::OnToolbarDropDown(NMTOOLBAR* pnmtb, LRESULT *plr)
{
// load and display popup menu
CMenu menu;
menu.LoadMenu(IDR_FILEDROPDOWN);
CMenu* pPopup = menu.GetSubMenu(0);
ASSERT(pPopup);
CRect rc;
m_wndToolBar.SendMessage(TB_GETRECT, pnmtb->iItem, (LPARAM)&rc);
m_wndToolBar.ClientToScreen(&rc);
pPopup->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON|TPM_VERTICAL,
rc.left, rc.bottom, this, &rc);
}
void CMainFrame::OnGetMinMaxInfo(MINMAXINFO* lpmmi)
{
CRect rc(0,0,
GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CYSCREEN));
rc.InflateRect(100,100);
lpmmi->ptMaxSize = CPoint(rc.Size());
lpmmi->ptMaxTrackSize = CPoint(rc.Size());
}
void CMainFrame::OnContextMenu(CWnd* pWnd, CPoint p)
{
CMenu menu;
VERIFY(menu.LoadMenu(IDR_MAINFRAME));
CMenu* pSubMenu = menu.GetSubMenu(1);
pSubMenu->TrackPopupMenu(0, p.x, p.y, this);
}
BOOL CMainFrame::CreateExToolBar()
{
CImageList img;
CString str;
if(!m_wndReBar.Create(this))
{
return -1;
}
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC))
{
return -1;
}
//下面的代码是设置按钮的宽度和长度
m_wndToolBar.GetToolBarCtrl().SetButtonWidth(40, 80);
//下面的代码是设置"热"的位图
img.Create(22, 22, ILC_COLOR8|ILC_MASK,1,1);
img.SetBkColor(::GetSysColor(COLOR_BTNFACE));
img.Add(AfxGetApp()->LoadIcon(IDI_ICON2));
img.Add(AfxGetApp()->LoadIcon(IDI_ICON3));
img.Add(AfxGetApp()->LoadIcon(IDI_ICON4));
img.Add(AfxGetApp()->LoadIcon(IDI_ICON5));
img.Add(AfxGetApp()->LoadIcon(IDI_ICON6));
img.Add(AfxGetApp()->LoadIcon(IDI_ICON7));
img.Add(AfxGetApp()->LoadIcon(IDI_ICON8));
img.Add(AfxGetApp()->LoadIcon(IDI_ICON9));
img.Add(AfxGetApp()->LoadIcon(IDI_ICON1));
img.Add(AfxGetApp()->LoadIcon(IDR_MAINFRAME));
m_wndToolBar.GetToolBarCtrl().SetHotImageList(&img);
img.Detach();
img.Create(22, 22, ILC_COLOR8|ILC_MASK, 1,1);
img.SetBkColor(::GetSysColor(COLOR_BTNFACE));
img.Add(AfxGetApp()->LoadIcon(IDI_ICON2));
img.Add(AfxGetApp()->LoadIcon(IDI_ICON3));
img.Add(AfxGetApp()->LoadIcon(IDI_ICON4));
img.Add(AfxGetApp()->LoadIcon(IDI_ICON5));
img.Add(AfxGetApp()->LoadIcon(IDI_ICON6));
img.Add(AfxGetApp()->LoadIcon(IDI_ICON7));
img.Add(AfxGetApp()->LoadIcon(IDI_ICON8));
img.Add(AfxGetApp()->LoadIcon(IDI_ICON9));
img.Add(AfxGetApp()->LoadIcon(IDI_ICON1));
img.Add(AfxGetApp()->LoadIcon(IDR_MAINFRAME));
m_wndToolBar.GetToolBarCtrl().SetImageList(&img);
img.Detach();
//改变属性
m_wndToolBar.ModifyStyle(0, TBSTYLE_FLAT |CBRS_TOOLTIPS | TBSTYLE_TRANSPARENT|TBBS_CHECKBOX );
m_wndToolBar.SetButtons(NULL,10);
m_wndToolBar.SetButtonInfo(0, IDC_WRITEMSG, TBSTYLE_BUTTON, 0);
m_wndToolBar.SetButtonText(0, "检疫员");
m_wndToolBar.SetButtonInfo(1, IDC_GETALLSIM, TBSTYLE_BUTTON, 1);
m_wndToolBar.SetButtonText(1, "报产检");
m_wndToolBar.SetButtonInfo(2, IDC_SCHOOL_REPORT_CARD, TBSTYLE_BUTTON, 2);
m_wndToolBar.SetButtonText(2, "产检证");
m_wndToolBar.SetButtonInfo(3, IDC_TELBOOK, TBSTYLE_BUTTON, 3);
m_wndToolBar.SetButtonText(3, "调研单");
m_wndToolBar.SetButtonInfo(4, IDC_MSG_RECIEVED, TBSTYLE_BUTTON , 4);
m_wndToolBar.SetButtonText(4, "出省证");
m_wndToolBar.SetButtonInfo(5, IDC_MSG_SENDED, TBSTYLE_BUTTON , 5);
m_wndToolBar.SetButtonText(5, "省内证");
m_wndToolBar.SetButtonInfo(6, IDC_MSG_DELETED, TBSTYLE_BUTTON, 6);
m_wndToolBar.SetButtonText(6, "实蝇");
m_wndToolBar.SetButtonInfo(7, IDC_REFRESH, TBSTYLE_BUTTON , 7);
m_wndToolBar.SetButtonText(7, "帮助");
m_wndToolBar.SetButtonInfo(8, IDC_REFRESHALL, TBSTYLE_BUTTON , 8);
m_wndToolBar.SetButtonText(8, "网站");
m_wndToolBar.SetButtonInfo(9,ID_APP_EXIT,TBSTYLE_BUTTON,9);
m_wndToolBar.SetButtonText(9,"退出");
CRect rectToolBar;
m_wndToolBar.GetItemRect(0, &rectToolBar);
m_wndToolBar.SetSizes(rectToolBar.Size(), CSize(22,22));
m_wndReBar.AddBar(&m_wndToolBar);
REBARBANDINFO rbbi;
rbbi.cbSize = sizeof(rbbi);
rbbi.fMask = RBBIM_CHILDSIZE | RBBIM_IDEALSIZE | RBBIM_SIZE|RBBIM_BACKGROUND;
rbbi.cxMinChild = rectToolBar.Width();
rbbi.cyMinChild = rectToolBar.Height();
rbbi.hbmBack = LoadBitmap(::AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP1));
rbbi.cx = rbbi.cxIdeal = rectToolBar.Width() * 10;
m_wndReBar.GetReBarCtrl().SetBandInfo(0, &rbbi);
return TRUE;
}
void CMainFrame::OnMsgDeleted()
{
AfxMessageBox("您好");
}
void CMainFrame::OnGetAllSimMsg()
{
AfxMessageBox("您好");
}
void CMainFrame::OnMsgRecieved()
{
AfxMessageBox("您好");
}
void CMainFrame::OnMsgSended()
{
AfxMessageBox("您好");
}
void CMainFrame::OnRefreshAll()
{
AfxMessageBox("您好");
}
void CMainFrame::OnRefreshSel()
{
AfxMessageBox("您好");
}
void CMainFrame::OnSchoolReportCard()
{
AfxMessageBox("您好");
}
void CMainFrame::OnTelBook()
{
AfxMessageBox("您好");
}
void CMainFrame::OnWriteMsg()
{
AfxMessageBox("您好");
}
void CMainFrame::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
int l,h;
m_test.GetRange(l,h);
if(m_test.GetPos()==h)KillTimer(timer);
m_test.StepIt();
CFrameWnd::OnTimer(nIDEvent);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -