Rich Edit: CFM_LINK и CFE_LINK проблема

Я пытаюсь добавить гиперссылку в элемент управления rich edit, отправив сообщение о форматировании символа со значением CFM_LINK CFE_LINK в моей структуре CHARFORMAT2.

Но похоже, что расширенное редактирование не отображает ссылки, и если я отправлю некоторые другие значения (например, CFM_COLOR) вместе с CFM_LINK, они также не будут иметь никакого эффекта ….

Вот мой код:

LoadLibrary("Msftedit.dll");
/*rchwnd1 is a HWND, I declared it as a global variable*/
rchwnd1 = CreateWindowEx(0,"RICHEDIT50W",TEXT(""),
WS_CHILD|WS_VISIBLE|WS_BORDER|ES_MULTILINE|ES_READONLY|WS_VSCROLL,
0, 30, rect.right, rect.bottom-30,
hWnd, (HMENU)1, GetModuleHandle(NULL), NULL);
SendMessage(rchwnd1, EM_SETEVENTMASK, 0, ENM_LINK);

Затем:

CHARFORMAT2 cf; CHARRANGE cr; cr.cpMax = -1; cr.cpMin = -1;
cf.dwMask = CFM_LINK; cf.dwEffects = CFE_LINK;
cf.cbSize = sizeof(CHARFORMAT2);
SendMessage(rchwnd1,EM_EXSETSEL,0,(LPARAM)&cr);
SendMessage(rchwnd1,EM_SETCHARFORMAT,SCF_SELECTION,(LPARAM)&cf); //This function has returned 1,
//so I think it wasn't failed, since if it fails it should return 0...
SendMessage(rchwnd1,EM_REPLACESEL,FALSE,(LPARAM)text.c_str()); //text is a std string which I've declared it before
/*If I write cf.dwMask = CFM_COLOR; cf.crTextColor = 0x0000FF;
I will see a red text; but if I write
cf.dwMask = CFM_COLOR|CFM_LINK; cf.crTextColor = 0x0000FF; dwEffects = CFE_LINK;
I will not able to see a colored text...*/

И я написал эти коды в моей функции WindowProc для получения уведомления EN_LINK:

    case WM_NOTIFY:{
switch (((LPNMHDR)lParam)->code) {
case EN_LINK: {
//I wrote a MessageBox function there, so if WindowProc receive a EN_LINK message
//there would be a Message box, but actually it never appears
break;
}
}
break;
}

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]