zoukankan      html  css  js  c++  java
  • WinCE GetForegroundWindow 使用的困惑

    此问题没有解决,也没有搞清楚什么!在此提出,以备遇到同样/类似问题的人参考。

    在显示框架的基础上,增加如下防止异常的代码后,某一项目 导航加载时没有加载中的界面显示;若没有此段代码,则可以显示导航启动时的加载中界面。
    分析此段代码,在进入导航功能时,此段代码除了获取几个变量的值外,其实是没有执行任何代码的。所以很是困惑!
    试着注释代码、然后运行看究竟是哪一句引起上述现象的。最后发现是调用函数 GetForegroundWindow() 引起的。此函数为系统 API,功能是获取顶层窗体。难道在获取顶层窗体时,此函数还执行了其它动作?
    但是要对比 WinCE 系统顶层窗体与 HMI 系统的顶层窗体是否相同,就必要调用函数 GetForegroundWindow()。否则,如何判断呢?
    GetForegroundWindow() 函数在 MSDN 中的说明很是简单,没有其它任何需注意的事项。

     1 {
     2   HWND hWndFore = GetForegroundWindow();
     3   HWND hWndFrameTop;
     4 
     5   ZeroMemory(tcTitleCE,sizeof(TCHAR) * MAX_PATH);
     6   GetWindowText(hWndFore,tcTitleCE,MAX_PATH);
     7   if(WINDOW_ID_NAVI != wParam
     8 #if _THIRD_ALINK_FUNC_
     9     && WINDOW_ID_NAVI != wParam
    10 #endif
    11 #if _USER_MIRROR_LINK_THIRD_APP_
    12     && WINDOW_ID_MIRROLINK != wParam
    13 #endif
    14     )
    15   {
    16     hWndFrameTop = GuiMgrGetWindowHWND(GetDstWinID(wParam));
    17     if(NULL != hWndFrameTop)
    18     {
    19       if(hWndFore != hWndFrameTop && 0 != wcscmp(WNDNAME_FRONT_VOL_UI,tcTitleCE))
    20       {
    21         bIsWinHasShown = FALSE;
    22         RETAILMSG(_ENABLE_IMPORTANT_LOG_,(L"[MP]enter GUI Manager::Execute - 0x%x <> %s
    ",
    23           wParam,tcTitleCE));
    24       }
    25     }
    26   }
    27   else
    28   {
    29     // 三个第三方程序未做异常处理???
    30   }
    31 }

    最后,将代码修改为:

     1 {
     2   if(WINDOW_ID_NAVI != wParam
     3 #if _THIRD_ALINK_FUNC_
     4     && WINDOW_ID_NAVI != wParam
     5 #endif
     6 #if _USER_MIRROR_LINK_THIRD_APP_
     7     && WINDOW_ID_MIRROLINK != wParam
     8 #endif
     9     )
    10   {
    11     HWND hWndFrameTop = GuiMgrGetWindowHWND(GetDstWinID(wParam));
    12     if(NULL != hWndFrameTop)
    13     {
    14       HWND hWndFore = GetForegroundWindow();
    15       GetWindowText(hWndFore,tcTitleCE,MAX_PATH);
    16       if(hWndFore != hWndFrameTop && 0 != wcscmp(WNDNAME_FRONT_VOL_UI,tcTitleCE))
    17       {
    18         bIsWinHasShown = FALSE;
    19         RETAILMSG(_ENABLE_IMPORTANT_LOG_,(L"[MP]enter GUI Manager::Execute - 0x%x <> %s
    ",
    20           wParam,tcTitleCE));
    21       }
    22     }
    23   }
    24   else
    25   {
    26     // 三个第三方程序未做异常处理???
    27   }
    28 }
    29 #endif

    在启动导航时不在执行函数 GetForegroundWindow()。

  • 相关阅读:
    阿里云服务器配置
    linux 环境变量问题
    docker 常用操作
    docker 安装的nginx 的默认配置
    camera开发相关
    Ubuntu下使用Git
    Java web项目实现多附件上传
    Java web项目实现上传图片及时预览
    SQL Server游标【转】
    SQL Server游标的使用【转】
  • 原文地址:https://www.cnblogs.com/91program/p/5215760.html
Copyright © 2011-2022 走看看