Q&A

  • 강제로 해상도 바꾸기
제목 그대로



어떤 버튼을 클릭했을 경우 해상도를 바꿀수 있는

방법은 없는지요...



예) 800 * 600 모드 인 모니터를

강제로 1024 * 768 로 바꾸어 버리기.............



읽어 주셔서 감사 합니다,. 꾸벅~~

1  COMMENTS
  • Profile
    강인규 2000.06.28 23:49
    허일학님의 자료중 일부를 발췌합니다.

    자세한건 허일학님의 홈이나 자료실의 xProject프로그램을 참고하시기 바랍니다.

    http://myhome.hananet.net/~memogi/

    type에 아래와 같이 선언하시구요



    {해상도변경관련변수}

    type

    PdmArray = ^TDmArray;

    TDmArray = array[0..0] of TDeviceMode;





    Form Create Event

    {--------해상도변경관련---------------------------시작-------------------------}

    procedure TF107.FormCreate(Sender: TObject);

    var

    MyPC_DC: THandle; // Display context

    MyPC_Bits: Integer; // Bits per pixel

    MyPC_HRes: Integer; // Horizontal resolution

    MyPC_VRes: Integer; // Vertical resolution



    i: integer;

    dm : TDeviceMode;

    begin

    MyPC_DC := Canvas.Handle;

    MyPC_Bits := GetDeviceCaps(MyPC_DC, BITSPIXEL); // 각 pixel당 칼러의 비트수

    MyPC_HRes := GetDeviceCaps(MyPC_DC, HORZRES); // 화면의 폭(Width)의 비트수

    MyPC_VRes := GetDeviceCaps(MyPC_DC, VERTRES); // 화면의 높이(Height)의 비트수

    // 내 PC의 video mode 정보

    // Label1.Caption := Format('%d bits, %d x %d',[MyPC_Bits, MyPC_HRes, MyPC_VRes]);



    Label1.Caption := Format('%d x %d',[MyPC_HRes, MyPC_VRes]);



    // 현재 내 PC가 지원할 수 있는 video mode 를 구한다

    Memo1.Lines.Clear;

    NumModes := 0; // 첫번째 video mode의 번호(0번부터 시작)

    while True do

    begin

    // nil 이면 현재 표시장치(display device)를 나타냅니다

    if not EnumDisplaySettings(nil, NumModes, dm) then // False이면 더이상 없다

    Break;

    Memo1.Lines.Add('Mode ' +

    IntToStr(NumModes) + ': ' +

    IntToStr(dm.dmBitsPerPel) + ' Bits Per Pixel ' +

    IntToStr(dm.dmPelsWidth) + ' x ' +

    IntToStr(dm.dmPelsHeight));

    Inc(NumModes); // 다음번 video mode의 번호를 나타냅니다

    end;



    // 선택 가능한 mode의 최소값

    SpinEdit1.MinValue := 0;

    // NumModes에는 마지막 mode번호보다 1이 큰 mode의 갯수가 들어있음

    SpinEdit1.MaxValue := NumModes - 1;



    // TDeviceMode 를 배열요소로 NumModes 크기의 동적배열을 만든다

    // 위 type 선언문 "TDmArray = array[0..0] of TDeviceMode" 이 동작배열을

    // 만들기 위한 선언이며 아래와 같이 실제 메모리를 할당받는다

    // DELPHI 4.0 에서는 이런 일련의 동작을 하나로 통합한 동적배열을

    // 직접 지원하고 있음

    GetMem(lpDmArray, sizeof(TDeviceMode) * NumModes); // 배열의 메모리 할당

    FillChar(lpDmArray^, sizeof(TDeviceMode) * NumModes, #0); // 배열의 초기화



    // 동적배열에 mode정보를 저장(위의것은 화면에 보여주기 위해 읽은것임)

    for i := 0 to (NumModes - 1) do

    begin

    EnumDisplaySettings(nil, i, lpDmArray[i]);

    if (lpDmArray[i].dmBitsPerPel = MyPC_Bits) and

    (lpDmArray[i].dmPelsWidth = MyPC_HRes) and

    (lpDmArray[i].dmPelsHeight = MyPC_VRes)

    then

    SpinEdit1.Value := i;

    end;



    end;









    procedure TF107.Button3Click(Sender: TObject);

    var

    ReturnVal : LongInt;

    begin

    // 선택한 모드로 화면 변경

    ReturnVal := ChangeDisplaySettings(lpDmArray[SpinEdit1.Value],

    CDS_UPDATEREGISTRY);

    with Memo1.Lines do

    begin

    case ReturnVal of

    DISP_CHANGE_SUCCESSFUL: Add('DISP_CHANGE_SUCCESSFUL');

    DISP_CHANGE_RESTART : Add('DISP_CHANGE_RESTART');

    DISP_CHANGE_BADFLAGS : Add('DISP_CHANGE_BADFLAGS');

    DISP_CHANGE_FAILED : Add('DISP_CHANGE_FAILED');

    DISP_CHANGE_BADMODE : Add('DISP_CHANGE_BADMODE');

    DISP_CHANGE_NOTUPDATED: Add('DISP_CHANGE_NOTUPDATED');

    end;

    end;

    end;



    이경수 wrote:

    > 제목 그대로

    >

    > 어떤 버튼을 클릭했을 경우 해상도를 바꿀수 있는

    > 방법은 없는지요...

    >

    > 예) 800 * 600 모드 인 모니터를

    > 강제로 1024 * 768 로 바꾸어 버리기.............

    >

    > 읽어 주셔서 감사 합니다,. 꾸벅~~

    • hsband
    • 2000.06.29 05:47
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이상우
      2000.06.29 06:53
      hsband wrote: > 저는 초보인데요, 이렇게 질문만 올리게 되내요. 아주 간단한 것 같은데요 memo 콤포넌...
    • 김양미
    • 2000.06.29 02:48
    • 3 COMMENTS
    • /
    • 0 LIKES
    • cell
      2000.06.29 02:55
      Button4Click(Sender); 또는 button4.Click; 이렇게 하면 됩니다.
    • 김영해
      2000.06.29 02:53
      김양미 wrote: > 잉잉... ㅠ.ㅠ > 조금 알까 싶으면 저리로 도망가고.. 델이 밉슴다... 버뜨 좋다... *^^...
    • 김양미
      2000.06.29 03:28
      남은 시간도 좋은 시간 만드세요~!!! 행복하세요~~ *^^*
    • 김영희
    • 2000.06.29 02:21
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최영근
      2000.06.29 09:38
      김영희 wrote: > > 간단한 프로그램인데요 > 폼도 단 두개, 출력만을 위한 겁니다. > > 출력을 위해...
    • cell
      2000.06.29 03:08
      레코드를 select한후 다시 편집해서 변수에 넣은 건가요. 변수의 갯수가 어느정도 되는지... 자세한 내용...
    • 김경율
    • 2000.06.29 01:52
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이재식
      2000.06.29 05:07
      이재식 Wrote : 안녕하세요? 본 소스에서 크게 잘못된 부분은 없습니다. 이 소스는 그대로 사용하면...
    • 김경율
      2000.06.30 18:08
      답변 감사 합니다. 늘 행복하시고 하시고자 하는 모든일들이 다 잘 되었으면 합니다.
    • 전해영
    • 2000.06.29 01:46
    • 2 COMMENTS
    • /
    • 0 LIKES
    • cell
      2000.06.29 03:45
      전해영 wrote: > 델파이 프로그램내에서 엑셀혹은 이와유사한 기능을 사용하여 데이타를 가공후 > 오라클...
    • 이재식
      2000.06.29 03:38
      전해영 wrote: > 델파이 프로그램내에서 엑셀혹은 이와유사한 기능을 사용하여 데이타를 가공후 > 오라클...
    • 조선일
    • 2000.06.29 01:45
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 윈디하나
      2000.07.04 23:26
      직접 Win32 API를 사용하셔야 합니다. GetPrevilige~로 시작하는 함수로 기억합니다만... 그럼 이만...
    • cell
      2000.06.29 02:29
      편법으로 가능합니다. 먼저 calculate field인가 한국식으로 계산 필드를 하나 생성하시고 그다음 on cal...
    • 김영해
      2000.06.29 01:52
      사발우성 wrote: > > 안뇽 하신가엽 여러 고수님 & 중수님... > > 전 울트라 캡숑초보...헐 프로그...
    • 사발우성
      2000.06.29 02:11
      ^^ 죄성엽.. 지금 제가 로컬 디비(파라독스)를 사용하구 있어서엽... 어떻게 해야할쥐를 모르겠네...
    • 준희
    • 2000.06.29 01:03
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 조상
      2000.06.29 01:47
      준희 wrote: > 안녕하세요.. > > 다름이 아니라 Form 호출에러가 발생해서 그러는데 도대체 어디서 잘...
    • 김영해
      2000.06.29 01:46
      준희 wrote: > 안녕하세요.. > > 다름이 아니라 Form 호출에러가 발생해서 그러는데 도대체 어디서 잘...
    • 준희
      2000.06.29 02:47
      김영해 wrote: > 준희 wrote: > > 안녕하세요.. > > > > 다름이 아니라 Form 호출에러가 발생해서 그...
    • 사발우성
      2000.06.29 01:10
      ^^ 사발임당... 전 완전 초본디엽.. 컁 form2:Tform2.creat(self); form2.show; 이렇게 ...
    • 이경문
      2000.06.29 01:39
      Modal폼은 그 자체가 시행이 끝나기 전까지는 메인폼(Modal폼을 부른 폼)으로 돌아가지 않는 성질을 갖...
    • cell
      2000.06.29 02:40
      심동훈님이 아니라 죄송하네요.... 저도 rs-232통신을 많이 사요하기 때문에 몇자 적습니다. 제가 알기...
    • 장형욱
      2000.06.29 03:23
      cell님 안녕하십니까? cell님께 감사의 말씀 전합니다. 이렇게 한수 가르켜주시니 정말 고맙습니다. ...
    • 장형욱
      2000.06.29 03:23
      cell님 안녕하십니까? cell님께 감사의 말씀 전합니다. 이렇게 한수 가르켜주시니 정말 고맙습니다. ...
    • DaeSung
    • 2000.06.29 00:44
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 2000.06.29 00:01
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 이미나
      2000.06.30 00:37
      저두 MS-SQL에 delphi로 프로젝트 경험이 있습니다. 헌데 win98, 95 모두 BDE 설정시 문제가 없었네요. ...
    • 이재식
      2000.06.29 03:48
      이재식 Wrote : 안녕하세요? 인식못할 이유가 없다고 생각합니다. 작업과 환경을 98에서 하신것처럼 ...
    • cell
      2000.06.29 03:12
      혹시 95에 ms-sql client가 설치되어 있지 않거나, 아니면 client설치 없이 사용할 때 필요한 DLL이 없...
    • heimdal
    • 2000.06.28 23:37
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 까마귀
      2000.06.29 20:10
      heimdal wrote: > 페이지컨트롤에 탭시트가 두개가 있습니다.. > 탭시트1에 4개의 입력창이있고 탭시트2...
    • 초보초보
      2000.06.29 00:01
      heimdal wrote: > 페이지컨트롤에 탭시트가 두개가 있습니다.. > 탭시트1에 4개의 입력창이있고 탭시트2...
    • heimdal
      2000.06.29 01:08
      초보초보 wrote: > heimdal wrote: > > 페이지컨트롤에 탭시트가 두개가 있습니다.. > > 탭시트1에 4개...
    • cell
      2000.06.29 03:00
      setfocus 전에 먼저 페이지탭의 이동을 해야지요 pageControl1.ActivePageIndex := 0 과 같이요.
    • 이경수
    • 2000.06.28 23:30
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 강인규
      2000.06.28 23:49
      허일학님의 자료중 일부를 발췌합니다. 자세한건 허일학님의 홈이나 자료실의 xProject프로그램을 참고하...
    • 이경문
      2000.06.29 01:42
      우선 S의 내용을 로컬에 저장하고(c:temp.txt) WebBrowser1.Navigate('c:temp,txt', 어쩌구저쩌구) 하면 ...
    • 초보
      2000.07.05 02:50
      > 우선 S의 내용을 로컬에 저장하고(c:temp.txt) > WebBrowser1.Navigate('c:temp,txt', 어쩌구저쩌구) 하...