본문 바로가기

API

FMod 기본 사용법 FMod를 사용하면서 설정을 어떻게 해야 하나 하고 한참 뒤적였는데 삭은이~님 덕분에 쉽게 해결했다.. ---------------------------------------------------------------------------------------------------- FMod를 몇일 다루면서 정리할 것들 대부분 사운드 라이브러리가 그렇듯이 FMod도 간단한 초기화 몇개 호출로 시작이 가능하다. // DSound 사용은 옵션사항이다. 기타 옵션이 다양하지만 대부분 FMod가 내부적으로 가장 적절한 방법을 찾는다고 한다. FSOUND_SetOutput(FSOUND_OUTPUT_DSOUND); FSOUND_SetHWND(hWnd); const OUTPUT_FREQ = 44100; const N.. 더보기
프로그램 Alt+F4 감지 프로그램에서 Alt+F4를 입력받으면 중간에 어떠한 일을 수행하고 종료를 해야 하는 경우가 있다 그 때 Alt+F4 를 감지해서 특정 일을 수행 한 후 종료하게 하려면 다음과 같이 작성해라 BOOL CDirectVideoDialog::PreTranslateMessage(MSG* pMsg) { // 중간 생략 if(pMsg->message == WM_SYSKEYDOWN && pMsg->wParam == VK_F4) { if (::GetKeyState(VK_MENU) < 0) { //여기에 할 일을 작성 return TRUE; } } // 중간 생략 } PreTranslateMessage에서 감지 하여도 되지만 WM_SYSCOMMAND에서도 처리할 수 있습니다. 아래와 같이 하면 프로그램 오른쪽 위에 있는 .. 더보기
리스트컨트롤 아이템 자동 선택 하기 리스트컨트롤을 사용하는데 자동으로 선택해와야 하는 경우가 생겨 찾아보니 데브피아에 저런 내용이 검색되었다 저도 같은 내용을 검색 하다가 다음과 같은 내용을 찾았습니다. 즐프.. ^^; ListCtrl::SetSelectionMark(int i) : i번째 item을 선택하는 것은 맞습니다. 단지 포커스까지 주지 않기때문에 표시(파란줄)가 되지 않을 뿐이지 내부적으로 현재 선택된 아이템은 i번째 아이템입니다. m_list1.SetItemState(i, LVIS_SELECTED, LVIS_SELECTED) : 이것만 사용하시면 문제가 발생할 수 있습니다. 내부적으로 자동 선택된 아이템의 인덱스와 표시(파란줄)된 아이템의 인덱스가 달라질 수 있거든요.. 표시된 아이템을 삭제하려고 삭제 버튼을 눌렀는데 딴 아이.. 더보기
List Ctrl 아래로 정렬 시키기 리스트 뷰를 추가되는 데이터 때문에 항상 아래를 보이게 해야 하는 상황이 나왔다 데브피아를 찾아보니 EnsureVisible() 쓰라능~! 라고 나와있길레....... pListView->SetScrollPos(SB_VERT, pListView->GetListCtrl().GetItemCount()); pListView->GetListCtrl().EnsureVisible(pListView->GetListCtrl().GetItemCount() - 1, true); 이렇게 써봤더니.. 엄청난 깜박임이 발생하였다 |||orz 그래서 다시 찾은 방법이 pListView->SendMessage(WM_VSCROLL,SB_BOTTOM,NULL); 간단하게 해결 되는군;; 정보출처 : 현덕군 더보기
루프문 동작중 키보드 입력으로 탈출하기 루프문을 이용해서 처리를 하다보면 부득이하게 루프문을 강제 종료시켜야 할 때가 있다 내부적으로 처리하다가 FALSE뜨면 종료되겠지만 그게 아니라면 사용자가 직접 루프문 탈출을 걸어줘야 하는데 처리량이 많은 루프문이면 키보드 입력 이벤트를 감지 못한다 그때 이걸 쓰자 for (;;) { if (GetAsyncKeyState(VK_ESCAPE)) break; /* 처리할 것 들 */ } 간단한 게임들이 대부분 이걸 쓴다고 한다; 뭐 복잡찬란한 프로그램들은 Direct Input을 쓴다는데.... 여기서는 그건 필요 없으니 Pass~! 무조건 탈출하게 되어있지만, 조금만 수정하면 1회 진행까지는 하게 할 수 있다 BOOL bLoop = TRUE; while(bLoop) { if (GetAsyncKeyState.. 더보기