Größe von VB OCX Controls auslesen



  • Hallo,

    ich lade mir in einer Applikation zur Laufzeit Controls in einen Dialog. Dabei muss ich natürlich auch deren Größe auslesen um die Dialoge anpassen zu können. Bei den Controls die ich in C++ geschrieben habe funktioniert das ohne Probleme. Aber wie komme ich an die Größeninformation von Basic OCXen ran ???
    Kann mir jemand weiterhelfen ??? 😕 😕



  • Hier mal ein Stück von meinem code. Vieleicht fällt dann jemanden noch was ein:

    //der Zeiger auf mein Control
    IUnknownPtr pUnkCtrl;

    //bCtrlID ist die ProgID meines Controls
    CLSIDFromProgID(bCtrlID, &clsid );
    pUnkCtrl.CreateInstance(clsid);

    //den OleObjectPtr brauche ich um die Größe auszulesen
    IOleObjectPtr spOleObj = m_pUnkCtrl;

    //GetExtent gibt mir die Größe zurück, ist bei VB Controls aber immer null!!
    DWORD dw = DVASPECT_CONTENT;
    spOleObj->GetExtent(dw,&size);

    //Größe in Pixel umrechnen
    HiMetricToPixel(&size, &size);

    //Größe vom Dialog holen...
    GetWindowRect(&m_CtrlSize);
    ScreenToClient(&m_CtrlSize);

    //...und anpassen
    m_CtrlSize.right = size.cx;
    m_CtrlSize.bottom = size.cy;

    wndControl.MoveWindow(&m_CtrlSize);
    MoveWindow(&m_CtrlSize);

    Bin für jeden Vorschlag dankbar...


Anmelden zum Antworten