您可以开始发送选择更改的事件消息;
SendMessageW(hWndEdit, EM_SETEVENTMASK, 0, ENM_SELCHANGE);
然后像这样处理消息;
case WM_NOTIFY:
switch (((LPNMHDR)lParam)->code)
{
case EN_SELCHANGE:
SendMessageW(hWndEdit, EM_SETEVENTMASK, 0, ENM_NONE);
SendMessageW(hWndEdit, EM_SETCHARFORMAT, SCF_ALL, (LPARAM)&format);
SendMessageW(hWndEdit, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&sformat);
SendMessageW(hWndEdit, EM_HIDESELECTION, 1, 0);
SendMessageW(hWndEdit, EM_SETEVENTMASK, 0, ENM_SELCHANGE);
break;
}
但是,如果选择快速更改,这会导致一些闪烁。奇怪的是,当您尝试自定义某些东西时,win32 API 会产生大量需要处理的问题。