1

CEF1の例で透明な背景を実現するために、 LWA_COLORKEYで SetLayeredWindowAttributesを使用して色 (#ff00ff) を透明度に置き換えます。

7/Vistaで問題なく動きます。
Windows XP では、関数は成功しますが、色は不透明なままです。

メインウィンドウを作成する私のコード:

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) {
  HWND hWnd;
  hInst = hInstance;
  hWnd = CreateWindowEx(WS_EX_LAYERED | WS_EX_TOPMOST | WS_EX_COMPOSITED, szWindowClass, szTitle,
                 WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_VISIBLE, CW_USEDEFAULT, 0,
                 CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);

メイン ウィンドウの WndProc:

switch (message) {
case WM_CREATE: {
  ...
  info.SetTransparentPainting(TRUE);
  info.SetAsChild(hWnd, rect);

  // Create the new child browser window
  CefBrowser::CreateBrowser(info,
      static_cast<CefRefPtr<CefClient> >(g_handler),
      url_to_pageWithMagentaBackground, settings);

  SetLayeredWindowAttributes(hWnd, RGB(0xff, 0x00, 0xff), 0xff, LWA_COLORKEY);

表示される HTML:

<style type="text/css">html { background: #ff00ff; }</style>

次の点に注意してください。

  • XPではLWA_ALPHA(ウィンドウ全体を半透明にする)で動作しますが、LWA_COLORKEYでは動作しません

  • リモート デスクトップ経由で XP に接続すると、透過性が期待どおりに表示されます。

誰かがこれを説明できますか?

4

0 に答える 0