Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ КПК ΠΈ смартфонов Π½Π° .NET Compact FrameworkΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 18

Автор АлСксандр Климов

private int x_md, y_md;

Pen myPen = new Pen(Color.LightBlue);

private bool bPaint;

Graphics g;


private Pen erasePen;

private Point ptsStart;

private Point ptsPrevious;

private Point ptsCurrent;


private void Form1_MouseDown(object sender, MouseEventArgs e) {

 // НачинаСм рисованиС

 bPaint = true;

 if (mnuLines.Checked) {

  ptsStart.X = e.X;

  ptsStart.Y = e.Y;

  ptsPrevious = ptsStart;

 }

 if (mnuPaint.Checked) {

  // ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ стилуса ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ

  x_md = e.X;

  y_md = e.Y;

 }

}


private void Form1_MouseMove(object sender, MouseEventArgs e) {

 if (bPaint) {

  if (mnuLines.Checked) {

   ptsCurrent.X = e.X;

   ptsCurrent.Y = e.Y;

   g = CreateGraphics();

   g.DrawLine(erasePen, ptsStart.X, ptsStart.Y, ptsPrevious.X, ptsPrevious.Y);

   g.DrawLine(myPen. ptsStart.X, ptsStart.Y, ptsCurrent.X, ptsCurrent.Y);

   ptsPrevious = ptsCurrent;

   g.Dispose();

  }

  if (mnuPaint.Checked) {

   g = CreateGraphics();

   int x_mm = e.X;

   int y_mm = e.Y;

   g.DrawLine(myPen, x_md, y_md, x_mm, y_mm);

   x_md = x_mm;

   y_md = y_mm;

   g.Dispose();

  }

 }

}


private void Form1_MouseUp(object sender, MouseEventArgs e) {

 bPaint = false;

}


private void mnuClear_Click(object sender, EventArgs e) {

 g = CreateGraphics();

 g.Clear(this.BackColor);

 g.Dispose();

}


private void Form1_Load(object sender, EventArgs e) {

 erasePen = new Pen(this.BackColor);

}


private void mnuPaint_Click(object sender, EventArgs e) {

 mnuPaint.Checked = !mnuPaint.Checked;

 mnuLines.Checked = !mnuLines.Checked;

}


private void mnuGreenPen_Click(object sender, EventArgs e) {

 myPen.Color = Color.Green;

}


private void mnuRedPen_Click(object sender, EventArgs e) {

 myPen.Color = Color.Red;

}

На рис. 6.9 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ выглядит созданный графичСский Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Π² Ρ€Π°Π±ΠΎΡ‚Π΅.

Рис. 6.9. ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ графичСский Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹

Если Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°ΠΌΠΈ ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ, Ρ‚ΠΎ стоит ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΡΡ‚Π°Ρ‚ΡŒΡΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ MSDN. НапримСр, Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ Β«How to: Display a Gradient FillΒ» рассказываСтся Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Ρ€Π°ΡΠΊΡ€Π°ΡΠΈΡ‚ΡŒ элСмСнт Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π½ΠΎΠΉ Π·Π°Π»ΠΈΠ²ΠΊΠΎΠΉ. Π’Π°ΠΊΠΆΠ΅ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ MSDN имССтся ΡΡ‚Π°Ρ‚ΡŒΡ ΡƒΠΆΠ΅ извСстного Π½Π°ΠΌ АлСкса Π―Ρ…Π½ΠΈΠ½Π° Β«Creating a Microsoft .NET Compact Framework-based Animation ControlΒ», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ рассказываСтся ΠΎ создании элСмСнта управлСния, способного Π²ΠΎΡΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, создавая Π΅Π³ΠΎ Π½Π° основС сСрии ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ. Π’Π΅ΠΌ, ΠΊΡ‚ΠΎ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠΈΡΠ°Ρ‚ΡŒ прилоТСния для устройств ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Windows Mobile 5.0, стоит ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ Windows Mobile DirectX and Direct3D, которая Π΄Π°Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ возмоТности для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ.

Π“Π»Π°Π²Π° 7

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ

Активация ΠΈ дСактивация Ρ„ΠΎΡ€ΠΌΡ‹

МодСль выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° ΠΊΠ°Ρ€ΠΌΠ°Π½Π½ΠΎΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ отличаСтся ΠΎΡ‚ повСдСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅. НапримСр, Π½Π° ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠ΄ΠΈΠ½ экзСмпляр Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Аналогом ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ повСдСния Π½Π° Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ… являСтся почтовая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Outlook Express, которая всСгда запускаСтся Π² ΠΎΠ΄Π½ΠΎΠΌ экзСмплярС. ΠŸΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΠ½Π° просто активируСтся (Ссли ΡƒΠΆΠ΅ Π±Ρ‹Π»Π° Π·Π°ΠΏΡƒΡ‰Π΅Π½Π°). ΠŸΡ€ΠΈ этом вторая копия ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ запускаСтся.

ΠŸΡ€ΠΈ создании прилоТСния для КПК Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ Π½Π΅ придСтся ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… усилий для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ повСдСния. Π‘Ρ€Π΅Π΄Π° выполнСния .NET Compact Framework сама позаботится ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ запускался Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ экзСмпляр ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ сам Π·Π°ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. ΠŸΡ€ΠΈ запускС Π½ΠΎΠ²ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΅Π΅ ΠΎΠΊΠ½ΠΎ просто Π·Π°Π³ΠΎΡ€Π°ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

Учитывая ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ рСсурсов систСмы. ΠžΠ΄Π½Π°ΠΆΠ΄Ρ‹ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² памяти нСсколько Π΄Π½Π΅ΠΉ, ΠΏΠΎΠΊΠ° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΠΈΠ»ΠΈ Π½Π΅ Π·Π°ΠΊΡ€ΠΎΠ΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ. ДСактивированная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° закроСтся автоматичСски, Ссли систСма ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ свободной памяти ΠΏΡ€ΠΈ разрядкС Π±Π°Ρ‚Π°Ρ€Π΅ΠΈ. Но, Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π°Π΄ΠΎ ΠΏΡ€ΠΎΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° освободила рСсурсы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½Π° использовала. Π‘Ρ‹Π²Π°ΡŽΡ‚ ситуации, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ соСдинСниС с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ осущСствляСт связь с БОМ-ΠΏΠΎΡ€Ρ‚Π°ΠΌΠΈ. Π’ этом случаС систСма ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚ΡŒ Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΡ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ рСсурсы. Для отслСТивания состояния Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ события Form.Deactivate ΠΈ Form.Activated. Π’ листингС 7.1 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с этими событиями.

Листинг 7.1

private void Form1_Activated(object sender, EventArgs e) {

 // Π—Π΄Π΅ΡΡŒ ваш ΠΊΠΎΠ΄ для восстановлСния связСй с ΠΏΠΎΡ€Ρ‚Π°ΠΌΠΈ ΠΈ Ρ‚.Π΄.

 lblInfo.Text = "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ";

}


private void Form1_Deactivate(object sender, EventArgs e) {

 // Π—Π΄Π΅ΡΡŒ ваш ΠΊΠΎΠ΄ для освобоТдСния рСсурсов

 lblInfo.Text = "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ";

}

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ состоянии ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎ систСмой, Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡƒΡŽ ΠΏΠΎΡ‚Π΅Ρ€ΡŽ Π΄Π°Π½Π½Ρ‹Ρ…. Для этого Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ событиС Deactivate.

Π—Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΈΠ»ΠΈ ΡΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΎΠΊΠ½ΠΎ

Π—Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΈΠ»ΠΈ ΡΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ β€” Π²ΠΎΡ‚ Π² Ρ‡Π΅ΠΌ вопрос. Компания Microsoft ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ»Π° для ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ модСль повСдСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰ΡƒΡŽ ΠΎΡ‚ принятой Π² Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ…. Когда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ‰Π΅Π»ΠΊΠ°Π΅Ρ‚ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ закрытия, Ρ‚ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ ΠΎΠΊΠ½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ закрываСтся, Π° сворачиваСтся. Для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ каТСтся странным, поэтому Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ создавали ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ позволяли Π·Π°ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ прилоТСния ΠΎΠ΄Π½ΠΈΠΌ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ΠΌ стилуса. ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½Π΅ всСм ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»ΠΎΡΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Π½ΠΈΠΌΠ°ΡŽΡ‚ рСсурсы Ρƒ систСмы. Но сСйчас Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Ρ‚ΡŒ Ρ†Π΅Π»Π΅ΡΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΊ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ закрытия прилоТСния. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ закрытия, Ρ‡Ρ‚ΠΎΠ±Ρ‹ просто ΡΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΎΠΊΠ½ΠΎ, Π»ΠΈΠ±ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ мСню Π’Ρ‹Ρ…ΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Но Π±Ρ‹Π²Π°ΡŽΡ‚ Π»ΠΈ Ρ‚Π°ΠΊΠΈΠ΅ ситуации, ΠΊΠΎΠ³Π΄Π° Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ трСбуСтся ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ? Вакая Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ ΠΈ тСстировании ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² эмуляторС. ΠŸΡ€ΠΈ стандартной ΠΌΠΎΠ΄Π΅Π»ΠΈ повСдСния довольно ΡƒΡ‚ΠΎΠΌΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΡƒΡŽ Π² эмуляторС. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ свойству MinimizeBox ΠΏΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ False, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Но ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅Π»ΠΈΠ·ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π°Π΄ΠΎ всС ΠΆΠ΅ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ True. Однако ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° свою ΠΏΠ°ΠΌΡΡ‚ΡŒ Π½Π΅ стоит. Π“ΠΎΡ€Π°Π·Π΄ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ условной компиляциСй.

ΠŸΡ€ΠΈ создании прилоТСния Π½Π°Π΄ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСсколько строчСк ΠΊΠΎΠ΄Π° Π² конструкторС Ρ„ΠΎΡ€ΠΌΡ‹ сразу послС Π²Ρ‹Π·ΠΎΠ²Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ InitializeComponent(), ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² листингС 7.2.

Листинг 7.2

#if DEBUG

 MinimizeBox = false;

#else

 MinimizeBox = true;

#endif

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ стоит вынСсти Π½Π° панСль инструмСнтов (рис. 7.1), Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ быстро Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ эту ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ Π² создаваСмыС прилоТСния. ΠžΡ‚Π½Ρ‹Π½Π΅ всС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π² Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠ½Π°Π±ΠΆΠ°Ρ‚ΡŒΡΡ этим ΠΊΠΎΠ΄ΠΎΠΌ.

Рис. 7.1. Код условной компиляции Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов

ΠŸΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° прилоТСния

Π›ΡŽΠ±Π°Ρ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅Ρ‚ΡŒ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡƒΡŽ ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π½Π°Π΄ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ мСню Projectβ–ΊProperties ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Property Pages, Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π» Application ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ с ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Π² свойствС Icon (рис. 7.2).

Рис. 7.2. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для прилоТСния

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ собствСнных Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Ρ… ΠΎΠΊΠΎΠ½

Π‘Π»ΠΎΠΆΠ½Ρ‹Π΅ прилоТСния часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ нСсколько Ρ„ΠΎΡ€ΠΌ. НапримСр, Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… имССтся Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ О ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ информация ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Π½ΠΎΠΌΠ΅Ρ€ вСрсии, свСдСния ΠΎΠ± Π°Π²Ρ‚ΠΎΡ€Π΅ ΠΈ Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ.

Для создания ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ собствСнноС Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ ShowDialog. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΄Π΅Π»Π°Π΅Ρ‚ нСдоступным Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ, ΠΏΠΎΠΊΠ° Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ находится Π½Π° экранС. Π”ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ShowDialog Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сСбС, Π½ΠΎ ΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌΡƒ ΠΎΠΊΠ½Ρƒ.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ для доступа ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Π’ состав ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½ΡƒΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ, которая Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΊΠ°ΠΊ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ LogonForm. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ малСнькоС ΠΎΠΊΠ½ΠΎ Π±Π΅Π· Ρ‡Π΅Ρ‚ΠΊΠΎ ΠΎΡ‡Π΅Ρ€Ρ‡Π΅Π½Π½ΠΎΠΉ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹. Π’ Π½Π΅ΠΌ Π½Π°Π΄ΠΎ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ тСкстовоС ΠΏΠΎΠ»Π΅ ΠΈ Π΄Π²Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ. Π—Π°Ρ‚Π΅ΠΌ Π½Π°Π΄ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ значСния свойств FormBorderStyle, Size ΠΈ Location. ΠŸΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ основной Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ события Load создаСтся Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° LogonForm ΠΈ вызываСтся ΠΊΠ°ΠΊ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ. Π”Π°Π½Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ значСния DialogResult.OK, Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π²Π΅Π» имя, ΠΈΠ»ΠΈ DialogResult.Cancel, Ссли ΠΎΠ½ просто Π·Π°ΠΊΡ€Ρ‹Π» Ρ„ΠΎΡ€ΠΌΡƒ. Если Π±Ρ‹Π»ΠΎ Π²Π²Π΅Π΄Π΅Π½ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ имя, Ρ‚ΠΎ главная Ρ„ΠΎΡ€ΠΌΠ° ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ слСдуСт Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ. Π‘ΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π² листингС 7.3.