2010-11-03 7 views
2

допустим у меня есть обработчик этого wm_paste сообщения в CEdit потомка:CEdit, WM_PASTE

LRESULT CMyEdit::OnPaste(WPARAM wParam, LPARAM lParam) 
{ 
//do some processing 
return 0; 
} 

и скажем, что в некоторых случаях, я хочу, чтобы вызвать поведение по умолчанию для вставки из этого метода , Как мне это сделать? CEdit :: OnPaste не существует ...

Приветствия

ответ

3

вызов CWnd::DefWindowProc, передавая его WM_PASTE, wParam и lParam.

Обычно обработчики OnXxx в базовых классах состоят из одной строки, которая вызывает DefWindowProc - если существует CEdit::OnPaste, вот что бы оно могло сделать.

+0

спасибо, это действительно работает :) – Greg

1

Вы также можете просто вызвать CWnd :: Default. Эта функция, определенная в wincore.cpp, использует _afxThreadState.GetData() для получения информации о сообщении, которое в настоящее время обрабатывается, а затем вызывает CWnd :: DefWindowProc.

Я упоминаю это потому, что если вы использовали макрос ON_WM_PASTE() в карте сообщений и, следовательно, не имели параметров для функции OnPaste, то решение, упомянутое Тимом Робинсоном, не будет работать, поскольку параметры wParam и lParam не будут переданы CWnd :: DefWindowProc.

 Смежные вопросы

  • Нет связанных вопросов^_^