리눅스와 윈도우, 맥과 같은 요즘의 운영 체제는 대부분 한번에 여러개의 프로그램이나 프로세스를 실행시키는 멀티태스킹(Multi-tasking) 운영체제입니다. 멀티태스킹 운영체제에서 화면을 통해 사용자와 대화식으로 동작하는 콘솔 응용, 윈도우 폼 응용도 있지만 사용자 눈에 보이지는 않지만 백그라운드에서 동작하는 데몬(Daemon) 프로세스도 있습니다. 장치에 대한 처리를 수행하거나 일정한 예약시간에 프로그램 실행시키거나 하는 프로그램으로 윈도우에서는 이러한 데몬 프로세스를 서비스(Service)라 부르고 제어판>관리도구>서비스를 통해 관리할 수 있습니다. 위의 그림은 서비스 관리자의 목록 화면으로 일반적인 응용과 달리 시스템 구도 시점에 자동으로 시작시키는지 수동으로 시작시킬 지를 "시작 유형"을 통해서..
윈도우 폼 기반으로 단순한 데이터베이스 처리 위주로 동작하는 프로그램이나 대부분의 업무용 프로그램에서는 사용 빈도가 많지 않지만 닷넷에서 제공하는 그래픽 기능을 비주얼베이직 닷넷(이하 비베닷넷)을 통해서 활용하는 방법을 알아두면 유용하게 사용할 경우가 있습니다. 비주얼스튜디오에서 제공하는 기본 컨트롤에서 지원하지 않는 인터페이스를 별도로 제작하거나 여러 프로그램에서 사용할 수 있는 공통 라이브러리를 제작하는 등에 여러모로 활용 가능성이 있습니다. 닷넷의 그래픽 기능을 최대한 활용하는 프로그램은 뭐니뭐니해도 그래픽 편집 도구가 아닐까 싶습니다. 대표적인 예로 페인트닷넷을(가볍고 빠른 이미지 편집툴 페인트닷넷 참조) 예로 들수 있습니다. 페인트 닷넷은 가로, 세로 크기를 지정한 캔버스 위에 다양한 도형을 그..
비주얼베이직 닷넷(이하 비베닷넷)에서 인쇄를 구현하는 것이 그리 쉽지만은 않은 작업입니다. 웹 페이지 처럼 화면에 HTML을 통해서 그림과 도표, 텍스트로 페이지를 출력하고 CSS를 이용해서 인쇄시점에 포함해야될 내용과 제외할 것을 지정해 놓으면 웹브라우저가 알아서 출력해 주는 것처럼 윈도우 폼에서도 자동으로 인쇄해 준다면 프로그래머는 편하겠지만 화면의 동작방식과 크기는 프린터의 동작 방식과 크기와 차이가 크기 때문에 인쇄용 양식과 내용을 별도로 구성해 주어야 합니다. 다만 화면 출력에 사용하는 클래스나 함수를 그대로 프린터 출력에도 동일하게 사용할 수 있으며 시스템에서 제공하는 몇가지 컴포넌트와 클래스를 잘 활용하면 프린터의 종류와 관계없이 다양한 기종의 프린터에 동일한 페이지 내용을 간편하게 출력할 ..
이번 포스팅은 지난 VB.Net 객체지향프로그래밍의 실제1에 이어서 VB.Net의 객체 지향 프로그래밍과 관련한 나머지 사항을 나눌까 합니다. ■ 접근 변경자(Access Modifiers)특정 클래스 앞이나 클래스내 속성이나 함수에 붙어서 그 성격을 한정하는 변경자(Modifier)는 객체 지향 프로그래밍 과정에서 가장 빈번하게 만나는 키워드가 아닐까 싶습니다. Namespace Customer Public Class CustBase Public name As String Public Sub New(ByVal newname As String) name = newname End Sub Sub CallTest() MyClass.Calling() Me.Calling() End Sub Overridable S..
통상 하나의 윈도우 폼 응용 프로그램은 여러개의 창(폼, Form)으로 구성합니다. 기능별로 별도의 폼을 만들어 필요에 따라 적절한 폼을 동작시키는 다중 폼 형태로 운영하는 것이 일반적입니다. 단일 폼 응용에서 폼을 추가 하려면 프로젝트의 팝업 메뉴에서 추가>Windows Form을 선택합니다. 추가>새 항목에서 여러 템플릿 중에 윈도우 폼을 선택해도 됩니다. 새롭게 추가할 폼의 이름을 확인하고 [추가] 버튼을 누릅니다. 추가한 폼에는 간단하게 문자열을 받을 수 있는 텍스트박스 컨트롤 하나와 입력 확인을 받을 버튼을 추가합니다. 또한 폼의 TopMost 속성을 True로 설정하여 이 폼이 보여질때 폼이 여러개 겹치더라도 최상단에 표시될 수 있도록 합니다. 창이 여러개 겹칠때 보여지는 순서를 Z 순서라 하..
윈도우 폼(Forms) 응용 프로그램에서 개별 폼에 포함되어 있는 컨트롤은 비주얼스튜디오 디자이너 화면에서 도구 박스에서 끌어다놓기 방식으로 추가 및 설정하는 것이 일반적인 방법이지만 프로그램 실행 과정에서 특정 조건이나 옵션에 따라서 컨트롤을 추가하거나 삭제할 수 있습니다. 실행중 컨트롤 추가 및 삭제는 "폼이름.Designer.vb"의 형태로 저장하는 디자이너 코드 파일의 흐름을 따라하기 하면 됩니다. Partial Class Form1 Inherits System.Windows.Forms.Form Protected Overrides Sub Dispose(ByVal disposing As Boolean) Try If disposing AndAlso components IsNot Nothing Then..
윈도우 폼 응용의 특징중의 하나는 사용자와의 대화를 다양한 창을 통해서 수행한다는 점일 것입니다. 이러한 창은 개발자가 다양한 기능 제공을 위해서 제작한 것도 있지만 자주 사용하는 창은 시스템에서 기본적으로 제공하기도 합니다. 좌측의 그림은 비주얼스튜디오의 도구 박스에서 제공하는 다양한 컨트롤로 노란색의 박스로 표시한 시스템 창을 확인할 수 있습니다. 이외에도 색상 선택을 위한 ColorDialog도 제공하고 있습니다. 도구 박스에서 제공하는 시스템 창들은 도구박스에서 디자이너 작업 공간으로 끌어다놓기(Drag & Drop)로 컨트롤을 추가하고 각 창별로 필요한 옵션을 설정하는 방법으로 간편하게 사용할 수 있습니다.도구박스에서 제공하는 시스템 창들은 특정 기능에 특화되어 있다면 단순하게 오류 메시지나 결..
윈도우 폼으로 화면 기반의 프로그램을 작성하면 System.Windows.Forms 클래스를 상속받아 클래스를 작성하게 됩니다. Forms 클래스의 연관 속성과 메서드, 이벤트는 MSDN 페이지에서 자세하게 확인할 수 있습니다. 페이지의 링크는 https://msdn.microsoft.com/ko-kr/library/system.windows.forms.form(v=vs.100).aspx입니다. 아래의 그림은 Forms 클래스의 속성과 메서드, 이벤트를 마인드맵으로 나타낸 것입니다. 속성을 적절하게 설정하여 제목, 창의 위치나 크기등을 조정하고 메서드 호출을 통해서 원하는 동작을 지시할 수 있으며 다양한 이벤트에 대응하는 적절한 이벤트 처리 루틴을 기술할 수 있습니다. 닷넷 환경에서 VB 또는 C#으로 ..
윈도우 폼(Windows Forms) 응용 프로그램을 본격적으로 다루기에 앞서 전형적인 윈도우폼과 관련된 용어를 정리할 필요가 있습니다.위의 그림은 비주얼스튜디오의 모습으로 전형적인 사각 형태의 윈도우 폼 응용입니다. 창(Window) 상단은 제목줄(Title bar) 또는 캡션바(Caption bar)로 불리며 마우스로 드래그하여 창이동에 쓰이기도 하고 더블클릭하여 창을 최대화하거나 최대화 상태에서 원래 크기로 복귀할 수도 있습니다. 제목줄 우측에 있는 최소화, 최대화, 닫기 버튼이 있는 곳을 컨트롤 박스(Control Box)라 합니다. 테두리는 단순히 창의 경계선 역할에서 끝나지 않고 경계선의 종류에 따라 창의 크기를 변경하는데 사용되기도 합니다. 창 속성에서 컨트롤 박스를 보일지 여부와 경계선의 ..
좋은 품질 또는 안정성 있는 프로그램이란 다양한 사용자에 의해서 발생하는 다양한 상황에서도 예상할 수 있는 결과를 내는 프로그램입니다. 프로그래머가 생각하고 준비한 범위에서는 잘 동작하지만 그 이외의 경우에는 결과를 예상할 수 없는 프로그램을 좋은 프로그램이라 할 수 없습니다. 중요하게 기억해야할 점은 "완벽함"이 아니라 "예측 가능함"입니다. 철저한 프로그램 설계와 꼼꼼한 코딩으로 모든 경우의 수를 대비한 프로그램을 작성한다면 더욱 좋겠지만 이런 과정은 기간, 인원등 자원의 투입을 수반하게 되어 있고 코드의 크기와 비용이 커짐과 동시에 버그의 출현 가능성도 높아지게 마련입니다. 이러한 "예측 가능성"을 높여주는 대비책이 바로 실행중 예외 처리입니다. 비주얼베이직의 예외 처리 방법은 이전 버전 부터 사용..
프로그램이 길어지고 복잡해 질수록 연관성 있는 코드를 별도의 묶음으로 분리해 놓으면 프로그램의 가독성이 높아지는 것은 물론이고 해당 코드가 필요한 곳에서는 언제든지 호출하여 사용할 수 있으므로 재사용성을 높이고 오류의 가능성을 최소화하는 효과를 가져올 수 있습니다. 이렇게 특정 기능을 수행하는 단위로 분할하여 묶어 놓는 작업을 모듈화라고 하며 아래의 VB.Net 콘솔 프로젝트의 기본 코드에서도 확인할 수 있지만 모든 프로그램은 하나 이상의 프로시저로 구성된다 할 수 있습니다. Module Module1 Sub Main() End Sub End Module VB.Net은 서브 프로시저와 함수(function) 두가지 형태의 프로시저(Procedure)를 정의해서 사용할 수 있습니다. 서브 프로시저와 함수는..