У меня есть 2 элемента управления CEdit в представлении, оба имеют одинаковый идентификатор.
В родительском окне я создал дескриптор ON_EN_CHANGE, чтобы поймать их сообщение редактирования.Так как редактирование любого из этих полей редактирования вызовет сообщение для функции дескриптора, я хочу найти способ отличить, из какого элемента управления редактирования это происходит.
Так что в моей функции дескриптора я использовал GetCurrentMessage ()получить объект MSG.и это lparam должен быть указателем на вызывающий элемент управления редактирования.
Но когда я изменяю его, он возвращает исключение, говорящее «место чтения нарушения доступа»
//onCreate function
text1->Create(WS_CHILD | WS_VISIBLE | WS_BORDER | WS_HSCROLL | ES_MULTILINE | WS_VSCROLL, \
CRect(300,200,400,300), this, 1);
text2->Create(WS_CHILD | WS_VISIBLE | WS_BORDER | WS_HSCROLL | ES_MULTILINE | WS_VSCROLL, \
CRect(100, 100, 300, 200), this, 1);
//parent class
BEGIN_MESSAGE_MAP(CScratchView, CView)
...
ON_EN_CHANGE(1, chandle)
END_MESSAGE_MAP()
//Message handle function
void CScratchView::chandle()
{
const MSG* lst = GetCurrentMessage();
if (lst->lParam != NULL) {
CEdit* sa = (CEdit*) lst->lParam;
sa->SetWindowTextW(_T("what"));
}
Поскольку оба элемента управления редактированием имеют одинаковый дескрипторфункция, мне нужно знать, какой из них вызывает.Я не уверен, что это правильный способ сделать это.но я думаю, что это должно сработать.
Любое предложение было бы замечательно.спасибо