コード例 #1
0
        private void HookChildControl(Control ctrl)
        {
            if (WinAPI.IsWindow(ctrl.Handle))
            {
                m_WndProcMap[ctrl.Handle]
                    = WinAPI.GetWindowLongPtr(ctrl.Handle, Constants.GWL_WNDPROC);

                WinAPI.SetWindowLongPtr(ctrl.Handle
                                        , Constants.GWL_WNDPROC
                                        , Marshal.GetFunctionPointerForDelegate(m_CtrlWndProcDelegate)
                                        );
            }

            if (!ctrl.HasChildren)
            {
                return;
            }
            foreach (Control child in ctrl.Controls)
            {
                HookChildControl(child);
            }
        }