wie kann ich bei IHTMLDocument2 frames die left und top koordinaten rauskriegen?



  • Hi Leutz,
    ich code nun seit wochen an funktionen, die mir von ner CppWebBrowser komponente das Link-href unter der Maus geben (einschließlich frames und image-links unterstützung) so, jetzt hab ich fast alles an code zusammen, aber eine sache brauch ich noch:
    wenn ich die frames durchlaufe, krieg ich nen zeiger auf ein IHTMLDocument2, welches den aktuellen frame enthält.

    for(LONG ilFrameIndex = 0; ilFrameIndex < ilFramesCount; ilFrameIndex++)
                {
                vFrame.lVal = ilFrameIndex;
                if(!SUCCEEDED(pFrames->item(&vFrame, &ret)))
                   continue;
                ret.pdispVal->QueryInterface(IID_IHTMLWindow2,(LPVOID*)&pWindow);  // Zeiger auf IHTMLWindow2 des Frames besorgen:
                if(pWindow == NULL)
                   continue;
                pWindow->get_document(&pDoc2);  // Zeiger auf IHTMLDocument2 des Frames besorgen:
                if(pDoc2 == NULL)
                   {pWindow->Release();
                   continue;}
    
                pDoc2->elementFromPoint(p2.x , p2.y, &pElement);
                ...
    

    Das Problem, das ich nun habe ist folgendes:
    wenn ich nur einen frame hab, kann ich mit CppWebBrowser->ScreenToClient(p) die Mauskoordinaten p in koordinaten relativ zum browser umrechnen, aber wenn ich mehrere frames hab, brauch ich die koordinaten relativ zum frame...
    es würde mir ja schon reichen, wenn ich die x- und y-koordinate des frames hätte, damit könnte ich das selbst ausrechnen, aber weder ne ScreenToClient noch ne get_x* get_c* methode hat IHTMLDocument2...

    was hat sich microsoft bei dieser erbärmlichen schnittstelle bloß gedacht?
    Danke für jede hilfe...
    CU

    AlgoMan


Anmelden zum Antworten