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

📄 gdiplus.cpp

📁 《Visual C++.NET专业项目实例开发》源代码Project02Chapter12
💻 CPP
📖 第 1 页 / 共 4 页
字号:
#include "GDIPlus.h"
#include "GDIPlusView.h"

CMainWindow::CMainWindow()
{        
	pParentWindow = this;

	InitializeComponent();	
	nDocCount=0;  
	CreateDocument();
}

CMainWindow::~CMainWindow()
{
	//pComponents->Dispose();
}

void CMainWindow::InitializeComponent()
{
	pComponents = new System::ComponentModel::Container();
	
	pPrintDoc = new Printing::PrintDocument();		
	pPrintDoc->PrintPage += new PrintPageEventHandler(this, PrintPage);
		
	AutoScaleBaseSize =  System::Drawing::Size(5, 13);
	Text = "GDIPlus";
	IsMdiContainer = true;
	Menu = pMainMenu;
	ClientSize =  System::Drawing::Size(600, 400);

	pHelpProvider = new System::Windows::Forms::HelpProvider();
	pHelpProvider->HelpNamespace = S"Help\\GDIPlus.chm";
	pHelpProvider->SetShowHelp(this, true);		

//File
	pNewMenuItem = new Windows::Forms::MenuItem(S"&New",new EventHandler(this, &CMainWindow::MenuItemHandler));
	pOpenMenuItem = new Windows::Forms::MenuItem(S"&Open",	new EventHandler(this, &CMainWindow::MenuItemHandler));
	pCloseMenuItem = new Windows::Forms::MenuItem(S"&Close",	new EventHandler(this, &CMainWindow::MenuItemHandler));
	pSaveMenuItem = new Windows::Forms::MenuItem(S"&Save", 	new EventHandler(this, &CMainWindow::MenuItemHandler));
	pSaveAsMenuItem	= new Windows::Forms::MenuItem(S"Save &As", new EventHandler(this, &CMainWindow::MenuItemHandler));
	pLine1MenuItem = new Windows::Forms::MenuItem(S"-");
	pPrintMenuItem = new Windows::Forms::MenuItem(S"&Print",new EventHandler(this, &CMainWindow::MenuItemHandler));
	pPrintPreviewMenuItem = new Windows::Forms::MenuItem(S"P&rintPreview",new EventHandler(this, &CMainWindow::MenuItemHandler));
	pLine2MenuItem = new Windows::Forms::MenuItem(S"-");
	pLine3MenuItem = new Windows::Forms::MenuItem(S"-");		
	pExitMenuItem = new Windows::Forms::MenuItem(S"E&xit",new EventHandler(this, &CMainWindow::MenuItemHandler));

	Windows::Forms::MenuItem *rFileItems[] =
		new Windows::Forms::MenuItem *[10];

	rFileItems[0] = pNewMenuItem;
	rFileItems[1] = pOpenMenuItem;
	rFileItems[2] = pCloseMenuItem;
	rFileItems[3] = pSaveMenuItem;
	rFileItems[4] = pSaveAsMenuItem;
	rFileItems[5] = pLine1MenuItem;
	rFileItems[6] = pPrintMenuItem;
	rFileItems[7] = pPrintPreviewMenuItem;
	rFileItems[8] = pLine2MenuItem;
	rFileItems[9] = pExitMenuItem;

	pFileMenuItem = new Windows::Forms::MenuItem(S"&File", rFileItems);

	pClearAllMenuItem = new Windows::Forms::MenuItem(S"Clear &All",new EventHandler(this, &CMainWindow::MenuItemHandler));

	Windows::Forms::MenuItem *rEditItems[] =
		new Windows::Forms::MenuItem *[1];

	rEditItems[0] = pClearAllMenuItem;
	//rEditItems[1] = pLine3MenuItem;
	
	pEditMenuItem = new Windows::Forms::MenuItem(S"&Edit", rEditItems);

	//Pen
	pThickLineMenuItem = new Windows::Forms::MenuItem(S"Thick Line",new EventHandler(this, &CMainWindow::MenuItemHandler));
	pPenWidthMenuItem = new Windows::Forms::MenuItem(S"Pen Width",new EventHandler(this, &CMainWindow::MenuItemHandler));

	Windows::Forms::MenuItem *rPenItems[] =
		new Windows::Forms::MenuItem *[2];

	rPenItems[0] = pThickLineMenuItem;
	rPenItems[1] = pPenWidthMenuItem;

	pPenMenuItem = new Windows::Forms::MenuItem(S"Pen", rPenItems);

	//View
	pToolbarMenuItem = new Windows::Forms::MenuItem(S"Toolbar",new EventHandler(this, &CMainWindow::MenuItemHandler));
	pToolbarMenuItem->Checked = true;
	pStatusbarMenuItem = new Windows::Forms::MenuItem(S"Statusbar",new EventHandler(this, &CMainWindow::MenuItemHandler));
	pStatusbarMenuItem->Checked = true;
	Windows::Forms::MenuItem *rviewItems[] =
		new Windows::Forms::MenuItem *[2];

	rviewItems[0] = pToolbarMenuItem;
	rviewItems[1] = pStatusbarMenuItem;

	pViewMenuItem = new Windows::Forms::MenuItem(S"View", rviewItems);

//START PSK
	pDrawLine = new Windows::Forms::MenuItem(S"Line",new EventHandler(this, &CMainWindow::MenuItemHandler));
	pDrawEllipse = new Windows::Forms::MenuItem(S"Ellipse",new EventHandler(this, &CMainWindow::MenuItemHandler));
	pDrawRect = new Windows::Forms::MenuItem(S"Rectangle",new EventHandler(this, &CMainWindow::MenuItemHandler));
	pDrawText = new Windows::Forms::MenuItem(S"Text",new EventHandler(this, &CMainWindow::MenuItemHandler));
	pDrawFilledEllipse = new Windows::Forms::MenuItem(S"Filled Ellipse",new EventHandler(this, &CMainWindow::MenuItemHandler));
	pDrawFilledRect = new Windows::Forms::MenuItem(S"Filled Rect",new EventHandler(this, &CMainWindow::MenuItemHandler));
	pDelegateHandler = new Windows::Forms::MenuItem(S"Delegate and Events",new EventHandler(this, &CMainWindow::MenuItemHandler));

	Windows::Forms::MenuItem *rDrawItems[] =
		new Windows::Forms::MenuItem *[7];

	rDrawItems[0] = pDrawLine;
	rDrawItems[1] = pDrawEllipse;
	rDrawItems[2] = pDrawRect;
	rDrawItems[3] = pDrawText;
	rDrawItems[4] = pDrawFilledEllipse;
	rDrawItems[5] = pDrawFilledRect;
	rDrawItems[6] = pDelegateHandler;

	pDrawMenuItem = new Windows::Forms::MenuItem(S"Draw", rDrawItems);
//END PSK

	//Windows
	pNewWindowMenuItem = new Windows::Forms::MenuItem(S"New Window",new EventHandler(this, &CMainWindow::MenuItemHandler));
	pCascadeMenuItem = new Windows::Forms::MenuItem(S"Cascade",new EventHandler(this, &CMainWindow::MenuItemHandler));
	pTileMenuItem = new Windows::Forms::MenuItem(S"Tile",new EventHandler(this, &CMainWindow::MenuItemHandler));

	Windows::Forms::MenuItem *rwindowItems[] =
		new Windows::Forms::MenuItem *[3];

	rwindowItems[0] = pNewWindowMenuItem;
	rwindowItems[1] = pCascadeMenuItem;
	rwindowItems[2] = pTileMenuItem;

	pWindowMenuItem = new Windows::Forms::MenuItem(S"Window", rwindowItems);

	//Help
	pHelpTopicsMenuItem = new Windows::Forms::MenuItem(S"Help Topics",new EventHandler(this, &CMainWindow::MenuItemHandler));
	pHelpAboutMenuItem = new Windows::Forms::MenuItem(S"About GDIPlus",new EventHandler(this, &CMainWindow::MenuItemHandler));

	Windows::Forms::MenuItem *rhelpItems[] =
		new Windows::Forms::MenuItem *[2];

	rhelpItems[0] = pHelpTopicsMenuItem;
	rhelpItems[1] = pHelpAboutMenuItem;

	pHelpMenuItem = new Windows::Forms::MenuItem(S"Help", rhelpItems);

	//MainMenu
	Windows::Forms::MenuItem *rMainItems[] = new Windows::Forms::MenuItem *[7];

	rMainItems[0] = pFileMenuItem;
	rMainItems[1] = pEditMenuItem;
	rMainItems[2] = pPenMenuItem; 
	rMainItems[3] = pViewMenuItem;
	rMainItems[4] = pDrawMenuItem;
	rMainItems[5] = pWindowMenuItem;
	rMainItems[6] = pHelpMenuItem;

	pMainMenu = new MainMenu(rMainItems);
	Menu = pMainMenu;

	//Toolbar and Status bar
	pStatusBar = new Windows::Forms::StatusBar();
	pStatusBar->TabIndex = 2;
	pStatusBar->Text = "For Help,  press F1";

	pHelpTBButton	= new Windows::Forms::ToolBarButton();
	pHelpTBButton->ImageIndex = 5;
	pHelpTBButton->ToolTipText = "Help";

	pPrintTBButton = new Windows::Forms::ToolBarButton();
	pPrintTBButton->ImageIndex = 4;
	pPrintTBButton->ToolTipText = "Print";

	pPreviewTBButton = new Windows::Forms::ToolBarButton();
	pPreviewTBButton->ImageIndex = 3;
	pPreviewTBButton->ToolTipText = "Print Preview";
	
	pSaveTBButton = new Windows::Forms::ToolBarButton();
	pSaveTBButton->ImageIndex = 2;
	pSaveTBButton->ToolTipText = "Save";

	pOpenTBButton = new Windows::Forms::ToolBarButton();
	pOpenTBButton->ImageIndex = 1;
	pOpenTBButton->ToolTipText = "Open";

	pNewTBButton = new Windows::Forms::ToolBarButton();
	pNewTBButton->ImageIndex = 0;
	pNewTBButton->ToolTipText = "New";

	pImageList = new Windows::Forms::ImageList();
	pImageList->ImageSize =  System::Drawing::Size(16, 16);
	pImageList->TransparentColor = System::Drawing::Color::Transparent;
	pImageList->Images->Add(Image::FromFile(S"Res\\new.bmp"));
	pImageList->Images->Add(Image::FromFile(S"Res\\open.bmp"));
	pImageList->Images->Add(Image::FromFile(S"Res\\save.bmp"));
	pImageList->Images->Add(Image::FromFile(S"Res\\preview.bmp"));
	pImageList->Images->Add(Image::FromFile(S"Res\\print.bmp"));
	pImageList->Images->Add(Image::FromFile(S"Res\\help.bmp"));

	pToolBar = new Windows::Forms::ToolBar();
	pToolBar->ImageList = pImageList;
	pToolBar->DropDownArrows = true;
	pToolBar->ShowToolTips = true;
	System::Windows::Forms::ToolBarButton* rToolbarButtons[]=new System::Windows::Forms::ToolBarButton*[6];
	rToolbarButtons[0]=pNewTBButton;
	rToolbarButtons[1]=pOpenTBButton;
	rToolbarButtons[2]=pSaveTBButton;
	rToolbarButtons[3]=pPreviewTBButton;
	rToolbarButtons[4]=pPrintTBButton;
	rToolbarButtons[5]=pHelpTBButton;

	pToolBar->Buttons->AddRange(rToolbarButtons);	
	pToolBar->ButtonClick += new System::Windows::Forms::ToolBarButtonClickEventHandler(this,&CMainWindow::ToolbarHandler);

	Control *rControls[] = new Control *[2];
	rControls[0] = pStatusBar;
	rControls[1] = pToolBar;
	this->Controls->AddRange(rControls);
}

void CMainWindow::MenuItemHandler(Object* sender, EventArgs* e)
{
	if(sender->Equals(pNewMenuItem))
	{
		New();
	}
	else if(sender->Equals(pOpenMenuItem))
	{
		Open();
	}
	else if(sender->Equals(pSaveMenuItem))
	{
		Save();
	}
	else if(sender->Equals(pPrintPreviewMenuItem))
	{
		PrintPreview();
	}
	else if(sender->Equals(pPrintMenuItem))
	{
		Print();
	}
	else if(sender->Equals(pHelpAboutMenuItem))
	{
		AboutHelp();
	}
	else if(sender->Equals(pExitMenuItem))
	{
		Exit();
	}
	else if(sender->Equals(pCloseMenuItem))
	{
		CloseView();
	}
	else if(sender->Equals(pTileMenuItem))
	{
		Tile();
	}
	else if(sender->Equals(pCascadeMenuItem))
	{
		Cascade();
	}
	else if(sender->Equals(pClearAllMenuItem))
	{
		ClearAll();
	}
	else if(sender->Equals(pSaveAsMenuItem))
	{
		Save();
	}
	else if(sender->Equals(pNewWindowMenuItem))
	{
		NewWindow();
	}
	else if(sender->Equals(pPenWidthMenuItem))
	{
		PenWidthsDlg();
	}
	else if(sender->Equals(pThickLineMenuItem))
	{
		ThickLine();			
	}
	else if(sender->Equals(pHelpTopicsMenuItem))
	{
		HelpTopics();			
	}
	else if(sender->Equals(pToolbarMenuItem))
	{
		pToolBar->Visible  =  !pToolBar->Visible ;
		pToolbarMenuItem->Checked  = pToolBar->Visible;
	}
	else if(sender->Equals(pStatusbarMenuItem))
	{
		pStatusBar->Visible = !pStatusBar->Visible;			
		pStatusbarMenuItem->Checked = pStatusBar->Visible;
	}
	else if(sender->Equals(pDrawLine))
	{
		DrawLine();
	}
	else if(sender->Equals(pDrawEllipse))
	{
		DrawEllipse();
	}
	else if(sender->Equals(pDrawRect))
	{
		DrawRect();
	}
	else if(sender->Equals(pDrawText))
	{
		DrawText();
	}
	else if(sender->Equals(pDrawFilledEllipse))
	{
		DrawFilledEllipse();
	}
	else if(sender->Equals(pDrawFilledRect))
	{
		DrawFilledRect();
	}
	else if(sender->Equals(pDelegateHandler))
	{
		HandleDelegate();
	}
}


void CMainWindow::ToolbarHandler(Object* sender, ToolBarButtonClickEventArgs* e)
{
	// Evaluate the Button property to determine which button was clicked.
	switch (this->pToolBar->Buttons->IndexOf(e->Button))
	{
    case 0:
        New();
        break;
    case 1:
        Open();
        break;
    case 2:
        Save();
        break;
	case 3:
        PrintPreview();
        break;
	case 4:
        Print();
        break;
	case 5:
        HelpTopics();
        break;
	default:
		break;		
	}
}
//About GDIPlus
void CMainWindow::AboutHelp()
{
	MessageBox::Show(S"GDIPlus Version 1.0", S"About GDIPlus");
}

//Help Topics
void CMainWindow::HelpTopics()
{
	Help::ShowHelp(this, S"help\\GDIPlus.chm");
}

//Print
void CMainWindow::Print()
{		
	try 
	{			
		pPrintDoc->Print();
	} 
	catch(Exception* e)

⌨️ 快捷键说明

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