📄 mainfrm.cpp
字号:
// MainFrm.cpp : implementation of the CMainFrame class
//
#include "stdafx.h"
#include "TProd.h"
#include "GfxOutBarCtrl.h"
#include "Introduction.h"
#include "TProdView.h"
#include "SeachPage.h"
#include "InputPass.h"
#include "AdminPage.h"
#include "Backup.h"
#include "MainFrm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern CTProdApp theApp;
extern CString select;
/////////////////////////////////////////////////////////////////////////////
// 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_WM_CLOSE()
ON_COMMAND(ID_CO_INTRODUCTION, OnCoIntroduction)
ON_COMMAND(ID_CO_HOMEPAGE, OnCoHomepage)
ON_COMMAND(ID_SEARCH_PAGE, OnSearchPage)
ON_COMMAND(ID_ADMIN_PAGE, OnAdminPage)
ON_COMMAND(ID_DATA_BAK, OnDataBak)
//}}AFX_MSG_MAP
ON_MESSAGE(WM_OUTBAR_NOTIFY, OnOutbarNotify)
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_hotToolBar.CreateEx(this, TBSTYLE_FLAT | TBSTYLE_LIST, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_hotToolBar.LoadToolBar(IDR_HOTBAR))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
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
}
// Set up hot bar image lists.
CImageList imageList;
CBitmap bitmap;
// Create and set the normal toolbar image list.
bitmap.LoadBitmap(IDB_TOOLBAR_COLD);
imageList.Create(32, 30, ILC_COLORDDB|ILC_MASK, 13, 1);
imageList.Add(&bitmap, RGB(255,0,255));
m_hotToolBar.SendMessage(TB_SETIMAGELIST, 0, (LPARAM)imageList.m_hImageList);
imageList.Detach();
bitmap.Detach();
// Create and set the hot toolbar image list.
bitmap.LoadBitmap(IDB_TOOLBAR_HOT);
imageList.Create(32, 30, ILC_COLORDDB|ILC_MASK, 13, 1);
imageList.Add(&bitmap, RGB(255,0,255));
m_hotToolBar.SendMessage(TB_SETHOTIMAGELIST, 0, (LPARAM)imageList.m_hImageList);
imageList.Detach();
bitmap.Detach();
// TODO: Delete these three lines if you don't want the toolbar to
// be dockable
m_hotToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_hotToolBar);
//动画出现窗口
// AnimateWindow(GetSafeHwnd(),500,AW_CENTER);
//应用程序窗口放置在屏幕正中央,在MainFrame的OnCreate函数中加入:
CenterWindow(GetDesktopWindow());
return 0;
}
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
//设定程序屏幕大小
cs.cx=800;
cs.cy=600;
//去掉最大化按钮
cs.style &= ~WS_MAXIMIZEBOX;
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics
#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
CFrameWnd::AssertValid();
}
void CMainFrame::Dump(CDumpContext& dc) const
{
CFrameWnd::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
if (!wndSplitter.CreateStatic(this, 1, 2)) return false;
if (!wndSplitter.CreateView(0, 1, pContext->m_pNewViewClass, CSize(0,0), pContext)) 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(128,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);
//增加目录
wndBar.AddFolder("Index By Maker", 0);
wndBar.AddFolder("Index By Sort", 1);
wndBar.AddFolder("Index By App", 2);
_variant_t var,var2;
//Index by O.E.目录
try
{
m_pRecordsetOE.CreateInstance("ADODB.Recordset");
m_pRecordsetOE->Open("SELECT * FROM oeinfo",_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
m_bSuccess = TRUE;
while(!m_pRecordsetOE->adoEOF)
{
//取得oe厂商名字
var = m_pRecordsetOE->GetCollect("oename");
if(var.vt != VT_NULL)
vOename = (LPCSTR)_bstr_t(var);
else vOename=(LPCSTR)_bstr_t("NULL");
//取得厂商图标号
var2 = m_pRecordsetOE->GetCollect("oeimage");
vOeimage = var2.lVal;
//添加一个按钮
wndBar.InsertItem(0, 0, (_bstr_t)vOename, vOeimage-1, 0);
m_pRecordsetOE->MoveNext();
}
}
catch(_com_error e)///捕捉异常
{
AfxMessageBox("Read Database Failed!");///显示错误信息
}
//Index by sort目录
try
{
m_pRecordsetSORT.CreateInstance("ADODB.Recordset");
m_pRecordsetSORT->Open("SELECT * FROM prodsort",_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
m_bSuccess = TRUE;
while(!m_pRecordsetSORT->adoEOF)
{
//取得产品分类名字
var = m_pRecordsetSORT->GetCollect("sortname");
if(var.vt != VT_NULL)
vSortname = (LPCSTR)_bstr_t(var);
else vSortname=(LPCSTR)_bstr_t("NULL");
//取得分类图标号
var2 = m_pRecordsetSORT->GetCollect("sortimage");
vSoftimage = var2.lVal;
//添加一个按钮
wndBar.InsertItem(1, 0, (_bstr_t)vSortname, vSoftimage-1, 0);
m_pRecordsetSORT->MoveNext();
}
}
catch(_com_error e)///捕捉异常
{
AfxMessageBox("Read Database Failed!");///显示错误信息
}
//Index by APP目录
// try
// {
// m_pRecordsetAPP.CreateInstance("ADODB.Recordset");
// m_pRecordsetAPP->Open("SELECT * FROM prodsort",_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
// m_bSuccess = TRUE;
// while(!m_pRecordsetAPP->adoEOF)
// {
// //取得产品分类名字
// var = m_pRecordsetAPP->GetCollect("sortname");
// if(var.vt != VT_NULL)
// vSortname = (LPCSTR)_bstr_t(var);
// else vSortname=(LPCSTR)_bstr_t("NULL");
// //取得分类图标号
// var2 = m_pRecordsetSORT->GetCollect("sortimage");
// vSoftimage = var2.lVal;
// //添加一个按钮
// wndBar.InsertItem(1, 0, (_bstr_t)vSortname, vSoftimage-1, 0);
// m_pRecordsetSORT->MoveNext();
// }
// }
// catch(_com_error e)///捕捉异常
// {
// AfxMessageBox("Read Database Failed!");///显示错误信息
// }
wndBar.SetSelFolder(0);//初始显示目录
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();
return true;
}
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());
}
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 cs1;
cs1 = wndBar.GetItemText(index);
select=cs1;
}
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::OnClose()
{
// AnimateWindow(GetSafeHwnd(),500,AW_HIDE|AW_CENTER);
CFrameWnd::OnClose();
}
void CMainFrame::OnCoIntroduction()
{
CIntroduction Introduction;
Introduction.DoModal();
}
void CMainFrame::OnCoHomepage()
{
ShellExecute(this->m_hWnd,"open","http://www.tuopu.com","","", SW_SHOW );
}
void CMainFrame::OnSearchPage()
{
// TODO: Add your command handler code here
CSeachPage Search;
Search.DoModal();
}
void CMainFrame::OnAdminPage()
{
// TODO: Add your command handler code here
CInputPass InputPass;
InputPass.DoModal();
CAdminPage Admin;
if (InputPass.m_admin=="Tuopu" && InputPass.m_pass=="gninil")
Admin.DoModal();
else
MessageBox("Sorry,your password is incorrect!\n You can't Admin the database!");
}
void CMainFrame::OnDataBak()
{
// TODO: Add your command handler code here
CBackup Backup;
Backup.DoModal();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -