본문 바로가기

API30

API-ini파일 특정 값이나, 상황, 옵션등을 설정하고 싶을 때, 프로그램 코드에서 설정하거나, 사용자에게 입력받는 방법도 존재 하지만, 모든 상황에 대해서 그 값을 입력받는다거나, 확인하는 작업이 그렇게 편리하지만은 않다. 그래서 존재 하는 것이 ini파일의 활용인데, (확장자만 바꾸면 꼭 ini가 아니여도 상관은 없지만, 보통 확장자를 ini로 많이 사용한다.) 크게 ini파일을 만들면, 세션 과 키값, 그리고 데이터로 분리된다. [TEST1] HP=1 MP=2 라는 식을 ini 파일이 가지고 있다고 했을 때 TEST1은 세션 HP, MP는 키값 1과 2는 데이터라고 보면 된다. 크게 어려운 것은 없고. WritePrivateProfileString 를 사용해 세션을 만들고, 키 값을 만들고, 데이터를 삽입한다. 이.. 2010. 5. 10.
API-알파값(비트맵 이미지 투명화) 사실 예전엔 알파값을 사용하기 위해 매우 복잡한 연산을 사용(비트연산)하였으나, 지금은 TransparentBlt를 함수를 사용하면 1줄로 아주 간편하게 특정 값에 대한 수치를 제거 할 수 있다. 다음과 같은 이미지에 붉은값( 255, 0, 0 )을 투명처리 하고 싶다고 하자. 흔히들 알파값, 컬러키 라고 많이 불리우는데, #include #include "resource.h" #pragma comment(lib, "Msimg32.lib") HBITMAP hBitDice; LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM ); HINSTANCE g_hInst; LPCTSTR lpszClass = TEXT("알파값"); int APIENTRY WinMain( H.. 2010. 5. 10.
API-애니메이션 애니메이션의 기본은 여러장, 또는 한장이지만 부분별로 쪼개어 번갈아 가면서 계속 보여줌으로써 애니메이션을 연출 할 수 있다. 긴 설명이 필요 할거 같지는 않고, 다음의 이미지를 번갈아서 출력한다고 생각해 보자. 이미지의 크기는 x축 48*12, y출 48이다. 따로 애니메이션을 플레이 해주는 함수가 존재하는 것은 아니고, BitBlt 함수를 사용해 간단하게 화면에 뿌려 줄 수 있다. 예제를 보면 쉽게 이해 할 수 있다. #include #include "resource.h" int frame; HBITMAP hBitDice; LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM ); HINSTANCE g_hInst; LPCTSTR lpszClass = TEXT(".. 2010. 5. 10.
API-PlaySound API에서 음악을 출력하기 위해 사용하는, PlaySound라는 함수만 사용해 주면된다. 특별히 주의할 점은 없고. 딱히 소스를 첨부 하지도 않겠다. 단지 PlaySound라는 함수를 사용하기 위해서는, 프로젝트에서 winmm.lib를 링크 하거나, #pragma comment(lib, "winmm.lib" ) 를 선언해야 하며, #include 가 필요하다. PlaySound의 첫번째 인자는 파일의 주소 TEXT("test.wav") 식으로 선언해 주고, 두번째 인자는 리소스의 Wave 파일을 연주할 경우 그 핸들을 지정, 3번째에 플래그 값이 들어 가는데, SND_ASYNC를 삽입해 주는 것이 가장 무난하다. PlaySound( TEXT("test.wav"), NULL, SND_ASYNC); 처럼 사.. 2010. 5. 10.
API-더블 버퍼링 api에서 paint를 호출 할때 사용하는 InvalidateRect 함수는 특정 영역(또는 전 화면)을 지우고 다시 그려주는 일을 하게 되는데, 그 순서는 기존의 이미지 -> 특정 영역(모든 영역)을 화면에서 지운다 -> 다시 그려준다 (물론 그려주기 위해서 MemDC가 필요 하다.) 이런 구조를 지니게 되는데, 그렇기 때문에 가끔씩 느껴지는 깜박임 현상을 보게 된다. 그때 그 문제를 해결하기 위해서 더블 버퍼링이라는 기술을 사용하게 되는데, 따로 더블버퍼링 함수를 제공한다거나 하는것이 아니기 때문에 처음엔 많이 해맬 수 있다. 기존에 영역을 지우고 다시 그려주는 것이 아닌, hdc가 뿌려준 기존의 화면 -> 다음에 그려줄 이미지를 BackDC에 임시 저장 -> BackDC에 내용을 MemDC에 삽입한.. 2010. 5. 10.
API-ChildWnd 프로그램이 간단하다면 괜찮지만, 그렇지 않다면, 하나의 메인 윈도우 만으로는 한계가 있을 것이다. 그때 차일드 윈도우를 생성하여 사용 할 수 있다. 일단 예제를 보고 설명을 하나씩 하도록 하겠다. #include LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM ); LRESULT CALLBACK ChildProc( HWND, UINT, WPARAM, LPARAM ); HINSTANCE g_hInst; HWND hWndMain; LPCTSTR lpszClass = TEXT("ChildWnd"); BOOL bEllipse = TRUE; int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPS.. 2010. 4. 24.