CEdit, WM_PASTE - PullRequest
       47

CEdit, WM_PASTE

2 голосов
/ 03 ноября 2010

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

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

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

Приветствия

Ответы [ 2 ]

3 голосов
/ 03 ноября 2010

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

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

1 голос
/ 16 июня 2016

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

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

...