0

Mac OSX でブラウザ用のプラグインを作成しようとしています。

ブラウザ プロセスから CGContext を取得しました。

だから私はそれで描くことができます。

私がしなければならないことは、この素晴らしいサイトで誰かが私にアドバイスするイベント処理用のウィンドウを作成することです:)

透明なウィンドウを簡単に作成できますが、そのウィンドウの適切な位置を移動できます。

ウィンドウのサイズは正確にわかっていますが、ウィンドウの原点を特定できます。

私が得たのはCGContextRefだけです。

これを試しました。

NSRect rect = [mywindow frame];

CGPoint origin;
origin.x = rect.origin.x;
origin.y = rect.origin.y;

CGPoint globalOrigin = CGContextConvertPointToDeviceSpace(cgContext, origin);

if (globalOrigin.x != origin.x || globalOrigin.y != origin.y) {
    NSPoint newPoint; 
    newPoint.x = globalOrigin.x;
    newPoint.y = globalOrigin.y;
    [mywindow setFrameOrigin:newPoint];
}

しかし、運がありません。私が与えた値を返しました

何かアドバイス?

前もって感謝します。

4

2 に答える 2

0

スモーガンの答えは正しいです。

もっと説明が必要な人のために、私の考えを追加します。

プラグイン プロセスには、実際の OS ウィンドウを持たない CGContext があると思います。ブラウザ プロセスにはウィンドウが必要ですが、プラグイン プロセスは描画データをブラウザ プロセスに転送するだけなので、プラグイン プロセスの CGContext には場所がありません。それは単なるメモリバッファかもしれません。

ありがとうスモーガン。

于 2010-12-01T14:23:42.097 に答える
0

NPAPI プラグインで取得した CGContext は、必ずしもウィンドウに関連付けられているとは限らないため、CGContext から画面上の場所にマップすることは不可能です。

于 2010-11-28T14:15:22.337 に答える