본문 바로가기

C# WPF

Visual Studio 2012에서 첫번째 윈도우 프로그램 만들기

Solution : CodingAcademy 

Project : 001Hello 

프로젝트가 만들어지면 참조를 추가한다. 솔루션탐색기에 생긴 참조에 마우스 오른쪽 버튼을 누르고 참조추가를 선택하여 다음과 같이 5개의 참조를 추가한다. 아래 그림에서 참조아래 5개가 추가된 것을 볼 수 있다.

 

PresentationCore
PresentationFrameWork
System
System.Xaml
WindowBase

 

 

Code : Hello.cs  

 

 

프로그램을 실행하면 다음과 같은 화면을 볼 수 있다. Console 창에 "첫 번째 윈도우 프로그램"이라고 출력되며 Title이 "Hello"이고 크기가 400x300인 빈 윈도우가 하나 보인다.

 

using System;
using System.Windows;

namespace CodingAcademy.Hello
{
    class Hello
    {
        [STAThread]

        public static void Main()
        {
            Console.WriteLine("첫 번째 윈도우 프로그램");

            Window win = new Window();

            win.Title = "Hello";
            win.Width = 400;
            win.Height = 300;

            win.Show();

            //Application app = new Application();
            //app.Run();          
        }
    }
}

 

8번째 라인의 [STAThread]는 Window 프로그램을 할 때, 필요하다.

윈도우 프로그램을 할 때에는 Main() 함수 앞에 [STAThread] 를 써 주어야 한다. 이것은 이 프로그램의 COM Threading Model을 single-threaded apartment (STA)로 한다는 표시이다(자세한 것은 나중에 알아보기로 하자).

이를 생략하면 다음과 같은 에러가 나온다.

 

 

22~23 라인의 코드가 없다면(소스창에서 처럼 주석처리를 한다면...) win을 만들고 win.Show()로 보인 다음에 프로그램이 끝나버리므로 잠깐 윈도우 창이 보였다 없어지고 만다.

Application app = new Application();
app.Run();   

즉, 위의 두 라인은 프로그램이 계속되도록 해준다.

또한, 다음과 같이 win.Show()를 주석처리하고,
app.Run() 을 app.Run(win)으로 해도 똑 같은 실행결과를 얻을 수 있다.

//win.Show();

Application app = new Application();
app.Run(win);
    

Run(win)은 Run() 메소드가 win 개체의 Show()를 대신 호출해주기 때문이다.

 

BeeEye 드무

 

 

 

'C# WPF' 카테고리의 다른 글

Event Handler  (0) 2013.07.07
상속에 의한 윈도우 생성(2)  (0) 2013.07.07
상속에 의한 윈도우 생성  (0) 2013.07.07
Window 객체 생성함수 사용하기  (0) 2013.07.07
Coding Academy 2013  (0) 2013.07.06