"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
👨💻 안녕하세요, 윌리 프로젝트의 윌리 입니다.
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
'프로그래밍' 카테고리의 다른 글
👨💻 [MFC] MFC 에서 GetFileVersionInfoSize 함수의 헤더 파일은 어떻게 되나요? (0) | 2025.03.10 |
---|---|
👨💻 [MFC] MFC 에서 실행파일의 ProductName 과 ProductVersion 알아내는 방법은 어떻게 되나요? (0) | 2025.03.10 |
👨💻 [Unreal] 언리얼 엔진에서 블렌드 스페이스 (Blend Space) 란 무엇이며, 어떻게 활용할 수 있나요? (0) | 2025.02.19 |
👨💻 [MFC] 윈도우 컨트롤러에서 SetWindowPos 를 호출 했는데, 컨트롤러의 위치가 이동하지 않는 경우에는 어떻게 처리해야 하나요? (0) | 2025.02.14 |
👨💻 [Unreal] 언리얼 엔진으로 모바일 게임을 개발할 수 있나요? (0) | 2025.02.12 |