首页 > 其他分享 >MFC-GetTopWindow获取指定窗口的子窗口中最顶层的窗口句柄

MFC-GetTopWindow获取指定窗口的子窗口中最顶层的窗口句柄

时间:2023-04-26 09:14:24浏览次数:25  
标签:MFC 窗口 Format 句柄 OutputDebugString str hWnd

 

    //GetTopWindow
    HWND hWnd = ::FindWindow(_T("#32770"), _T("测试程序"));
    if (!hWnd) {
        AfxMessageBox(_T("请打开测试程序"));
        ExitProcess(0);
    }
    CString str;
    str.Format(_T("主窗口句柄:hWnd=%d\r\n"), hWnd);
    ::OutputDebugString(str);

    HWND hWnd1 = ::FindWindowEx(hWnd, NULL, _T("Static"), _T("静态文本框"));
    str.Format(_T("静态文本框句柄:hWnd1=%d\r\n"), hWnd1);
    ::OutputDebugString(str);

    HWND hWnd2 = ::FindWindowEx(hWnd, NULL, _T("Edit"), NULL);
    str.Format(_T("编辑框句柄:hWnd2=%d\r\n"), hWnd2);
    ::OutputDebugString(str);

    HWND hWnd3 = ::FindWindowEx(hWnd, NULL, _T("Button"), _T("按钮"));
    str.Format(_T("按钮句柄:hWnd3=%d\r\n"), hWnd3);
    ::OutputDebugString(str);


    ::BringWindowToTop(hWnd2);
    
    HWND hWnd4 = ::GetTopWindow(hWnd);//获取指定窗口的子窗口中最顶层的窗口句柄
    /*
    参数:HWND hWnd 被查序的父窗口的句柄。如果该参数为NULL,函数返回Z序顶部的窗口句柄
    【这个函数只能用在同一个程序中父子窗口】
    */

    str.Format(_T("顶部窗口句柄:hWnd4=%d\r\n"), hWnd4);
    ::OutputDebugString(str);

    
    //返回的顶部窗口是编辑框

    ::BringWindowToTop(hWnd3);
    //把按钮放到Z序的顶部
    hWnd4 = ::GetTopWindow(hWnd);
    str.Format(_T("顶部窗口句柄:hWnd4=%d\r\n"), hWnd4);
    ::OutputDebugString(str);

    //返回的顶部窗口是编辑框

测试程序下载:

链接:https://pan.baidu.com/s/1f4e8R5wi6dnu-Ut4Hop5Vg
提取码:6666

 

 

 

 

 

 

 

标签:MFC,窗口,Format,句柄,OutputDebugString,str,hWnd
From: https://www.cnblogs.com/liming19680104/p/17354595.html

相关文章

  • selenium笔记之多窗口
    在使用selenium中,会经常遇到,校验弹窗,或者是多标签之类的,会发现在当前webdriver中.查找想检查的元素,比如弹窗上某个元素就查找不到了那么就出现了一个句柄的概念在Selenium中,可以使用`driver.window_handles`方法获取当前浏览器中所有窗口的句柄。该方法返回一个列表,其中包含每......
  • MFC-BringWindowToTop将指定窗口设置到Z序的顶部
     HWNDhWnd=::FindWindow(_T("Notepad"),NULL);BOOLb=::BringWindowToTop(hWnd);//将指定窗口设置到Z序的顶部/*如果窗口为顶层窗口,则该窗口被激活;如果窗口为子窗口,则相应的顶级父窗口被激活参数:HWNDhWnd设置到Z序顶部的窗口句柄返回值:......
  • 鼠标穿透控制下层窗口的滚动条
    /*应:我怕生!:linux下在非激活的窗口上也能用滚轮.并且窗口不会被提升..我觉得这设置好好哦.可惜Windows下不知道怎么弄.*/;例子:鼠标滚轮穿透控制其下窗体垂直滚动条的位置。;因为焦点控件随时更新,所以需要用到v1.0.43.06+本版中的ControlGetHwnd命令。;ControlGetHwnd命......
  • [AHK]为通达信增加打开关闭交易窗口的功能热键
    用文华财经习惯用空格呼叫出交易界面,通达信软件(招商证券)没有相应热键,便用AutoHotkey来帮它定义一个。#Persistent#SingleInstanceForceControl:="AfxWnd424"#IfWinActiveahk_classTdxW_MainFrame_ClassSpace::ControlClick,%Control%,,,,,NA#If华泰是426......
  • MFC-ScreenToClient屏幕坐标转换为客户区坐标
     win32APIPOINTpoint={20,50};HWNDhWnd=GetSafeHwnd();BOOLb=::ScreenToClient(hWnd,&point);//屏幕坐标转换为客户区坐标/*参数1:HWNDhWnd窗口句柄参数2:LPPOINTlpPoint屏幕坐标点函数成功后,保......
  • [AHK]打开同花顺委托下单窗口在同花顺(v8.60.13) 试验可用
    DetectHiddenWindows,onSetTitleMatchMode,Fast;主程序IfWinExist,ahk_class#32770ahk_exexiadan.exe ToolTip,找到下单窗口else{ open_xiadan() loop{ Sleep,1000 ifA_index>20 { MsgBox下单窗口呼叫失败 break } }UntilWinExist(ahk_class......
  • ahk模式窗口
    OwnDialogs:命令Gui+OwnDialogs可以指定窗体上的每个线程(例如ButtonOK子过程)为子窗体,可以使窗体上激活的如MsgBox,InputBox,FileSelectFile,和FileSelectFolder 对话框为当前窗体的子窗体。这些对话框都为模式对话框,也就是说用户必须先关闭这些对话框才能和他们的父窗......
  • LeetCode 周赛 342(2023/04/23)容斥原理、计数排序、滑动窗口、子数组 GCB
    本文已收录到AndroidFamily,技术和职场问题,请关注公众号[彭旭锐]提问。大家好,我是小彭。前天刚举办2023年力扣杯个人SOLO赛,昨天周赛就出了一场Easy-Easy-Medium-Medium的水场,不得不说LeetCode是懂礼数的......
  • MFC-GetClientRect获取窗口客户区的坐标
     win32APIRECTrect;CWnd*pWnd=GetDlgItem(IDC_LIST1);HWNDhWnd=pWnd->GetSafeHwnd();BOOLb=::GetClientRect(hWnd,&rect);//获取窗口客户区的坐标/*参数1:HWNDhWnd窗口句柄参数2:LPRECTlpRect返回客户区坐标......
  • 滑动窗口最大值
    给你一个整数数组nums,有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的k个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。1.暴力遍历(超时)暴力法classSolution{public:vector<int>maxSlidingWindow(v......