개발환경
Visual Studio 2008
C#
Windows Mobile 프로그래밍시 C# 언어를 사용한다는 것은 쉽고 간단하고 시작하기 쉽다는 장점이 있습니다.
하지만 그 반대로 복잡하거나 어려운 동작 예를 들면 모션제어, 카메라, 미디어.. 등등 을 구현하기에는
아직까지는 부족한게 현실 입니다.
자료를 구하기도 힘들고 막상 찾는다 하더라도 구현해 보면 속도가 느려지는 경우가 많습니다.
이에 .NET 에서는 PInvoke - 플랫폼 호출 서비스 라는 기능을 제공하는데
C, C++ 로 작성된 네이티브 메소드를 호출할 수 있는 기능입니다.
이런 PInvoke 를 사용하기 위해서는 using 선언문에 다음을 추가해 주면 가능 합니다.
System.Runtime.InteropServices; |
그리고 사용할 API를 호출 합니다.
DllImport() 안에 호출할 DLL 이름과
EntryPoint 로 정의된 네이티브 메소드의 이름을 불러오거나 PInvoke에서 사용되는 별칭을 직접 정의 합니다.
SetLastError 로 메소드를 호출한 후 발생한 에러 코드의 저장 여부를 정합니다.
[DllImport("CoreDll.DLL", EntryPoint = "Play" SetLastError=true] private static extern int PlaySound(string szSound, IntPtr hMod, int flags); |
extern 키워드는 해당 메소드가 외부에 있다는 것을 나타내는 키워드이므로
해당 메소드를 정의 할 필요는 없습니다.
WAV 파일을 플레이하는 예제를 한번 해보겠습니다.
텍스트 박스 1개, 버튼 3개를 아래와 같이 배치하고
openFileDialog 를 1개 배치 합니다.
PInvoke 사용과 wav파일을 불러오기 위해
using 선언문에 아래를 추가 합니다.
using System.Runtime.InteropServices; using System.IO; |
CoreDll.DLL 을 호출하고
사운드 재생과 관련한 플래그 값들을 설정 합니다.
[DllImport("CoreDll.DLL", EntryPoint = "PlaySound", SetLastError = true)] private enum Flags |
각 버튼의 클릭 이벤트를 정의 합니다.
버튼 1 클릭시 탐색기로 wav 파일을 찾을수 있으며
버튼 2는 플레이를 버튼 3은 정지를 하게 됩니다.
private void button1_Click(object sender, EventArgs e) if (openFileDialog1.ShowDialog() == DialogResult.OK)
private void button3_Click(object sender, EventArgs e) |
테스트 화면 입니다.
소리는 확인 시켜드릴순 없지만 WAV 파일을 찾아서 플레이 할 수 있습니다.
'Education > Bit 18th' 카테고리의 다른 글
[Windows Mobile] 초보용팁 - Visual Studio에 옴니아(T*Omnia) 스킨 적용하기 (0) | 2009.12.06 |
---|---|
[Windows Mobile] 간단한 카메라 제어하기 (옴니아 기준) (0) | 2009.12.06 |
[Windows Mobile] 간단한 로딩화면 구현 (0) | 2009.12.06 |
[Windows Mobile] 초보용팁 - 사용자 정의 컨트롤로 이미지 버튼 만들기 (0) | 2009.12.06 |
[Windows Mobile] GPS를 이용한 속도계 (0) | 2009.12.06 |
댓글