C++ Builder XE4, 10.2 Tokyo > 모니터 해상도 > Bug > Screen->Monitors[0]의 Width와 Height가 이상해진다
5154 단어 geometrycppBuilder버그
C++ Builder XE4
Rad Studio 10.2 Tokyo Update 2
c++ builder > form > 모니터 해상도 얻기 > Screen->Monitors[0]->Width; / ->Height; // Screen->PrimaryMonitor->
10.2 Tokyo에서 시도하고 발견 한 문제.
code
Unit1.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
// 1. Monitors[]使用
int width = Screen->Monitors[0]->Width;
int height = Screen->Monitors[0]->Height;
String msg = String().sprintf(L"Monitors[0]: W%d x H%d", width, height);
Memo1->Lines->Add(msg);
// 2. PrimaryMonitor使用
width = Screen->PrimaryMonitor->Width;
height = Screen->PrimaryMonitor->Height;
msg = String().sprintf(L"Primary: W%d x H%d", width, height);
Memo1->Lines->Add(msg);
}
//---------------------------------------------------------------------------
결과
Monitors[0]의 값이 이상해지는 조건이 있다.
상기에서는 2회 Button1을 누르고 있지만, 2회째의 값이 이상하다.
결함 발생 조건
1. VMware에서 재현
VMware상의 Windows 7(나 10등)에서 「모니터를 순환」에 의해 모니터수를 1에서 2로 변경했을 때에 발생한다.
2. 멀티 모니터로 재현
하나의 모니터와 연결된 상태에서 두 번째 모니터를 연결한 후에 발생합니다.
예상되는 상황
모니터가 고장 직후에 Monitors[0]의 Height, Width에 이상한 값이 들어가, 그것을 바탕으로 위치 계산하는 처리가 모두 실패한다.
소프트를 기동한 상태에서 모니터를 1대에서 2대로 늘리는 경우도 실패할지도 모른다.
코드에서 값이 이상하지 않은 PrimaryMonitor 사용을 고려하는 것이 좋습니다.
Reference
이 문제에 관하여(C++ Builder XE4, 10.2 Tokyo > 모니터 해상도 > Bug > Screen->Monitors[0]의 Width와 Height가 이상해진다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/7of9/items/5cf279339b0081a7feef텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)