3

これが私の.mmファイルです

#include "windowmanagerutils.h"

#ifdef Q_OS_MAC
#import </System/Library/Frameworks/ApplicationServices.framework/Frameworks/CoreGraphics.framework/Headers/CGWindow.h>

QRect WindowManagerUtils::getWindowRect(WId windowId)
{
    CFArrayRef windows = CGWindowListCreate(kCGWindowListOptionOnScreenOnly, kCGNullWindowID);
    return QRect();
}

QRect WindowManagerUtils::getClientRect(WId windowId)
{
    return QRect();
}

QString WindowManagerUtils::getWindowText(WId windowId)
{
    return QString();
}

WId WindowManagerUtils::rootWindow()
{
    QApplication::desktop()->winId();
}

WId WindowManagerUtils::windowFromPoint(const QPoint &p, WId parent, bool(*filterFunction)(WId))
{
    return NULL;
}

void WindowManagerUtils::setTopMostCarbon(const QWidget *const window, bool topMost)
{
    if (!window)
    {
        return;
    }

    // Find a Cocoa equivalent for this Carbon function
    // [DllImport("/System/Library/Frameworks/Carbon.framework/Versions/Current/Carbon")]
    // OSStatus ret = HIViewSetZOrder(this->winId(), kHIViewZOrderAbove, NULL);
}
#endif

リンカーは、「_CGWindowListCreate」が未定義であると言っています。どのライブラリにリンクする必要がありますか? Apple のドキュメントは、MSDN のように、何を含めたりリンクしたりするかを示すのにあまり役に立ちません。また#import <CGWindow.h>、絶対パスを指定する必要がありました...それを回避する方法はありますか?

4

1 に答える 1

6

CGWindowListCreate関数はQuartz Window Servicesの一部です。対応するフレームワークは、 のApplicationServices下にあり/System/Library/Frameworks/ます。

<ApplicationServices/ApplicationServices.h>そのため、ファイルの先頭に を含めて、-framework ApplicationServicesオプションにリンクするだけです。

于 2010-05-27T10:35:22.750 に答える