'Programming > T *Omnia' 카테고리의 다른 글
| 옴니아(M490/5) LED 및 진동 ON OFF하기!! (2) | 2010/03/01 |
|---|---|
| PlaySound를 이용한 재생 및 정지 방법 (0) | 2009/12/21 |
| MessageBox 응답~ (0) | 2009/12/08 |
| SetCapture (0) | 2009/12/08 |
| Thread~~ (0) | 2009/12/08 |
| MFC 버튼 다운 구현~ (0) | 2009/12/08 |


| 옴니아(M490/5) LED 및 진동 ON OFF하기!! (2) | 2010/03/01 |
|---|---|
| PlaySound를 이용한 재생 및 정지 방법 (0) | 2009/12/21 |
| MessageBox 응답~ (0) | 2009/12/08 |
| SetCapture (0) | 2009/12/08 |
| Thread~~ (0) | 2009/12/08 |
| MFC 버튼 다운 구현~ (0) | 2009/12/08 |
예제소스설치파일
무설치 실행파일
예전에 찾아두고 자주 애용하는 소스인데...
MSDN 어디서 긁어왔는지 기억이 잘안나네요^^;;
간단히 제가 소스 이용해서 만들었습니다.
실행파일하고 프로젝트 같이 첨부했습니다.
바로 빌드하시면대여~~
그냥 바로 긁어서 붙여놓고 함수 콜하면 바로 리셋됩니다.. 사용법알려드릴게요 ㅋ
//==========soft reset
public const uint FILE_DEVICE_HAL = 0x00000101;
public const uint METHOD_BUFFERED = 0;
public const uint FILE_ANY_ACCESS = 0;
public uint CTL_CODE(uint DeviceType, uint Function, uint Method, uint Access)
{
return ((DeviceType << 16) | (Access << 14) | (Function << 2) | Method);
}
[DllImport("Coredll.dll")]
public extern static uint KernelIoControl
(
uint dwIoControlCode,
IntPtr lpInBuf,
uint nInBufSize,
IntPtr lpOutBuf,
uint nOutBufSize,
ref uint lpBytesReturned
);
private uint ResetPocketPC()
{
uint bytesReturned = 0;
uint IOCTL_HAL_REBOOT = CTL_CODE(FILE_DEVICE_HAL, 15,
METHOD_BUFFERED, FILE_ANY_ACCESS);
return KernelIoControl(IOCTL_HAL_REBOOT, IntPtr.Zero, 0,
IntPtr.Zero, 0, ref bytesReturned);
}
//=====================
요기까지를 긁어가신다음에
사용법은 메세지박스로 알려드릴게요^^
DialogResult r = MessageBox.Show("지금 소프트 리셋을 하시려면 예를 눌러주세요", "확인메시지",
MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
if (r == DialogResult.Yes)
{
ResetPocketPC();
}
else
{
//아니요 했을경우~
}
요롷게 사용하시면됩니다^^ 참 쉽죠잉~
| [C#]윈도우 모바일 SoftReset 방법~~~ (3) | 2009/12/31 |
|---|
| EditBox 글씨 크게하기~~ (0) | 2009/12/23 |
|---|---|
| C++ 문자열변환 TIP (0) | 2009/12/21 |
| GetModuleFileName 을 이용한 실행경로 알아내기!!! (0) | 2009/12/21 |
| mfc 배경그리기 2(OnEraseBkgnd() 배경화면 & 속도향상) (0) | 2009/12/20 |
| mfc 배경 이미지 넣기 (0) | 2009/12/20 |
| 흠.. 다이얼로그를 안닫아도 이렇게 오류가 뜨는군.... (0) | 2009/12/18 |
| EditBox 글씨 크게하기~~ (0) | 2009/12/23 |
|---|---|
| C++ 문자열변환 TIP (0) | 2009/12/21 |
| GetModuleFileName 을 이용한 실행경로 알아내기!!! (0) | 2009/12/21 |
| mfc 배경그리기 2(OnEraseBkgnd() 배경화면 & 속도향상) (0) | 2009/12/20 |
| mfc 배경 이미지 넣기 (0) | 2009/12/20 |
| 흠.. 다이얼로그를 안닫아도 이렇게 오류가 뜨는군.... (0) | 2009/12/18 |
| EditBox 글씨 크게하기~~ (0) | 2009/12/23 |
|---|---|
| C++ 문자열변환 TIP (0) | 2009/12/21 |
| GetModuleFileName 을 이용한 실행경로 알아내기!!! (0) | 2009/12/21 |
| mfc 배경그리기 2(OnEraseBkgnd() 배경화면 & 속도향상) (0) | 2009/12/20 |
| mfc 배경 이미지 넣기 (0) | 2009/12/20 |
| 흠.. 다이얼로그를 안닫아도 이렇게 오류가 뜨는군.... (0) | 2009/12/18 |
| 옴니아(M490/5) LED 및 진동 ON OFF하기!! (2) | 2010/03/01 |
|---|---|
| PlaySound를 이용한 재생 및 정지 방법 (0) | 2009/12/21 |
| MessageBox 응답~ (0) | 2009/12/08 |
| SetCapture (0) | 2009/12/08 |
| Thread~~ (0) | 2009/12/08 |
| MFC 버튼 다운 구현~ (0) | 2009/12/08 |
| AVR128 UART Baud Rate 레지스터 설정 (0) | 2009/12/21 |
|---|---|
| AVR128 USART0 예제 (0) | 2009/03/03 |
OnEraseBkgnd 함수는 보통 배경화면을 비트맵을 사용하여 그리기 위해 사용한다. 배경화면을 비트맵으로 처리하면 윈도우가 새로 그려져야 할 경우 화면이 깜박이고, 컨트롤들이 비트맵에 가려서 보이지 않게 된다. 윈도우가 다른 윈도우에 가려졌다가 다시 앞으로 나올 경우 그 윈도우는 다시 그려지게 된다. 윈도우가 배경을 그리는 방법은 모든 화면을 깨끗이 지우고(흰색 브러쉬로 채운다), 그 위에 배경을 그리게 된다. 한마디로 배경을 다시 그리기 위해 두 개의 작업이 이루어 진다. (윈도우가 배경을 다시 그려야 할 때 WM_ERASEBKGND 메세지를 호출한다.)
OnEraseBkgnd() 기본형 함수
bool OnEraseBkgnd(CDC *pDC) {
reutrn CDialog::OnEraseBkgnd(pDC); // Dialog에서 작업
윈도우에서 GDI(Graphic Device Interface)를 사용하여 그림을 그려야 할 경우, 화면에 DC(Device Context)에 바로 출력하지 않고, 메모리 DC에 먼저 그림을 로드한 후에 메모리 DC의 내용을 화면 DC에 빠르게 출력하여 깜박임 현상을 최소하 한다. 이러한 것을 Double Buffering이라고 한다.
DC(Device Context)의 종류
배경화면 그리기(Exampe-1)
CBitmap * pOldBitmap = NULL; // m_BackBitmap으로 새로운 그림을 DC에 그릴 때,
이전 그려졌던 DC(즉, Bitmap)을 저장.
memDC.SelectObject(pOldBitmap);
return true; // 흰 부러쉬가 아닌 배경을 그려야 하기 때문에 true
위의 소스에서 이해하기 난해한 부분은 memDC.SelectObject(CBitmap* bitmap) 함수이다. CBitmap * pOldBitmap 을 선언한 이유는 pOldBitmap = memDC.SelectObject(&m_BackBitmap); 구문 때문이다.
윈도우는 항상 거의 대부분 사용을 다한 자원은 반환되어야 한다. memDC.SelectObject(&m_BackBitmap); 을 사용하여 새로운 비트맵을 넣으면, 이전 작업 중이던 비트맵을 리턴한다. 14줄 memDC.SelectObject(pOldBitmap); 에서는 이전에 저장했던 pOldBitmap을 다시 넣는다. m_BackBitmap 그림을 다 그렸기 때문에 더이상 사용할 필요가 없기 때문에 이전 pOldBitmap을 다시 DC에 돌려 주게 된다. 그리고 배경을 다 그렸기 때문에 두 번째 나오는 SelectObject에서는 리턴값을 받을 필요가 없다. (OnEraseBkgnd 함수는 배경이 다시 그려져야 할 경우에만 WM_ERASEBKGND 메시지를 호출하여 다시 그리게 된다.)
GetClip를 사용하여 속도 향상 시키기(Exampe-2)
Double Buffering
매모리맵에 클라이언트 창의 크기만큼 비트맵 이미지를 그려 놓고 한꺼번에 화먼에 뿌려주는 방식(실행시 더 빠른 속도) (Exampe-3)
| C++ 문자열변환 TIP (0) | 2009/12/21 |
|---|---|
| GetModuleFileName 을 이용한 실행경로 알아내기!!! (0) | 2009/12/21 |
| mfc 배경그리기 2(OnEraseBkgnd() 배경화면 & 속도향상) (0) | 2009/12/20 |
| mfc 배경 이미지 넣기 (0) | 2009/12/20 |
| 흠.. 다이얼로그를 안닫아도 이렇게 오류가 뜨는군.... (0) | 2009/12/18 |
| C++ 파일처리 (0) | 2009/03/03 |
| C++ 문자열변환 TIP (0) | 2009/12/21 |
|---|---|
| GetModuleFileName 을 이용한 실행경로 알아내기!!! (0) | 2009/12/21 |
| mfc 배경그리기 2(OnEraseBkgnd() 배경화면 & 속도향상) (0) | 2009/12/20 |
| mfc 배경 이미지 넣기 (0) | 2009/12/20 |
| 흠.. 다이얼로그를 안닫아도 이렇게 오류가 뜨는군.... (0) | 2009/12/18 |
| C++ 파일처리 (0) | 2009/03/03 |
| C++ 문자열변환 TIP (0) | 2009/12/21 |
|---|---|
| GetModuleFileName 을 이용한 실행경로 알아내기!!! (0) | 2009/12/21 |
| mfc 배경그리기 2(OnEraseBkgnd() 배경화면 & 속도향상) (0) | 2009/12/20 |
| mfc 배경 이미지 넣기 (0) | 2009/12/20 |
| 흠.. 다이얼로그를 안닫아도 이렇게 오류가 뜨는군.... (0) | 2009/12/18 |
| C++ 파일처리 (0) | 2009/03/03 |
댓글을 달아 주세요
비밀댓글입니다
흠 그건 잘모르겠네요^^;; 저건 자기가 개발한 어플에서 적용시키는거지 이미 만든어플을 변경시키는 용도가 아니랍니다^^;;