Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Перенос по словам..


Автор: oper54 10.6.2005, 16:26
Надо организовать перенос по словам. Подскажите как...
Нашел в мсдн такую вот штуку
Код

                case IDM_WRAP: 
                    SendMessage(hwndEdit, 
                                EM_SETWORDBREAKPROC, 
                                (WPARAM) 0, 
                                (LPARAM) (EDITWORDBREAKPROC) WordBreakProc); 

                    SendMessage(hwndEdit, 
                                EM_FMTLINES, 
                                (WPARAM) TRUE, 
                                (LPARAM) 0); 

                    SendMessage(hwndEdit, 
                                EM_SETSEL, 
                                0, -1);             // select all text 

                    SendMessage(hwndEdit, WM_CUT, 0, 0); 

                    SendMessage(hwndEdit, WM_PASTE, 0, 0); 
                    break;

А про WordBreakProc - ничего толком нет, кроме, того как она должна выглядить,
как этой функцией пользоваться?
Если в этой то функции надо вручную делать перенос по словам, то какой тогда в ней смысл..

Автор: Fantasist 10.6.2005, 20:33
oper54

google "EDITWORDBREAKPROC". Эта функция должна выполнять несколько несложных действий.


Автор: Гость_oper54 12.6.2005, 13:26
Ничего пока не нашел, но все равно спасибо....

Автор: Arush 18.7.2005, 22:04
Ага, пытался я ее использовать...
Для переноса еще нормально, но как обработать то что система шлет по Ctrl-Right я пока так и не понял.
По Ctrl-Left шлется WB_LEFT.
А по Ctrl-Right шлется WB_ISDELIMITER.
1) Если курсор на разделителе - тогда приходит WB_RIGHT(curpos) - я возвращаю newpos, следом приходит WB_RIGHT(newpos+1) - прыгаем через слово ( как в стандартном обработчике).
2) Но если курсор находится не на разделителе то приходит WB_LEFT(curpos) - я возвращаю newpos, следом приходит WB_RIGHT(newpos+1).

В первом случае по последнему запросу мы должны пропустить одно слово, а во втором - ДВА! И как различить эти случаи я так и не понял.

ЗЫ. Поиск по инету ничего не дал, кроме того, что я не первый кто не может это понять smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)