2010-11-03 34 views
2

disons que j'ai un gestionnaire du message WM_PASTE dans un descendant CEdit:CEdit, WM_PASTE

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

et disons que dans certains cas, je veux déclencher le comportement par défaut pour la pâte de cette méthode . Comment fait-on ça? CEdit :: onpaste n'existe pas ...

Vive

Répondre

3

appel CWnd::DefWindowProc, en lui transmettant WM_PASTE, wParam et lParam.

Généralement les gestionnaires OnXxx dans les classes de base se composent d'une seule ligne qui appelle DefWindowProc - si CEdit::OnPaste existait, c'est ce que cela ferait.

+0

merci, ça marche vraiment :) – Greg

1

Vous pouvez également simplement appeler CWnd :: Default. Cette fonction, qui est définie dans wincore.cpp, utilise _afxThreadState.GetData() pour obtenir les informations sur le message en cours de traitement, puis appelle CWnd :: DefWindowProc. Je mentionne cela parce que si vous avez utilisé la macro ON_WM_PASTE() dans la table des messages et n'avez donc aucun paramètre à la fonction OnPaste, la solution mentionnée par Tim Robinson ne fonctionnera pas car il n'y a pas de paramètres wParam et lParam à transmettre CWnd :: DefWindowProc.