/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.