본문 바로가기
프로그래밍

👨‍💻 [CEF] CEF 의 객체를 여러개 생성해서, SetZoomLevel 을 호출하면, 모두 동시에 적용되는데, 각각 적용하는 방법은 어떻게 되나요?

by 밝음의기둥 2025. 3. 5.
반응형

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."


👨‍💻 안녕하세요, 윌리 프로젝트의 윌리 입니다.

CEF 의 객체를 여러개 생성해서, SetZoomLevel 을 호출하면, 모두 동시에 적용되는데, 각각 적용하는 방법은 어떻게 되는지 간략히 알아보았습니다.


질문 >

CEF 의 객체를 여러개 생성해서, SetZoomLevel 을 호출하면, 모두 동시에 적용되는데, 각각 적용하는 방법은 어떻게 되나요?

답변 >

CEF에서 여러 개의 CefBrowser 객체를 생성한 경우, SetZoomLevel을 개별적으로 적용하려면 주의해야 합니다.

기본적으로 CEF는 도메인별 줌 레벨 공유 정책을 따르므로, 같은 도메인의 페이지는 모든 브라우저 인스턴스에서 동일한 줌 레벨을 공유합니다.

하지만 개별 브라우저에 대해 줌 레벨을 다르게 설정하는 방법이 있습니다.


1. 브라우저별 개별 줌 레벨 적용 방법

✅ CefRequestContext를 사용하여 개별 브라우저 컨텍스트 설정

줌 레벨 공유는 CefRequestContext에 의해 결정됩니다. 따라서 각각의 브라우저 인스턴스에 별도의 CefRequestContext를 사용하면 독립적인 줌 레벨을 유지할 수 있습니다.

// 개별 컨텍스트를 생성
//CefRefPtr context1 = CefRequestContext::CreateContext(CefRequestContext::GetGlobalContext(), nullptr);
//CefRefPtr context2 = CefRequestContext::CreateContext(CefRequestContext::GetGlobalContext(), nullptr);
CefRequestContextSettings settings1;
CefRefPtr context1 = CefRequestContext::CreateContext(settings1, nullptr);
CefRequestContextSettings settings2;
CefRefPtr context2 = CefRequestContext::CreateContext(settings2, nullptr);

// 첫 번째 브라우저 생성
CefWindowInfo window_info1;
CefBrowserSettings browser_settings1;
CefRefPtr client1 = new MyClient();
CefBrowserHost::CreateBrowser(window_info1, client1, "<https://example.com>", browser_settings1, context1);

// 두 번째 브라우저 생성
CefWindowInfo window_info2;
CefBrowserSettings browser_settings2;
CefRefPtr client2 = new MyClient();
CefBrowserHost::CreateBrowser(window_info2, client2, "<https://example.com>", browser_settings2, context2);

이제 browser1과 browser2는 서로 다른 CefRequestContext를 사용하므로, 줌 레벨이 개별적으로 적용됩니다.


2. 각 브라우저의 줌 레벨 개별 설정

각 브라우저에 대해 SetZoomLevel을 개별적으로 호출하면 됩니다.

// 브라우저 1의 줌 레벨 설정
browser1->GetHost()->SetZoomLevel(1.0);  // 125%

// 브라우저 2의 줌 레벨 설정
browser2->GetHost()->SetZoomLevel(-1.0); // 80%

각 브라우저에 개별 컨텍스트(CefRequestContext)를 사용하면 줌 레벨을 독립적으로 적용할 수 있음


3. CefRequestContext 없이 개별 줌 적용은 불가능?

네, CefRequestContext를 공유하면 동일한 도메인에서는 줌 레벨이 자동으로 동기화됩니다. 따라서 CefRequestContext::CreateContext()를 사용하여 브라우저별 개별 컨텍스트를 생성하는 것이 필수입니다.


4. 정리

✅ 기본적으로 같은 도메인에서는 줌 레벨이 공유됨

✅ 브라우저별 개별 줌 레벨을 설정하려면 각 브라우저가 독립적인 CefRequestContext를 사용해야 함

✅ CefBrowserHost::CreateBrowser 호출 시 개별 CefRequestContext를 전달하여 줌 레벨을 독립적으로 유지 가능

이 방법을 적용하면 각 브라우저에서 서로 다른 줌 레벨을 가질 수 있습니다! 🚀



🎬 유튜브 채널 🎬

 

위로그@WiLog

📢 안녕하세요, 위로그@WiLog 시청자 여러분, 저는 윌리(Willee) 입니다. 📢 위로그@WiLog 는 자기계발을 목적으로 하는 채널 입니다. 📢 오늘도 즐겁게~ 자신을 위한 계발을 함께 해보아요~ d^_^b 📌

www.youtube.com

🎬 치지직 채널 🎬

 

위로그 채널 - CHZZK

지금, 스트리밍이 시작됩니다. 치지직-

chzzk.naver.com


반응형