お人形がCtrlキーを踏んでいるらしくキーがおかしい。のでキーボードをグローバルフックかけて入力無効にしてみた。

GetModuleHandle(NULL)は自分自身。普通は外部DLLにしてDLLの名前を指定する(こうしないとスレッドセーフになんないらしい そんなん考慮しねぇwww きちんと別スレッドからexe ロードしてる気がするが...)。AfxGetApp()->m_hInstance でも良かったかな...

HHOOK m_hHook;

LRESULT CALLBACK MyKeyboardProc(int code, WPARAM wParam, LPARAM lParam)
{
    return TRUE;
}

void CKeyboardHookDlg::OnBnClickedButton1()
{
	if(m_hHook != NULL) return;

#if (_WIN32_WINNT >= 0x0400)
	m_hHook = SetWindowsHookEx( WH_KEYBOARD_LL, MyKeyboardProc, GetModuleHandle(NULL), 0); /* 低レベルHook */
#else
	m_hHook = SetWindowsHookEx( WH_KEYBOARD, MyKeyboardProc, GetModuleHandle(NULL), 0);
#endif
	SetWindowText(_T("キーボードHooked"));
}

BOOL CKeyboardHookDlg::DestroyWindow()
{
	UnhookWindowsHookEx(m_hHook);
	m_hHook = NULL;
	return CDialog::DestroyWindow();
}

これだけじゃだめで、Hook解除しながらソフトウェアキーボードで二、三回Ctrlを押してあげなきゃダメだったけど。

配慮する場合は...

; KeyboardHookDll.def : DLL のモジュール パラメータを宣言します。

LIBRARY      "KeyboardHookDll"

EXPORTS
    ; 明示的なエクスポートはここへ記述できます
	MyKeyboardProc


LRESULT CALLBACK MyKeyboardProc(int code, WPARAM wParam, LPARAM lParam)
{
    return TRUE;
}
#ifdef DEBUG
#    pragma comment(lib, "./Debug/KeyboardHookDll.lib")
#else
#    pragma comment(lib, "./Release/KeyboardHookDll.lib")
#endif

LRESULT __declspec(dllimport) CALLBACK MyKeyboardProc(int, WPARAM, LPARAM);

...

		m_hHook = SetWindowsHookEx( WH_KEYBOARD_LL, MyKeyboardProc, GetModuleHandle(_T("KeyboardHookDll.dll")), 0); /* 低レベルHook */

まぁ注意点はDestroyWindowできちんとunhookかけましょうっと。