/clr Option



  • Hallo, Allerseits !

    Ich habe versucht mein Projekt um die CommonLanguageRuntime-Namespaces zwecks der Nutzung der FileSelectBox darin zu erweitern.

    Das Problem jedoch: Mit der /clr meint der Compiler MyApp::Initialize wird systemeigen compiliert. <- was heißt das ?

    Zweitens darf kein HINST_THISCOMPONENT verwendet werden, nach Start ist das Programm sofort auch wieder beendet.

    HRESULT CoreApp::Initialize()
    {
        WNDCLASSEX wcex;
        HRESULT hr;
        ATOM atom;
    
    	#if defined(DEBUG) | defined(_DEBUG)
    		_CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
    	#endif
    
    	// Create Device Independent Resources
    	IFR(CreateDeviceIndependentResources()); 
    
        //register window class
        wcex.cbSize        = sizeof(WNDCLASSEX);
        wcex.style         = 0; // CS_HREDRAW | CS_VREDRAW ;
    	wcex.lpfnWndProc   = CoreApp::WndProc;
        wcex.cbClsExtra    = 0;
        wcex.cbWndExtra    = sizeof(LONG_PTR);
        wcex.hInstance     = HINST_THISCOMPONENT;
        wcex.hIcon         = LoadIcon(HINST_THISCOMPONENT, MAKEINTRESOURCE(IDI_HYBRIDMAIN));
        wcex.hCursor       = LoadCursor(HINST_THISCOMPONENT, IDC_ARROW);
        wcex.hbrBackground = NULL;
        wcex.lpszMenuName  = NULL;
        wcex.lpszClassName = TEXT("oidsproject");
        wcex.hIconSm       = LoadIcon( HINST_THISCOMPONENT, MAKEINTRESOURCE(IDI_SMALL) );
    
        atom = RegisterClassEx( &wcex );
        IFR(atom ? S_OK : E_FAIL);
    
        FLOAT dpiX, dpiY;
        D2DFactory->GetDesktopDpi(&dpiX, &dpiY);
    
    	m_hwnd =CreateWindowEx( 0,                      // no extended styles           
    							L"oidsproject",         // class name                   
    							L"Hybrid Space",        // window name                  
    							WS_OVERLAPPEDWINDOW,    // overlapped window            
    							CW_USEDEFAULT,          // default horizontal position  
    							CW_USEDEFAULT,          // default vertical position    
    							window_width  +16,  //CW_USEDEFAULT,          // default width                
    							window_height +56,	//CW_USEDEFAULT,          // default height               
    							(HWND) NULL,            // no parent or owner window    
    							(HMENU) NULL,           // class menu used              
    							HINST_THISCOMPONENT,    // instance handle              
    							this);                  // no window creation data      
    
        IFR(m_hwnd ? S_OK : E_FAIL);
    
        ShowWindow( m_hwnd, SW_SHOWNORMAL );
        UpdateWindow( m_hwnd );
    
    	//	ZEIT
    	GLOBAL_time = GLOBAL_timeold = GetTickCount();
    	GLOBAL_meantime = 0;
    
    	//	TIMER
    	SetTimer( m_hwnd, 0, 30, NULL );				//	SET TIMER
    
        return hr;
    }
    

    Kann mir jemand helfen ?
    Wie kann ich mein Programm zur CLR-Nutzung der System::Namespaces fit machen ?
    Was habe ich falsch gemacht ?

    Vielen Dank schon mal !



  • Die Meldung "systemeigen...." ist eine schlechte übersetzung aus dem Englischen ("native"); deshalb rate ich immer die englische IDE zu Verwenden.
    Es bedeutet eigentlich nur, dass diese Methode in "native"-Code compiliert wird und nicht in MSIL. In dieser Methode kannst Du also kein .NET verwenden; rufe dazu eine andere Methode auf die dann wieder .NET-Code enthalten kann.


Anmelden zum Antworten