Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Mehrere Fragen ua. Socket

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
26.02.2004, 17:35 Uhr
~_JOat
Gast


Hab n paar fragen / probleme

1) Wie kann ich auf den rechtsklick eines eingabefeldes reagieren
2) Wie kann ich STRG+ENTER auf eine function umleiten?
3) Wie kann ich Nachrichten die per Socket verschickt werden unterscheiden (Feld1 nach Feld1 und Feld2 nach Feld2)
4) wie kann ich per socket sowas an den client schicken? "%windir%\System32\rundll32.exe user32.dll,LockWorkStation"
5) wie kan ich zum fenstertitel einen text hinzufügen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
26.02.2004, 17:41 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


zu1 ) Ich weiss nicht ob das einfacher geht aber so sollte es funzen
rechtsklick abfangen und gucken ob er über der region stattgefunden hat in dem sich dein steuerelement befunden hat.
das funzt auf jeden fall habst selber öfter benutzt...

zu 5) this->SetWindowText("BLABLA") sollte funzen

zu 2) eventuell kannst du das was mit PreTranslatemassage richten

zu3) weiss ich nicht aus dem hut

zu4) siehe 3
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
26.02.2004, 18:20 Uhr
~_JOat
Gast


1) ich hab jetzt einfach OnRButtonDown hinzugefügt..... leider gehts dann nur wenn man das eingabefeld auf deaktiviert stellt ansonsten kommt das windoof kontextmenü

2) das dachte ich mir auch leider hab ich keinen plan wie das funktioniert (accelerator und so)

3/4) schade

5) danke.... wie kann ich ich den alten fenstertitel (der unter den eigenschaften des dialoges eingegeben wurde) festsetzen und nur was hinzufügen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
26.02.2004, 18:39 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


zu 5) naja da würd ich halt erst den alten auslesen und dann den neuen hinzufügen


C++:
CString str;
this->GetWindowText(str);
str+=" Dieser Text kommt noch dazu";
this->SetWindowText(str);



zu 2) ich glaub da hat mike nen plan...


zu 1) hmm entweder ich hab dich nicht verstanden oder du mich nicht...
ich skizzere mal wie ich das meine aber vorsicht ist nur so ins forum gehackt


C++:
void MyDlg::OnRButtonDown(UINT nFlags, CPoint point){
    CDialog::OnRButtonDown(nFlags, point);

    CRect rect;
    CRgn WndRgn;
    
    (GetDlgItem(IDC_...))->GetWindowRect(&rect); //oder wie auch immmer dein steuerelement heisst
    this->ScreenToClient(&rect);

    WndRgn.CreateRectRgn(rect.TopLeft().x , rect.TopLeft().y , rect.BottomRight().x, rect1.BottomRight().y);
    
if(WndRgn.PtInRegion(point)){

//hier führst du den von dir gewünschten code aus wenn aufs steuerelement IDC_... geklickt wurde...
}

}


--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
26.02.2004, 19:19 Uhr
~_JOat
Gast


hab dich schon verstanden .... funktioniert aber auch nur wenn das eingabefeld deaktiviert worden ist..... ansonsten kommt das kontextmenü mit einfügen / ausschneiden ......


wenn du willst kann ich dir das ganze gern ma schicken
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
26.02.2004, 22:22 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


habs gerade eben mal selber probiert...

spontan fällt mir nur folgendes "zugegebener maßen" nicht so ganz zufriedenstellende lösung ein


C++:
BOOL MyDlg::PreTranslateMessage(MSG* pMsg)
{

//ich habs jetzt mal mit control und F4 gemacht VK_ENTER wollte der irgendwie nicht schlucken wenn nicht musst du halt ne andere taste als enter nehmen
    if(pMsg->message == WM_KEYDOWN){
    
        if(control_pressed && pMsg->wParam==VK_F4)
            AfxMessageBox("CONTROL and F4 pressed");

        if(pMsg->wParam == VK_CONTROL)
            control_pressed=1;
        

    }

    if(pMsg->message == WM_KEYUP && pMsg->wParam == VK_CONTROL)
        control_pressed=0;
    


    if(pMsg->message == WM_RBUTTONDOWN){

        CRect rect;
        CRgn WndRgn;
        (GetDlgItem(IDC_EDIT1))->GetWindowRect(&rect); //oder wie auch immmer dein steuerelement heisst
        this->ScreenToClient(&rect);

        WndRgn.CreateRectRgn(rect.TopLeft().x , rect.TopLeft().y , rect.BottomRight().x, rect.BottomRight().y);
    
        CPoint point;
        GetCursorPos(&point); //interressant ist an der stelle das auch point=pMsg->pt; funzt
        ScreenToClient(&point);

        if(WndRgn.PtInRegion(point)){
            AfxMessageBox("RightKlick on Edit");
        }

    }


    return CDialog::PreTranslateMessage(pMsg);
}




control_pressed musst du im header deines dialoges als membervariable anlegen und in ONInitDialog auf 0 setzen


ach so andere möglichkeit bei dem eingabefeld wäre es in pretranslate nur zu deaktivieren und in onrbuttondown am ende wieder zu aktivieren...

Hope this helps

Gruss Windalf
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 26.02.2004 um 22:55 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
27.02.2004, 00:20 Uhr
~_JOat
Gast


ok das hilft schon ma weiter...... VK_RETURN geht anstelle VK_ENTER nur hab ich dann im Editfeld n umbruch.... dh. ich muss jedesma die zeile wieder löschen .... ich denke ma das ich das in griff bekomm
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: