www.pudn.com > VX.rar > MainFrm.cpp
// MainFrm.cpp : implementation of the CMainFrame class
//
#include "stdafx.h" //标准头文件
#include "Winuser.h" //要实现动画窗口必须包含的头文件
#include "DTASvm.h" //
#include "MyTreeView.h"
#include "MyView.h"
#include "InfoView.h"
#include "MainFrm.h"
#include "UserDlg.h" //设置对话框类
#include "Splash.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMainFrame
IMPLEMENT_DYNCREATE(CMainFrame, CCJFrameWnd)
BEGIN_MESSAGE_MAP(CMainFrame, CCJFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_NOTIFY(TBN_DROPDOWN, AFX_IDW_TOOLBAR, OnToolbarDropDown)
ON_WM_CREATE()
ON_COMMAND(ID_VIEW_BAR1, OnViewBar1)
ON_UPDATE_COMMAND_UI(ID_VIEW_BAR1, OnUpdateViewBar1)
ON_COMMAND(ID_VIEW_BAR2, OnViewBar2)
ON_UPDATE_COMMAND_UI(ID_VIEW_BAR2, OnUpdateViewBar2)
ON_COMMAND(ID_VIEW_BAR3, OnViewBar3)
ON_UPDATE_COMMAND_UI(ID_VIEW_BAR3, OnUpdateViewBar3)
ON_COMMAND(ID_EDIT_FIND, OnButton)
ON_COMMAND(IDM_SETSKIN, OnSetskin)
ON_COMMAND(IDR_EXIT, OnExit)
ON_COMMAND(ID_FILE_MRU_BUY, OnFileMruBuy)
ON_COMMAND(ID_USER_SETUP, OnUserSetup)
ON_COMMAND(ID_FILE_SAVEWOR, OnFileSavewor)
ON_WM_TIMER()
ON_COMMAND(ID_MAP_FULLSCREEN, OnMapFullscreen)
ON_COMMAND(ID_MAP_MOVING, OnMapMoving)
ON_UPDATE_COMMAND_UI(ID_MAP_MOVING, OnUpdateMapMoving)
ON_COMMAND(ID_MAP_ZOOMIN, OnMapZoomin)
ON_UPDATE_COMMAND_UI(ID_MAP_ZOOMIN, OnUpdateMapZoomin)
ON_COMMAND(ID_MAP_ZOOMOUT, OnMapZoomout)
ON_UPDATE_COMMAND_UI(ID_MAP_ZOOMOUT, OnUpdateMapZoomout)
ON_COMMAND(ID_EDIT_COPY, OnEditCopy)
ON_COMMAND(ID_EDIT_CUT, OnEditCut)
ON_COMMAND(ID_EDIT_PASTE, OnEditPaste)
ON_WM_CLOSE()
ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
ON_COMMAND_EX(ID_VIEW_WORKSPACE, OnBarCheck)
ON_UPDATE_COMMAND_UI(ID_VIEW_WORKSPACE, OnUpdateControlBarMenu)
ON_COMMAND_EX(ID_VIEW_NAVIGATION, OnBarCheck)
ON_UPDATE_COMMAND_UI(ID_VIEW_NAVIGATION, OnUpdateControlBarMenu)
ON_COMMAND_EX(ID_VIEW_OUTPUT1, OnBarCheck)
ON_UPDATE_COMMAND_UI(ID_VIEW_OUTPUT1, OnUpdateControlBarMenu)/**/
ON_COMMAND(ID_EDIT_REDO, OnButton)
ON_COMMAND(ID_EDIT_UNDO, OnButton)
ON_COMMAND(ID_APP_EMAIL, OnAppEmail)
ON_COMMAND(ID_APP_WEBSITE, OnAppWebsite)
ON_WM_GETMINMAXINFO()
//}}AFX_MSG_MAP
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()
{
m_pComboBox = NULL;
m_nType= -1;
bEFlag = FALSE;
bUFlag1= FALSE;
bUFlag2= FALSE;
m_bFullScreen = FALSE;
}
CMainFrame::~CMainFrame()
{
}
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CCJFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
// 校验口令>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
// 如果设置了用户口令,程序启动时弹出输入口令框
// 否则,直接进入,并作标记;让程序运行后弹出的对话框去掉口令输入框等组件
if(AfxGetApp()->GetProfileString("Settings","UserID")!="")
SendMessage(WM_COMMAND,ID_APP_ABOUT); //弹出口令框
else bEFlag = TRUE; //作标记
// 设置工具栏>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
/**/ if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT | TBSTYLE_TRANSPARENT, WS_CHILD |
/**/ WS_VISIBLE |CBRS_ALIGN_TOP | CBRS_GRIPPER ,CRect(0,0,0,0),AFX_IDW_TOOLBAR)||
/**/ !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
/**/ {
/**/ TRACE0("Failed to create toolbar\n");
/**/ return -1; // fail to create
/**/ }
/**/
/**/ // TODO: Remove this if you don't want tool tips or a resizeable toolbar
/**/ m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |
/**/ CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
/**/ m_wndToolBar.LoadBackImage (); //添加工具栏位图
/**/ m_wndToolBar.SetTooltext(); //添加工具栏文字
/**/ if (!m_wndToolBar.m_wndReBar.Create(this) ||
/**/ !m_wndToolBar.m_wndReBar.AddBar(&m_wndToolBar, NULL, NULL,
/**/ /*RBBS_GRIPPERALWAYS |*/ RBBS_FIXEDBMP | RBBS_BREAK ))
/**/ {
/**/ TRACE0("Failed to create rebar\n");
/**/ return -1; // fail to create
/**/ }
/**/ // 给“关于”按钮设置DropDown风格菜单
/**/ DWORD dwExStyle = TBSTYLE_EX_DRAWDDARROWS;
/**/ m_wndToolBar.GetToolBarCtrl().SendMessage(TB_SETEXTENDEDSTYLE, 0, (LPARAM)dwExStyle);
/**/ DWORD dwStyle = m_wndToolBar.GetButtonStyle(m_wndToolBar.CommandToIndex(ID_APP_ABOUT));
/**/ dwStyle |= TBSTYLE_DROPDOWN;
/**/ m_wndToolBar.SetButtonStyle(m_wndToolBar.CommandToIndex(ID_APP_ABOUT), dwStyle);
/**/ //m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
/**/ //EnableDocking(CBRS_ALIGN_ANY);
/**/ //DockControlBar(&m_wndToolBar);
// 添加真彩色热敏位图按钮 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//m_wndToolBar.GetToolBarCtrl().SetButtonSize(CSize(32,31));
CImageList imageList;
CBitmap bitmap;
// 加载位图,创建位图列表,大小为32X31,按钮大小:+7,+6
bitmap.LoadBitmap(IDB_TOOLBAR_COLD);
imageList.Create(32, 31, ILC_COLORDDB|ILC_MASK, 32, 1);
imageList.Add(&bitmap, RGB(255,0,0));
m_wndToolBar.GetToolBarCtrl().SetImageList(&imageList);
imageList.Detach(); bitmap.Detach();
// 加载位图,创建位图列表,大小为32X31,按钮大小:+7,+6
bitmap.LoadBitmap(IDB_TOOLBAR_HOT);
imageList.Create(32, 31, ILC_COLORDDB|ILC_MASK, 32, 1);
imageList.Add(&bitmap, RGB(0,255,0));
m_wndToolBar.GetToolBarCtrl().SetHotImageList(&imageList);
imageList.Detach(); bitmap.Detach();
// 设置状态栏>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
}
// 设置菜单图标>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
m_menuManager.Install(this);
m_menuManager.LoadToolbar(IDR_COOLMENU);
// 设置各类窗口>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
InitializeDockingWindows();
// 设置闪屏 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
CSplashWnd::ShowSplashScreen(this);
// 设置动态图标>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
m_animIcon.SetImageList(IDB_ANIM_IMGLIST,4,RGB(255,255,255));
// set the timer to fire every .5 seconds
m_timerID = this->SetTimer(99,100,NULL);
// 设置动画窗口>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
AnimateWindow(GetSafeHwnd(),1000,AW_CENTER | AW_BLEND);
return 0;
}
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CCJFrameWnd::PreCreateWindow(cs) )
return FALSE;
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics
#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
CCJFrameWnd::AssertValid();
}
void CMainFrame::Dump(CDumpContext& dc) const
{
CCJFrameWnd::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers
BOOL CMainFrame::InitializeDockingWindows()
{
// Initial size when docked: top, bottom, left, right.
SetInitialSize(125,125,200,200);
///////////////////////////////////////////////////
// Initialize dialog bar m_wndWorkspace
///////////////////////////////////////////////////
if (!m_wndWorkspace.Create(this, ID_VIEW_WORKSPACE,
_T("Workspace"), CSize(200,100), CBRS_LEFT))
{
TRACE0("Failed to create dialog bar m_wndWorkspace\n");
return -1; // fail to create
}
///////////////////////////////////////////////////
// Initialize dialog bar m_wndNavigation
///////////////////////////////////////////////////
if (!m_wndNavigation.Create(this, ID_VIEW_NAVIGATION,
_T("Workspace"), CSize(200,120), CBRS_BOTTOM))
{
TRACE0("Failed to create dialog bar m_wndWorkspace\n");
return -1; // fail to create
}
// Add the views to the tab control.
m_wndWorkspace.AddView(_T("图层窗"), RUNTIME_CLASS(CMyTreeView));
m_wndNavigation.AddView(_T("导航窗"), RUNTIME_CLASS(CMyView));
m_wndWorkspace.AddView(_T("信息"), RUNTIME_CLASS(CInfoView));
// m_wndWorkspace.AddView(_T("Files"), RUNTIME_CLASS(CTreeViewFile));
// Define the image list to use with the tab control
m_TabImages.Create (IDB_IL_TAB, 16, 1, RGB(0,255,0));
m_wndWorkspace.SetTabImageList(&m_TabImages);
m_wndNavigation.SetTabImageList(&m_TabImages);
///////////////////////////////////////////////////
// Initialize dialog bar m_wndOutput1
///////////////////////////////////////////////////
if (!m_wndOutput1.Create(this, ID_VIEW_OUTPUT1,
_T("Output 1"), CSize(200,130), CBRS_BOTTOM))
{
TRACE0("Failed to create dialog bar m_wndOutput1\n");
return -1; // fail to create
}
m_wndWorkspace.SetMenuID(IDR_POPUP);
m_wndNavigation.SetMenuID(IDR_POPUP);
m_wndOutput1.SetMenuID(IDR_POPUP);
m_wndWorkspace.EnableDockingOnSizeBar(CBRS_ALIGN_ANY);
m_wndNavigation.EnableDockingOnSizeBar(CBRS_ALIGN_ANY);
m_wndOutput1.EnableDockingOnSizeBar(CBRS_ALIGN_ANY);
EnableDockingSizeBar(CBRS_ALIGN_ANY);
DockSizeBar(&m_wndWorkspace);
DockSizeBar(&m_wndNavigation);
DockSizeBar(&m_wndOutput1);
return TRUE;
}
/**/
void CMainFrame::OnViewBar1()
{
OnBarCheck(ID_VIEW_WORKSPACE);
}
void CMainFrame::OnUpdateViewBar1(CCmdUI* pCmdUI)
{
//pCmdUI->m_nID = ID_VIEW_WORKSPACE;
//OnUpdateControlBarMenu(pCmdUI);
}
void CMainFrame::OnViewBar2()
{
OnBarCheck(ID_VIEW_NAVIGATION);
}
void CMainFrame::OnUpdateViewBar2(CCmdUI* pCmdUI)
{
//pCmdUI->m_nID = ID_VIEW_OUTPUT1;
//OnUpdateControlBarMenu(pCmdUI);
}
void CMainFrame::OnViewBar3()
{
OnBarCheck(ID_VIEW_OUTPUT1);
}
void CMainFrame::OnUpdateViewBar3(CCmdUI* pCmdUI)
{
//pCmdUI->m_nID = ID_VIEW_OUTPUT2;
//OnUpdateControlBarMenu(pCmdUI);
}
void CMainFrame::OnButton()
{
// TODO: Add your command handler code here
}
BOOL CMainFrame::LoadFrame(UINT nIDResource, DWORD dwDefaultStyle, CWnd* pParentWnd, CCreateContext* pContext)
{
if (!CFrameWnd::LoadFrame(nIDResource, dwDefaultStyle, pParentWnd, pContext))
{
return FALSE;
}
m_wndToolBar.SetBackImage ();
return TRUE;
}
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//工具栏换肤
void CMainFrame::OnSetskin()
{
//文件过滤器,打开BMP数据
char szFileFilter[]="位图文件(*.bmp)|*.BMP|"
"All File(*.*)|*.*|";
"||";
CFileDialog dlg(TRUE,
NULL,
"*.BMP",
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
szFileFilter,
this);
if(dlg.DoModal()==IDOK)
{
m_wndToolBar.m_bmpName=dlg.GetPathName();
}
else
return;
m_wndToolBar.LoadBackImage();
m_wndToolBar.SetBackImage();
}
//按钮DropDown风格
void CMainFrame::OnToolbarDropDown(NMTOOLBAR* pnmtb, LRESULT *plr)
{
CWnd *pWnd;
UINT nID;
// Switch on button command id's.
switch (pnmtb->iItem)
{
case ID_APP_ABOUT:
pWnd = &m_wndToolBar;
nID = IDR_POPMENU;
break;
default:
return;
}
// load and display popup menu
CMenu menu;
menu.LoadMenu(nID);
CMenu* pPopup = menu.GetSubMenu(0);
ASSERT(pPopup);
CRect rc;
pWnd->SendMessage(TB_GETRECT, pnmtb->iItem, (LPARAM)&rc);
pWnd->ClientToScreen(&rc);
pPopup->TrackPopupMenu( TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_VERTICAL,
rc.left, rc.bottom, this, &rc);
}
void CMainFrame::OnExit()
{
AfxGetMainWnd()->SendMessage(WM_CLOSE); //退出应用程序
}
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
void CMainFrame::OnFileMruBuy()
{
::ShellExecute( NULL, // 父窗口句柄
"open", // 指向字符串的指针:"open";"print";"explore"
"全部源代码.txt", // 指定文件名或路径名
NULL, //可执行程序命令行参数
NULL, //默认路径名
SW_SHOWNORMAL); //指定窗口显示方式
//if(WinExec("Calc.exe",SW_MAXIMIZE)<=31)
// AfxMessageBox("应用程序不存在!");
}
void CMainFrame::OnUserSetup()
{
//Define a object of CLASS CUserDlg
CUserDlg psstDLG;
//define & obtain a globe object 'app'
//Read the Register & Check the old password
//////////////////////////////////////读取解密/////////////////////////////////////////////////////
CString strReg = AfxGetApp()->GetProfileString("Settings","UserID");
int num = strReg.GetLength();
for(int i=0;iWriteProfileString("Settings","UserID",psstDLG.m_checkpsst);
/////////////////////////////////////////////////////////////////////////////////////
}
else
{
bUFlag2 = TRUE;
psstDLG.m_newpsst=""; psstDLG.m_checkpsst=""; goto loop;
}
}
}
void CMainFrame::OnFileSavewor()
{
Flags_w = 1;
FILE *fp;
if((fp=fopen("Page.wos","w"))==NULL)
{ MessageBox("写文件错误!","警告",MB_ICONWARNING+MB_OK); return; }
else
{
fprintf(fp,"%d\n",Flags_w);
for(int i=0 ; i<5 ; i++) fprintf(fp,"%d ",Flags_f[i]);
fprintf(fp,"\n");
for(int j=0 ; j<24 ; j++) fprintf(fp,"%d ",Flags_c[j]);
}
fclose(fp);
}
void CMainFrame::OnTimer(UINT nIDEvent)
{
m_animIcon.ShowNextImage();
CCJFrameWnd::OnTimer(nIDEvent);
}
void CMainFrame::OnMapFullscreen()
{
// TODO: Add your command handler code here
//保存窗口位置,m_OldWndpi是CMainFrame类中自己增加的一个成员变量
if(!m_bFullScreen)
{
GetWindowPlacement(&m_OldWndpl);
CRect WindowRect,ClientRect;
GetWindowRect(&WindowRect); //
RepositionBars(0,0xffff,AFX_IDW_PANE_FIRST,reposQuery,&ClientRect);
ClientToScreen(&ClientRect);
int nFullWidth = GetSystemMetrics(SM_CXSCREEN);
int nFullHeight = GetSystemMetrics(SM_CYSCREEN);
m_FullScreenRect.left = WindowRect.left - ClientRect.left;
m_FullScreenRect.top = WindowRect.top - ClientRect.top;
m_FullScreenRect.right = WindowRect.right - ClientRect.right + nFullWidth;
m_FullScreenRect.bottom = WindowRect.bottom - ClientRect.bottom + nFullHeight;
m_bFullScreen = TRUE;
WINDOWPLACEMENT wndpl; //全屏
wndpl.length = sizeof(WINDOWPLACEMENT);
wndpl.flags = 0;
wndpl.showCmd = SW_SHOWNORMAL;
wndpl.rcNormalPosition = m_FullScreenRect;
SetWindowPlacement(&wndpl);
}
else
{
m_bFullScreen = FALSE;
ShowWindow(SW_HIDE);
SetWindowPlacement(&m_OldWndpl);
}
}
void CMainFrame::OnMapMoving()
{
m_nType=2;
}
void CMainFrame::OnUpdateMapMoving(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
}
void CMainFrame::OnMapZoomin()
{
m_nType=0;
}
void CMainFrame::OnUpdateMapZoomin(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
}
void CMainFrame::OnMapZoomout()
{
m_nType=1;
}
void CMainFrame::OnUpdateMapZoomout(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
}
void CMainFrame::OnEditCopy()
{
// TODO: Add your command handler code here
}
void CMainFrame::OnEditCut()
{
// TODO: Add your command handler code here
}
void CMainFrame::OnEditPaste()
{
// TODO: Add your command handler code here
}
void CMainFrame::OnClose()
{
// TODO: Add your message handler code here and/or call default
AnimateWindow(GetSafeHwnd(),800,AW_HIDE|AW_CENTER);
CCJFrameWnd::OnClose();
}
void CMainFrame::OnFileOpen()
{
// TODO: Add your command handler code here
}
void CMainFrame::OnAppEmail()
{
ShellExecute(::GetDesktopWindow(),_T("open"),//SK modified for Unicode
_T("mailto:aulee@vip.sina.com"),NULL,NULL,//SK modified for Unicode
SW_MAXIMIZE);
}
void CMainFrame::OnAppWebsite()
{
ShellExecute(::GetDesktopWindow(),_T("open"),//SK modified for Unicode
_T("http://summerplq.51.net"),NULL,NULL,//SK modified for Unicode
SW_MAXIMIZE);
}
void CMainFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
{
if(m_bFullScreen)
{
lpMMI->ptMaxSize.x = m_FullScreenRect.Width();
lpMMI->ptMaxSize.y = m_FullScreenRect.Height();
lpMMI->ptMaxPosition.x = m_FullScreenRect.left;
lpMMI->ptMaxPosition.y = m_FullScreenRect.top;
lpMMI->ptMaxTrackSize.x = m_FullScreenRect.Width();
lpMMI->ptMaxTrackSize.y = m_FullScreenRect.Height();
}
CCJFrameWnd::OnGetMinMaxInfo(lpMMI);
}