Vyprosche ...

7 отговора 316 прегледа
#1

Vyprosche ...

Abe kak reshavate vyprosa s razdelitelnata sposbnost na ekranite ? Edno e da pravish formi za 1280/768 i syshtite tezi formi izglejdat ujasno na 800/600 ?
Pri polojenie che ne se znae na kakva razdel. sposobnost shte se izpylniava prilojenieto...
Izpolzvate li niakavi tehniki ? Ako da - kakvi sa te ?

Blagodaria!

Отговор
в отговор на Uchesht #2

Re: Vyprosche ...

Класическата схема, не само в .NET е да решиш каква ти е минималната резолюция, под която ще ти работи програмата и рисуваш по нея. По принцип много зависи и от вида на формите, ако е пълна с всякакви котроли, задаваш Anchor-и, за да не се омаже вида и при resize, ако е е някакво голямо edit поле, само слагаш scroll bars.

Отговор
в отговор на Uchesht #3

Re: Vyprosche ...

Moga da ti dam kod za VB 6 kak da promenjash razdelitelnata sposobnost, no me sumnjava, che shte trugne za VB.NET, puk i ti sigurno ne pishesh na VB.NET

Отговор
в отговор на nevil #4

Re: Vyprosche ...

аз мога да ти дам код и на vb.net и c#.net и квот се сетиш да сменя разделителната способност ... обаче това е много кофти идея ... представи си ти като юзер някоя тъпа бъгава програма като я стартираш да ти смени резолюцията ... аз лично ще откача ...

най-доброто е да се предифинират параметрите на всички форми за няколко резолюции ... да се проверява резолюцията на старт ... и да се показват формите според резолюцията ...


XM TurboCT .. where comfort meets power
Отговор
в отговор на шeф нa Coди Дeвня #5

Re: Vyprosche ...

В отговор на:

някоя тъпа бъгава програма като я стартираш да ти смени резолюцията




Особено ако гръмне и те остави с грозна разделителна способност и разместени икони на десктопа.

--
Екстремно програмиране на български.
[линк]
Отговор
в отговор на шeф нa Coди Дeвня #6

Re: Vyprosche ...

Izprati mi kod za VB.NET, za smjana na razdelitelnata sposobnost? Shte sum ti blagodaren. Az ponjakoga izpolzvam tova v opredeleni programi, napodobjavashti igri
Blagodarja predvaritelno!!!

Отговор
в отговор на nevil #7

Re: Vyprosche ...

vb код нямам щото имам стара вражда с vb-то и се изприщвам леко като чуя за подобни "programmer-friendly" начинания ... ама мога да ти обесня как стоят нещата на C# ... за vb.net ситуацията е 1 към 1 ... можеш да го нацъкаш за 5 мин ...

в .нет взимаш резолюцията чрез Screen.PrimaryScreen .. обаче тука имаш само get .. така че промяната става малко по по-друг начин ..

в .нет няма директна поддръжка за това и се налага малко да попрограмираш ... ако викането на няколко апита може да се нарече програмиране ...

това което ти трябва е :

EnumDisplaySettings
ChangeDisplaySettings

добавяш така:

class User32
{
[DllImport("user32.dll")]
public static extern int EnumDisplaySettings (
string deviceName, int modeNum, ref DEVMODE devMode );
[DllImport("user32.dll")]
public static extern int ChangeDisplaySettings(
ref DEVMODE devMode, int flags);

public const int ENUM_CURRENT_SETTINGS = -1;
public const int CDS_UPDATEREGISTRY = 0x01;
public const int CDS_TEST = 0x02;
public const int DISP_CHANGE_SUCCESSFUL = 0;
public const int DISP_CHANGE_RESTART = 1;
public const int DISP_CHANGE_FAILED = -1;
}
[DllImport("user32.dll")]


[StructLayout(LayoutKind.Sequential)]
public struct DEVMODE
{
. . . [MarshalAs(UnmanagedType.ByValTStr,SizeConst=32)]
. . . public string dmDeviceName;
. . . public short dmSpecVersion;
. . . public short dmDriverVersion;
...

}

и викаш така:

DEVMODE dm = new DEVMODE();
dm.dmDeviceName = new String (new char[32]);
dm.dmFormName = new String (new char[32]);
dm.dmSize = (short)Marshal.SizeOf (dm);

if (0 != User32.EnumDisplaySettings (null, User32.ENUM_CURRENT_SETTINGS, ref dm))
{

dm.dmPelsWidth = iWidth;
dm.dmPelsHeight = iHeight;

int iRet = User32.ChangeDisplaySettings (ref dm, User32.CDS_UPDATEREGISTRY);
}


това е ... лесно и просто ...


XM TurboCT .. where comfort meets power
Отговор
в отговор на шeф нa Coди Дeвня #8

Re: Vyprosche ...

Az sum ja polzval tazi API funkcija ChangeDisplaySettings i znam kak stava delaverata s neja. Pisal sum programa na VB6, smajath, che ima njakakuv class v .NET Framework, koito ne go znam, vse pak blagodarja

Отговор