...
IntPtr handle= WindowFromPoint(Control.MousePosition);
...
当鼠标在combobox的下拉列表区时,得到的handle并不是其父窗体的handle,这是为何?高手给点资料何如?

解决方案 »

  1.   

    [DllImport("user32.dll")]
        public static extern IntPtr WindowFromPoint(Point Point);
        [DllImport("user32.dll")]
        public static extern IntPtr GetParent(IntPtr hWnd);
        private void timer1_Tick(object sender, EventArgs e)
        {
            IntPtr vHandle = WindowFromPoint(Control.MousePosition);
            while (vHandle != IntPtr.Zero && vHandle != Handle)
                vHandle = GetParent(vHandle);
         }
      

  2.   

    下拉列表区是Combobox内置的NativeWindow,本地化窗口。
      

  3.   


    这样貌似得不到combobox父窗口的handle
      

  4.   

    怎么样通过这个NativeWindow的handle得到combobox的父窗口的handle?
      

  5.   


            [DllImport("user32.dll")]
            public static extern IntPtr GetActiveWindow();用这个得到的是当前活动窗口的句柄。也就是你要的combobox所在的窗体的句柄。