MFC SDI текстов редактор

Създавам приложение в стил MFC SDI Explorer (има разделителна лента и десният панел е областта за редактиране на текст, левият панел е дървовидният изглед)

Моят десен панел е CRichEditView.

Искам да мога да открия кога даден потребител е редактирал текста, така че да бъде зададен флаг, който да показва, че е направена промяна, но не е запазена. Опитах няколко начина да направя това, напр. хваща WM_KEYDOWN в PreTranslateMessage, но това улавя всичко и не позволява натисканията на клавиши да редактират изгледа. Също така се опитах да добавя ON_WM_KEYDOWN() към картата на съобщенията в MyView.cpp. Отново, това изглежда предотвратява влиянието на натисканията на клавиши върху текста в изгледа. Искам да позволя на потребителя да редактира текста в изгледа, но приложението да знае, че това е направено.

Моля, помогнете - търсих с часове начини да направя това.

Много благодаря


person user686027    schedule 31.03.2011    source източник


Отговори (1)


Добавянето на ON_WM_KEYDOWN() към картата на съобщенията вероятно е правилният подход. Трябва да се уверите, че вашата реализация на метода OnKeyDown() извиква метода на базовия клас, така че съобщението да бъде предадено по подходящ начин.

person DavidK    schedule 31.03.2011
comment
ах да, първо опитах pWnd-›OnKeyDown(), което предизвика грешки при компилиране, но след това опитах CWnd::OnKeyDown, което проработи. - person user686027; 04.04.2011
comment
много благодаря за помощта. Знаете ли защо CWnd::OnKeyDown() работи, но pWnd-›OnKeyDown() не? - person user686027; 04.04.2011