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

📄 swmainform.cpp

📁 一个Windows下演示SPWM功能的源程序
💻 CPP
字号:
#include "SWMainForm.h"

#include "iostream.h" 

 //region int SmartWinMain(sw::Application& app)
int SmartWinMain(sw::Application& app)
{
    SWMainForm* mainForm=new SWMainForm;
    mainForm->initAndCreate();
    return  app.run();
}

void SWMainForm::main_createMenu(void)
{
        mainMenu = createMenu();
		WidgetMenuPtr file = mainMenu->appendPopup( _T( "&File" ) );
		file->appendItem( 1, _T( "&New PLC File" ), & SWMainForm::menuEventHandler );
		file->appendItem( 2, _T( "&Open PLC File" ), & SWMainForm::menuEventHandler );	
		file->appendItem( 3, _T( "&Save PLC File" ), & SWMainForm::menuEventHandler );
		//file->appendItem( 5, _T( "&Load Quake 3 map" ), & SWMainForm::menuEventHandler );
//		file->appendItem( 6, _T( "&Add PLC File" ), & SWMainForm::menuEventHandler );	
		file->appendSeparatorItem();
		file->appendItem( 4, _T( "&Exit" ), & SWMainForm::menuEventHandler );
		
		mainMenu->attach( this );
}
void SWMainForm::main_createToolbar(void)
{
    WidgetToolbar::Seed toolbar_seed;
	toolbar_seed.style |= TBSTYLE_FLAT;
	toolbar = createToolbar(toolbar_seed);
	toolbar->setButtonSize( 30, 25 );
	//toolbar_1 = createToolbar(toolbar_seed);
	//toolbar_1->setButtonSize( 32, 25 );
	ImageListPtr imageList( new ImageList( 23, 20, ILC_COLOR24 ) );
	imageList->addMultiple( SmartWin::Bitmap("bitmap1.bmp") );
	toolbar->setNormalImageList( imageList );
	toolbar->addButton( 0, 0, _T( "New" ), _T( "New IRRscene File" ), false, & SWMainForm::toolbarClicked );
	toolbar->addButton( 1, 1, _T( "Open" ), _T( "Open IRRscene File" ), false, & SWMainForm::toolbarClicked );
	toolbar->addButton( 2, 2, _T( "Save" ), _T( "Save IRRscene File" ), false, & SWMainForm::toolbarClicked );
	toolbar->addButton( 3, 3, _T( "Dele" ), _T( "Delete model..." ), false, & SWMainForm::toolbarClicked );
	toolbar->addButton( 4, 4, _T( "Copy" ), _T( "Testing model..." ), false, & SWMainForm::toolbarClicked );
	toolbar->addButton( 5, 5, _T( "Past" ), _T( "Paste model..." ), false, & SWMainForm::toolbarClicked );
	toolbar->addButton( 6, 6, _T( "Hide" ), _T( "Hide/Unhide" ), false, & SWMainForm::toolbarClicked );
	toolbar->addButton( 7, 7, _T( "Wire" ), _T( "Show Wire/Hide wire" ), false, & SWMainForm::toolbarClicked );
	toolbar->addButton( 8, 8, _T( "Mode" ), _T( "OpenMode" ), false, & SWMainForm::toolbarClicked );
	toolbar->addButton( 9, 9, _T( "View" ), _T( "View Change" ), false, & SWMainForm::toolbarClicked );
	toolbar->addButton( 10, 10, _T( "Full" ), _T( "Full Perspective View" ), false, & SWMainForm::toolbarClicked );
	toolbar->addButton( 11, 11, _T( "Play" ), _T( "Play" ), false, & SWMainForm::toolbarClicked );
	toolbar->addButton( 12, 12, _T( "Text" ), _T( "Texture" ), false, & SWMainForm::toolbarClicked );
	toolbar->addButton( 13, 13, _T( "MoveC" ), _T( "Move Camera" ), false, & SWMainForm::toolbarClicked );
	toolbar->addButton( 14, 14, _T( "MoveM" ), _T( "Move model" ), false, & SWMainForm::toolbarClicked );
	toolbar->addButton( 15, 15, _T( "Rota" ), _T( "Rotate model" ), false, & SWMainForm::toolbarClicked );
	toolbar->addButton( 16, 16, _T( "Scal" ), _T( "Scale model" ), false, & SWMainForm::toolbarClicked );
	toolbar->addButton( 17, 17, _T( "Cube" ), _T( "Add Cube" ), false, & SWMainForm::toolbarClicked );
	
	toolbar->refresh();
}

void SWMainForm::menuEventHandler( WidgetMenuPtr menu, unsigned int item )
{     
     UpdateCanvas c( this );
     
     switch(item) 
     {            
           case 2: 
               OnLoadFile();
               break;
            case 3:
                OnSaveFile();
                break;               
     }
    
}


void SWMainForm::toolbarClicked( WidgetToolbarPtr toolbar, unsigned btn )
{
    
     UpdateCanvas c( this );
    
    switch(btn) 
    {            
        case 0:        
           break;
		case 1: 
		    OnLoadFile();
           break;
        case 2:
            OnSaveFile();
           break;
   }
}
void SWMainForm::OnLoadFile()
{
     WidgetLoadFile L_dlg;
     SmartUtil::tstring filePath;
     std::fstream sfs;
     int len;
     char* buf;
     SmartUtil::tstring file_data;
     
     L_dlg = createLoadFile();
		      L_dlg.addFilter( _T( "PLC Files(*.plc)" ), _T( "*.plc" ) );
		      L_dlg.addFilter( _T( "All Files" ), _T( "*.*" ) );
		      L_dlg.activeFilter( 0 );
		      filePath = L_dlg.showDialog();
		      if(!filePath.empty())
		      {
		          std::fstream sfs(filePath.c_str());
		          if(!sfs)return;
		          sfs.seekg (0, ios::end);
		          len = sfs.tellg();
		          sfs.seekg (0, ios::beg);
		          buf = new char[len];
		          sfs.read(buf, len);
		          file_data=string(buf);
		          delete []buf;
		          sfs.close();
		          
		          //m_edit1->setText(file_data);		      
		      }		        
}

void SWMainForm::OnSaveFile()
{
     WidgetSaveFile S_dlg;
     SmartUtil::tstring filePath;
     std::fstream sfs;
     int len;
     char* buf;
     SmartUtil::tstring file_data;
     S_dlg = createSaveFile();
		       S_dlg.addFilter( _T( "PLC Files(*.plc)" ), _T( "*.plc" ) );
		       S_dlg.addFilter( _T( "All Files" ), _T( "*.*" ) );
		       S_dlg.activeFilter( 0 );
		       
		       filePath = S_dlg.showDialog();
		       if(!filePath.empty())
		       {		         
		           if(filePath.find(".plc")==-1&&filePath.find(".PLC")==-1)filePath+=".plc";  
                   sfs.open(filePath.c_str(), ios_base::out);
                   if(!sfs)return;
		           //file_data=m_edit1->getText();
		           sfs.write(file_data.c_str(), file_data.size());   
		           sfs.close();
		        }
}

//endregion
void SWMainForm::paint(Canvas  &  c)
{
    cal();
    UpdateCanvas uc( this );
	SmartWin::Rectangle rect(r.l, r.t, r.w+5, r.h+5 );	
	
	if(cmpnum==0)uc.rectangle( rect );
	int x=0;
	for(int samplenum=0;samplenum<cmpnum;samplenum++)
	{
	    SPWM_isHeight=samplenum%2;
        uc.line(r.x+x,r.y-SPWM_isHeight*100,r.x+x+T[samplenum%30],r.y-SPWM_isHeight*100); 
        uc.line(r.x+x+T[samplenum%30],r.y-0*100,r.x+x+T[samplenum%30],r.y-1*100);
	    x+=T[samplenum%30];
	}
	
	
	x=0;
	for(int samplenum=0;samplenum<cmpnum;samplenum+=2)
	{
        uc.line(r.x+x,r.y-120-(5*T[samplenum%30+1]),r.x+x+(T[samplenum%30]+T[samplenum%30+1]),r.y-120-(5*T[samplenum%30+1]));
        SPWM_isHeight=!SPWM_isHeight;
        
        //uc.line(r.x+x+T[samplenum%30],r.y-0*100,r.x+x+T[samplenum%30],r.y-1*100);
         
	    x+=(T[samplenum%30]+T[samplenum%30+1]);
	}
	
	
}
void SWMainForm::On_Button1(WidgetButtonPtr widgetparam)
{
    //createMessageBox().show( widgetparam->getText());
    if(SPWM_isRun==false)
    {
        SPWM_isRun=true;
        cal();
        Command com ( _T( "Run" ) );
        cmpnum=0;
	    createTimer( & SWMainForm::timer_SPWM_Run, T[cmpnum%30]*30, com );
	    cout<<cmpnum<<":"<<cmpint[cmpnum%30]<<endl;
	}
	else
	{
	    cmpnum=0;
	    SPWM_isRun=false;
	}    

}

void SWMainForm::timer_SPWM_Run( const CommandPtr & cmd )
{
    if(SPWM_isRun)
    {
        UpdateCanvas uc( this );
	    if(++cmpnum>=60)
	    {
	        cmpnum=0;
	        SmartWin::Rectangle rect(r.l, r.t, r.w+5, r.h+5 );
	        uc.rectangle( rect );
	        //SPWM_isRun=false;
	     }
	     paint( uc );
	     
	    
	     cout<<cmpnum<<":"<<T[cmpnum%30]<<endl;
         Command com ( _T( "Run" ) );
	     createTimer( & SWMainForm::timer_SPWM_Run, T[cmpnum%30]*(1+slider1->getPosition()), com ); 
	}   
	
	    
}





void SWMainForm::On_Slider1(WidgetSliderPtr widgetparam)
{
    //createMessageBox().show( boost::lexical_cast< SmartUtil::tstring >( widgetparam->getPosition() ) );

}

⌨️ 快捷键说明

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