私のwin32アプリケーションで、どのコントロールでコピーが発生するかを特定する方法を知りたいです。たとえば、EditBox、RichEdit など。
コピーがアプリ内で行われたのか、アプリ外で行われたのかを把握するために、次の方法を使用しました。
//global variables
HWND hWnd;
DWORD ProcId;
HWND nextHandle;
DWORD currentID;
//then I call two functions on form create
currentID=GetCurrentProcessId();
nextHandle = SetClipboardViewer(Handle);
//then on WM_DRAWCLIPBOARD message I call
hWnd = GetClipboardOwner();
GetWindowThreadProcessId(hWnd,&ProcId);
// functions and checking by IDs whether
// the copying took place in or outside my application
if(lpdwProcessId==currentID) {...}
正常に動作しますが、これは (私のアプリの) どのコントロールでコピーが発生したかを検出する方法ではありません。