將窗口移動(dòng)到前端, BringWindowToTop() 的問題 有一段代碼,是在我們的應(yīng)用程序中將其他應(yīng)用程序的窗口移動(dòng)到最前端,當(dāng)我們的程序在 Vista 下運(yùn)行的時(shí)候遇到了些問題,有時(shí)候被移動(dòng)窗口只是閃動(dòng)任務(wù)欄上的按鈕,并未能將窗口移動(dòng)到前方來. 研究了一下,發(fā)現(xiàn)是否能夠移動(dòng)成功和當(dāng)前自身進(jìn)程所附加的輸入上下文有關(guān), 參見
          WIN32 API AttachThreadInput()...
           
          寫了個(gè) MyBringWindowToTop() 如下, 這是個(gè) draft 把我用到過的能把窗口拿到最前方的 API 都羅列在里面了, 也沒有正確的返回值, 供參考.
           
          BOOL MyBringWindowToTop(HWNDhWnd)
          {
            
              HWNDhFrgWnd = ::GetForegroundWindow();
              AttachThreadInput( GetWindowThreadProcessId(hFrgWnd, NULL), GetCurrentThreadId(), TRUE );
              ::SetForegroundWindow(hWnd);
              ::BringWindowToTop(hWnd);
             
              if(!::BringWindowToTop(hWnd))
              {
                  printf("BringWindowToTop Error %d\n", GetLastError());
              }
              else
              {
                  printf("BringWindowToTop OK\n");
              }
              if(!::SetForegroundWindow(hWnd))
              {
                  printf("SetForegroundWindow Error %d\n", GetLastError());
              }
              else
              {
                 printf("SetForegroundWindow OK\n");
              }
             
              SwitchToThisWindow(hWnd, TRUE);
             
              AttachThreadInput(GetWindowThreadProcessId(hFrgWnd, NULL),
                  GetCurrentThreadId(), FALSE);
           
              returnTRUE;
          }

           

          posted on 2010-01-04 10:01 -274°C 閱讀(850) 評論(0)  編輯  收藏 所屬分類: C++

          常用鏈接

          留言簿(21)

          隨筆分類(265)

          隨筆檔案(242)

          相冊

          JAVA網(wǎng)站

          關(guān)注的Blog

          搜索

          •  

          積分與排名

          • 積分 - 916114
          • 排名 - 40

          最新評論

          主站蜘蛛池模板: 石屏县| 温州市| 邵武市| 浠水县| 佛山市| 新民市| 宁明县| 宁强县| 翼城县| 石城县| 长岛县| 丹巴县| 新野县| 南乐县| 乳山市| 苏州市| 徐水县| 汾西县| 西乡县| 罗平县| 桃源县| 湖北省| 木兰县| 香河县| 定边县| 汝阳县| 滦平县| 上思县| 徐水县| 湘潭县| 吴忠市| 乌兰察布市| 榆社县| 周宁县| 格尔木市| 大宁县| 新泰市| 壤塘县| 榆中县| 临潭县| 府谷县|