我想问一下,我在800*600的分辨率下做的程序,比如主窗体设置了最大化,到了1024*768的分辨下不会只显示800*600部分吧.怎么解决这种分辨率问题?

解决方案 »

  1.   

    我的方案;
    1.在程序启动时设成1024*768:setdisplaymode(true);
    2.在程序退出时,还复用户设置:setdisplaymode(false);
    3.用户手册中写明"程序运行在1024*768环境下"以下是我的setdisplaymode
    function setdisplaymode(const setnew:bool):bool;
    var
       newmod:TDeviceMode;
    const
    {$j+}
       oldmod:TDeviceMode=();
    {$j-}
    begin
      result:=false;
      if setnew then
         begin
           if not EnumDisplaySettings(nil,$ffffffff,oldmod) then
             exit;
           if oldmod.dmPelsWidth=1024 then
           begin
              result:=true;
              exit;
           end;
           newmod:=oldmod;
           newmod.dmPelsWidth:=1024;
           newmod.dmPelsHeight:=768;
           if ChangeDisplaySettings(newmod,CDS_TEST)<>DISP_CHANGE_SUCCESSFUL then
           begin
             newmod.dmDisplayFrequency:=85;
             while  newmod.dmDisplayFrequency >= 60 do
             begin
              if ChangeDisplaySettings(newmod,CDS_TEST)=DISP_CHANGE_SUCCESSFUL then
                  break;
                  newmod.dmDisplayFrequency:=newmod.dmDisplayFrequency-5;
             end;
           end;
           result:=ChangeDisplaySettings(newmod, CDS_RESET)=DISP_CHANGE_SUCCESSFUL;
         end else
         if oldmod.dmPelsWidth<>1024 then
           ChangeDisplaySettings(oldmod,CDS_RESET);
    end;