|
Тема
|
Vyprosche ...
|
|
Автор | Uchesht (Нерегистриран) |
Публикувано | 16.07.04 09:03 |
|
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!
| |
|
Класическата схема, не само в .NET е да решиш каква ти е минималната резолюция, под която ще ти работи програмата и рисуваш по нея. По принцип много зависи и от вида на формите, ако е пълна с всякакви котроли, задаваш Anchor-и, за да не се омаже вида и при resize, ако е е някакво голямо edit поле, само слагаш scroll bars.
| |
Тема
|
Re: Vyprosche ...
[re: Uchesht]
|
|
Автор |
nevil (Unikalen) |
Публикувано | 17.07.04 11:32 |
|
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
| |
|
аз мога да ти дам код и на vb.net и c#.net и квот се сетиш да сменя разделителната способност ... обаче това е много кофти идея ... представи си ти като юзер някоя тъпа бъгава програма като я стартираш да ти смени резолюцията ... аз лично ще откача ...
най-доброто е да се предифинират параметрите на всички форми за няколко резолюции ... да се проверява резолюцията на старт ... и да се показват формите според резолюцията ...
XM TurboCT .. where comfort meets power
| |
|
В отговор на:
някоя тъпа бъгава програма като я стартираш да ти смени резолюцията
Особено ако гръмне и те остави с грозна разделителна способност и разместени икони на десктопа.
--
Екстремно програмиране на български.
| |
|
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!!!
| |
|
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
| |
|
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
| |
|
|
|
|