RichEdit - Feld & Link
-
tach zusammen....
ich bin c++ neuling und versuchen einen Text als Link in einem RichEdit - Feld darzustellen! Man soll diesen hinterher auch anklicken können so das sich die Seite im Browser öffnet !!
Für Hilf wäre ich dankbar
Danke in voraus!!!!
mfg hamster
-
Servus,
als kleines Tut für ein Richeditfeld empfiehlt sich:
http://www.functionx.com/visualc/controls/richedit.htm
Für dein Problem solltest du dir in der Klasse CRicheditCtrl dir mal "SetSelectionCharFormat()" anschauen. Als Paramater nimmt diese einmal "CHARFORMAT" und "CHARFORMAT2". Unter "CHARFORMAT2" findet sich bei dwEffects der Parameter "CFE_LINK".
kleines Bsp.:
CRichEditCtrl* RichEditor = (CRichEditCtrl*)GetDlgItem(ID_DEINES_RICHEDIT); RichEditor->SetSel(0, 12); //Markierungsbereich, für den Text CHARFORMAT Cfm; RichEditor->GetSelectionCharFormat(Cfm); Cfm.cbSize = sizeof(CHARFORMAT); Cfm.dwMask = CFM_BOLD | CFM_UNDERLINE; Cfm.dwEffects ^= CFE_BOLD | CFM_UNDERLINE; RichEditor->SetSelectionCharFormat(Cfm); RichEditor->SetFocus();
Damit würdest du den Text nun Fett und Unterstrichen ausgeben. Wie das alles genau geht, steht in dem Tut.
Viel Spass
*winke*
Hellsgore
-
Danke schonmal !!!!
-
Also irgendwie check ich das nich mach alles wies da steht aber es passiert nix!! Ist das CFE_LINK vieleicht erst ab ner bestimmten version vorhanden oder so... ???
-
hab folgendes gefunden.... kann mir das vieleicht jemand erklären?
-
Also,
guckst du:
.h
public: afx_msg void OnEnLinkRichedit21(NMHDR *pNMHDR, LRESULT *pResult);
.cpp
BEGIN_MESSAGE_MAP(CTestFTPDlg, CDialog) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() //}}AFX_MSG_MAP ON_NOTIFY(EN_LINK, IDC_RICHEDIT21, OnEnLinkRichedit21) END_MESSAGE_MAP() void CDeinDlg::OnTackerDieKatz() { m_ctrRichEdit.SetWindowText("TackerdieKatzandieDeck"); m_ctrRichEdit.SetSel(0, 17); CHARFORMAT Cfm; m_ctrRichEdit.GetSelectionCharFormat(Cfm); Cfm.cbSize = sizeof(CHARFORMAT); if(Cfm.dwMask & CFM_LINK) { Cfm.dwEffects ^= CFE_LINK; } else { Cfm.dwEffects |= CFE_LINK; } Cfm.dwMask = CFM_LINK; m_ctrRichEdit.SetSelectionCharFormat(Cfm); m_ctrRichEdit.SetFocus(); m_ctrRichEdit.SetEventMask(ENM_LINK); } //Eigenschaften vom Richedit und dann Methode für EN_LINK einfügen void CDeinDlg::OnEnLinkRichedit21(NMHDR *pNMHDR, LRESULT *pResult) { ENLINK *pEnLink = reinterpret_cast<ENLINK *>(pNMHDR); if (pEnLink->msg == WM_LBUTTONDOWN) { ShellExecute(NULL, "open", "www.c-plusplus.net", NULL, NULL, SW_SHOW); } *pResult = 0; }
Klickst du in deinem Richeditfeld auf "TackerdieKatzandieDeck" öffnet sich c-plusplus.net...
Viel Spaß
*winke*
HellsgorePS: noch ein ratsamer Link: http://www.thecodeproject.com/richedit/cricheditctrlgs.asp