1 /****************************************************************************
3 ** Copyright (C) Qxt Foundation. Some rights reserved.
5 ** This file is part of the QxtGui module of the Qt eXTension library
7 ** This library is free software; you can redistribute it and/or modify it
8 ** under the terms of th Common Public License, version 1.0, as published by
11 ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY
12 ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY
13 ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR
14 ** FITNESS FOR A PARTICULAR PURPOSE.
16 ** You should have received a copy of the CPL along with this file.
17 ** See the LICENSE file and the cpl1.0.txt file included with the source
18 ** distribution for more information. If you did not receive a copy of the
19 ** license, contact the Qxt Foundation.
21 ** <http://libqxt.sourceforge.net> <foundation@libqxt.org>
23 ****************************************************************************/
24 #include "qxtdesktopwidget.h"
25 #include <qt_windows.h>
27 static WindowList qxt_Windows;
29 BOOL CALLBACK qxt_EnumWindowsProc(HWND hwnd, LPARAM lParam)
32 if (::IsWindowVisible(hwnd))
37 WindowList QxtDesktopWidget::windows()
40 HDESK hdesk = ::OpenInputDesktop(0, FALSE, DESKTOP_READOBJECTS);
41 ::EnumDesktopWindows(hdesk, qxt_EnumWindowsProc, 0);
42 ::CloseDesktop(hdesk);
46 WId QxtDesktopWidget::activeWindow()
48 return ::GetForegroundWindow();
51 WId QxtDesktopWidget::findWindow(const QString& title)
53 std::wstring str = title.toStdWString();
54 return ::FindWindow(NULL, str.c_str());
57 WId QxtDesktopWidget::windowAt(const QPoint& pos)
62 return ::WindowFromPoint(pt);
65 QString QxtDesktopWidget::windowTitle(WId window)
68 int len = ::GetWindowTextLength(window);
71 wchar_t* buf = new wchar_t[len+1];
72 len = ::GetWindowText(window, buf, len+1);
73 title = QString::fromStdWString(std::wstring(buf, len));
79 QRect QxtDesktopWidget::windowGeometry(WId window)
83 if (::GetWindowRect(window, &rc))
86 rect.setBottom(rc.bottom);
87 rect.setLeft(rc.left);
88 rect.setRight(rc.right);