Via Makro o.ä. - Code vor Designer verstecken



  • Abend Leute.

    Versuche folgendes Problem zu lösen:

    Eine Form DLL - welche das axWindowsMediaPlayer Object nutzen soll. Ganz normal hinzugefügt und kompiliert. Jedoch kommt es bei der Init zu dem mir ja bekannten Fehler der nicht gefundenen Ressourcen.

    Folgendes habe ich versucht: Im Konstuktor rufe ich vor InitializeComponent folgendes auf:

    void Sidebar::MediaPlayerpanel::InitRes ()
    	{
    	using namespace System::Reflection;
    
    	//Media Player Ressource Link erstellen
    	Assembly^ exAss = Assembly::GetExecutingAssembly ();	
    	System::Resources::ResourceReader^ resread = gcnew System::Resources::ResourceReader (exAss->GetManifestResourceStream ("MediaPlayerpanel.MediaPlayerpanel.resources"));
    	IDictionaryEnumerator^ en = resread->GetEnumerator();
    
    	while ( en->MoveNext() )
    	   {
    		  if (en->Key->ToString ()->Contains ("OcxState"))
    			  {
    			  tempres = en->Value;
    			  break;
    			  }
    	   }
    
    	resread->Close();
    	}
    

    wobei die variable tempress als globales Object definiert ist. InitializePanel sieht nun laut Designer ja etwa so aus:

    void InitializeComponent(void)
    		{
    		System::ComponentModel::ComponentResourceManager^  resources = (gcnew System::ComponentModel::ComponentResourceManager(MediaPlayerpanel::typeid));
    		this->axWindowsMediaPlayer1 = (gcnew AxWMPLib::AxWindowsMediaPlayer());
    		this->pictureBox1 = (gcnew System::Windows::Forms::PictureBox());
    		(cli::safe_cast<System::ComponentModel::ISupportInitialize^  >(this->pictureBox4))->BeginInit();
    		(cli::safe_cast<System::ComponentModel::ISupportInitialize^  >(this->pictureBox3))->BeginInit();
    		(cli::safe_cast<System::ComponentModel::ISupportInitialize^  >(this->axWindowsMediaPlayer1))->BeginInit();
    		(cli::safe_cast<System::ComponentModel::ISupportInitialize^  >(this->pictureBox1))->BeginInit();
    		this->SuspendLayout();
    		// 
    		// axWindowsMediaPlayer1
    		// 
    		this->axWindowsMediaPlayer1->Anchor = System::Windows::Forms::AnchorStyles::None;
    		this->axWindowsMediaPlayer1->Enabled = true;
    		this->axWindowsMediaPlayer1->Location = System::Drawing::Point(5, 26);
    		this->axWindowsMediaPlayer1->Name = L"axWindowsMediaPlayer1";
    		this->axWindowsMediaPlayer1->OcxState = (cli::safe_cast<System::Windows::Forms::AxHost::State^  >(resources->GetObject(L"axWindowsMediaPlayer1.OcxState"))); <-- hier tritt der Fehler auf
    

    Da ich nun das benötigte Object bereits habe - mache ich das so:

    this->axWindowsMediaPlayer1->OcxState = (cli::safe_cast<System::Windows::Forms::AxHost::State^  >(tempres));
    

    Klappt. Nun ist es ja leider so - das der Designer bei allen Veränderungen in der Form - den Code neu aufbaut - und somit meine Änderungen verwirft. Gibt es irgendwie etwas - das ich verwenden könnte - dass das nicht passiert?


Anmelden zum Antworten