⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainfrm.cpp

📁 这是一个VC++的程序员实用大全精华版
💻 CPP
字号:
// MainFrm.cpp : implementation of the CMainFrame class
//

#include "stdafx.h"
#include "ImageList.h"

#include "MainFrm.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(IDM_IMAGES_INSERTBUTTON, OnImagesInsertbutton)
	ON_UPDATE_COMMAND_UI(IDM_IMAGES_INSERTBUTTON, OnUpdateImagesInsertbutton)
	ON_UPDATE_COMMAND_UI(ID_FILE_RUNPROGRAM, OnUpdateImagesInsertbutton)
	//}}AFX_MSG_MAP
	ON_COMMAND(ID_FILE_RUNPROGRAM, OnRunProgram)
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()
{
}

CMainFrame::~CMainFrame()
{
}

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	m_Images.Create (16, 15, ILC_MASK, 9, 5);
	LoadImages (&m_Images);

	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))
		!m_wndToolBar.LoadToolBar(IDR_TOOLBAR_X))
	{
		TRACE0("Failed to create toolbar\n");
		return -1;		// fail to create
	}
	m_wndToolBar.GetToolBarCtrl().SetImageList (&m_Images);
	m_wndToolBar.SetWindowText (_T("Edit"));
	m_wndToolBar.GetToolBarCtrl().SetToolTips (&m_wndToolTips);

	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);

	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

	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


void CMainFrame::AddToolbarButtons ()
{
UINT	uiIndex[] =
	{
	IDB_FILE_NEW,
	IDB_FILE_OPEN,
	IDB_FILE_SAVE,
	0,
	IDB_FILE_CUT,
	IDB_FILE_COPY,
	IDB_FILE_PASTE,
	0,
	IDB_FILE_PRINT,
	IDB_FILE_PREVIEW,
//	0,
	IDB_FILE_HELP
	};

	TBBUTTON tb;
	for (int i = 0; i < (sizeof (uiIndex) / sizeof (UINT)); ++i)
	{
		tb.idCommand = uiIndex[i];
		if (!uiIndex[i])
		{
			tb.iBitmap = NULL;
			tb.fsStyle = TBSTYLE_SEP;
			tb.fsState = TBSTATE_INDETERMINATE;
		}
		else
		{
			tb.iBitmap = i;
			tb.fsState = TBSTATE_ENABLED;
			tb.fsStyle = TBSTYLE_BUTTON;
		}
		tb.dwData = uiIndex[i];
		tb.iString = NULL;
		m_wndToolBar.GetToolBarCtrl().InsertButton (8, &tb);
	}
	RecalcLayout ();
}

void CMainFrame::LoadImages(CImageList *Images)
{
int x;
UINT	uiIndex[] =
	{
	IDB_FILE_NEW,
	IDB_FILE_OPEN,
	IDB_FILE_SAVE,
	IDB_FILE_CUT,
	IDB_FILE_COPY,
	IDB_FILE_PASTE,
	IDB_FILE_PRINT,
	IDB_FILE_PREVIEW,
	IDB_FILE_HELP
	};

	CBitmap bmp;
//	COLORREF clrMask = GetSysColor (COLOR_BTNFACE);
	COLORREF clrMask = RGB(255, 0, 255);
	for (x = 0; x < (sizeof (uiIndex) / sizeof (UINT)); ++x)
	{
		bmp.LoadBitmap (MAKEINTRESOURCE(uiIndex[x]));
		Images->Add (&bmp, clrMask);
		bmp.DeleteObject ();
	}
}

void CMainFrame::OnUpdateImagesInsertbutton(CCmdUI* pCmdUI) 
{
	if (m_wndToolBar.CommandToIndex (ID_FILE_RUNPROGRAM) < 0)
		pCmdUI->SetText (_T("Insert Button"));
	else
		pCmdUI->SetText (_T("Delete Button"));
}

void CMainFrame::OnRunProgram()
{
PROCESS_INFORMATION pi;
STARTUPINFO 		si;

	memset ((char *) &si, '\0', sizeof (STARTUPINFO));
	si.cb = sizeof (STARTUPINFO);

	CString ProgPath = m_strExecProgram;
	CString ProgParam = m_strExecProgram;
	CString StartPath = _T(".\\");
	BOOL bResult = CreateProcess((LPCTSTR) ProgPath,
				(char *) (LPCSTR) ProgParam,
				(LPSECURITY_ATTRIBUTES) NULL,
				(LPSECURITY_ATTRIBUTES) NULL,
				false,
				DETACHED_PROCESS,
				(LPVOID) NULL,
				(LPCTSTR) StartPath,
				(LPSTARTUPINFO) &si,
				(LPPROCESS_INFORMATION) &pi);
}

void CMainFrame::OnImagesInsertbutton() 
{
char szToolTip[_MAX_PATH];

	if (m_wndToolBar.CommandToIndex (ID_FILE_RUNPROGRAM) >= 0)
	{
		m_wndToolBar.GetToolBarCtrl().DeleteButton (8);
		m_Images.Remove (9);
		RecalcLayout ();
		return;
	}
	CString Filter = _T("Executable files (*.exe)|*.exe||");
	CFileDialog fd(true, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, Filter);
	if (fd.DoModal () == IDCANCEL)
		return;
	HICON hIcon = ExtractIcon (NULL, fd.GetFileName(), 0);
	memset (szToolTip, '\0', _MAX_PATH);
	sprintf (szToolTip, "Run %s\nRun\0\0", fd.GetFileTitle());
	m_strExecProgram = fd.m_ofn.lpstrFile;
	m_Images.Add (hIcon);
	DeleteObject (hIcon);
	TBBUTTON tb;
	tb.iBitmap = 9;
	tb.idCommand = ID_FILE_RUNPROGRAM;
	tb.fsState = TBSTATE_ENABLED;
	tb.fsStyle = TBSTYLE_BUTTON;
	tb.dwData = 0;
	tb.iString = 0;
	m_wndToolBar.GetToolBarCtrl().InsertButton (8, &tb);
//	LoadString(AfxGetResourceHandle(), ID_FILE_RUNPROGRAM, szToolTip, _MAX_PATH);
//  HINSTANCE hInstance,  // handle to module containing string resource
//  UINT uID,             // resource identifier
//  LPTSTR lpBuffer,      // pointer to buffer for resource
//  int nBufferMax        // size of buffer);
	CToolTipCtrl *tips = m_wndToolBar.GetToolBarCtrl().GetToolTips ();
	if (tips != NULL)
	{
		tips->UpdateTipText (szToolTip, &m_wndToolBar, 8);
	}
	RecalcLayout ();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -