전체 글

게임/웹 개발 외 다양한 주제를 다루는 블로그.
MemDC 를 이용하면, 빠른 비트맵 출력이 가능하고, 편리하게 출력할 수 있다. void DrawBitmap(HDC hdc,int x,int y,HBITMAP hBit) { HDC MemDC; HBITMAP OldBitmap; int bx,by; BITMAP bit; MemDC=CreateCompatibleDC(hdc); OldBitmap=(HBITMAP)SelectObject(MemDC, hBit); GetObject(hBit,sizeof(BITMAP),&bit); //hit 에 저장된 비트맵 정보 bit복사. bx=bit.bmWidth; //bit 에 복사시킨 비트맵의 사이즈 by=bit.bmHeight; BitBlt(hdc,x,y,bx,by,MemDC,0,0,SRCCOPY); SelectObjec..
TextRot SetBkMode(hdc,TRANSPARENT); // 음영처리 함수(기본:불투명) // TRANSPARENT = 투명. FONT hFont=CreateFont(50, // 폰트 크기 0, // 장평 0, // 문자열 각도 (3시방향 기준 0도, 360도 사용) 0, // 문자 각도 (한 글자의 각도 지정 0, // 두께 (0~1000) 0, // 기울임 0, // 밑줄 0, // 관통선 HANGEUL_CHARSET, // Charset 지정 0, // 출력 정확도 0, // 클리핑 정확도 0, // 논리적폰트와 물리적 폰트의 근접 지정 VARIABLE_PITCH | FF_ROMAN, // 폰트의 피치와 그룹 설정. TEXT("궁서")); // 글꼴이름을 나타내는 문자열 지정. Bitmap..
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; int i; HBRUSH MyBrush,OldBrush; HPEN MyPen, OldPen; switch (iMessage) { case WM_PAINT: hdc=BeginPaint(hWnd, &ps); for (i=0;i
void TestResource(BOOL bUnSel,BOOL bDelete,int num) { HDC hdc; HPEN hPen,OldPen; int i; TCHAR str[256]; hdc=GetDC(hWndMain); for (i=0;i ** DC에는 항상 오브젝트가 장착 되어 있는 상태여야 함. case '2': TestResource(FALSE,TRUE,10000); // 기본 오브젝트를 다시 장착시켜주지 않고, 바로 삭제한 경우. break; // => DC에 펜이 장착된 채로 삭제됨. - 다른 작업을 진행 할시 문제가 발생. case '3': TestResource(FALSE,FALSE,10000); // 기본 오브젝트를 다시 장착시켜주지도 않고, 삭제도 하지 않은 경우. break; //=..
STOCK OBJECT //스톡 브러시 예제 LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; HBRUSH MyBrush,OldBrush; switch (iMessage) { case WM_PAINT: hdc=BeginPaint(hWnd,&ps); MyBrush=(HBRUSH)GetStockObject(GRAY_BRUSH); // 기본적으로 제공되는 스톡오브젝트(브러쉬,펜,폰트) 제공. // 그중에서 브러쉬만 지정해서 가져오므로 HBRUSH 로 캐스팅. OldBrush=(HBRUSH)SelectObject(hdc,MyBrush); // DC 에 도구를 장착 하는 함수...
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam) { HDC hdc; // 좌표를 지속적으로 저장해 두기 위해 static static int x; //-> static short x; static int y; //-> static short y; static BOOL bNowDraw = FALSE; // 마우스 클릭중에만 그리기 작업이 진행되므로 작업여부를 확인 switch (iMessage) { case WM_LBUTTONDOWN: SetCapture(hWnd); // 그리기 작업이 시작되는 시점부터 마우스 이벤트를 받도록해서 윈도우 밖으로 빠져나가도, 마우스의 메시지를 모두 받을수 있음. = 작업영역을 벗어나도..
Draw Graphic LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; static bool Check = false; int xPos; int yPos; static int xPos1; static int yPos1; int xPos2; int yPos2; switch (iMessage) { case WM_DESTROY: PostQuitMessage(0); return 0; case WM_LBUTTONDOWN : // lParam 에 x,y 좌표 정보가 저장되고 rParam 에는 조합키정보가 들어감. MSDN 참고. /**************** 클릭한 두점을 이..
TextOut hdc=GetDC(hWnd); SetTextAlign(hdc,TA_CENTER); // TA_CENTER :: 가운데 정렬. TextOut(hdc,250,100,TEXT("PRINT TA_CENTER "),17); // 문자열 좌표는 문자열 중간을 기준으로 함. TextOut(hdc,250,120,TEXT("PRINT TA_CENTER "),17); ReleaseDC(hWnd, hdc); // 가져왔던 DC 반환. ** 핸들은 사용하고 바로 반납을 해야 함. DrawText HDC hdc; PAINTSTRUCT ps; RECT rt={100,100,400,300}; // { Left Pos , Top Pos, Right Pos, Bottm Pos } TCHAR *str=TEXT("님은 갔습..
#include // 프로시저 [콜백] 함수 선언 LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); HINSTANCE g_hInst; LPCTSTR lpszClass=TEXT("First"); // == const char* ptr = "First"; => const char* ptr = TEXT("first"); // 운영체제가 ANSI 형식이면 상관없지만, 유니코드면 오류 발생. 반드시 TEXT 안에 글자를 넣을것. //메인 [콜백] 함수
:: 변수 명명법 :: cb~ 바이트 수 (Count of Byte) dw~ 부호 없는 long형 정수 (Double Word) h~ 핸들(Handle) sz~ - lp~ 포인터 (long pointer ) WORD 2byte Word DWORD 4byte Word :: 유니코드 :: C타입 유니코드 (호환)타입 char TCHAR char* LPSTR const char* LPCTSTR :: 유니코드 지원함수 :: C타입 유니코드 (호환) 타입 strlen lstrlen strcpy lstcpy strcat lstrcat strcmp lstrcmp sprintf wsprintf(printf : 화면 / sprintf: 메모리 == 출력 대상의 차이) * 프로젝트 속성 - 문자 집합 - "유니코드 설정"..
SDK (Software Development Kit) : 소프트웨어 개발 도구 API (Application Programming Interface) : 프로그래밍을 위해 제공되는 C타입의 함수들의 집합. MFC (Microsoft Foundation Class) : 다양한 API를 여러 개의 C++ 클래스로 작성한 클래스의 집합.-클래스 라이브러리 API 장점 - 로우레벨(Low Level) 의 프로그래밍 가능 - 우수한 성능 - 윈도우 동작원리 이해 단점 - 배우기가 어렵고 시간이 많이 소요. - 컴포넌트 프로그래밍 곤란. (컴포넌트 프로그래밍 :: 클래스화 시킨 프로그래밍) MFC 장점 - API 함수 사용가능. - RAD 툴과 같은 비주얼 기능 제공 - 컴포넌트 프로그래밍에 적합 단점 - 배우기..
[출처 : 포트로얄3 포럼 ] 포트로얄 3 (Port Royale 3 ) 안에 모든 게임정보를 담고있는 data.fuk 파일에 대한 압축해제 파일입니다. Dragon Unpacker 로 읽어들인 dds 및 기타 이미지 파일 뿐만 아니라 게임에 포합되는 모든 파일을 볼수 있습니다. xml 파일도 확인되서 단축키 및 인터페이스 수정도 가능하네요. 일단 winhex로 추출해낸 스트링파일이 ui/enus 폴더 global.res 파일 안에 있는것 같네요. 폰트는 swf 형식으로 되어있네요. 번역작업을 하려면 res 파일을 건들여야 할것같은데, 이 부분은 제 실력 밖이네요 ;;;;;;;; :: 사용 방법 :: 1. PortRoyale3_Extract.rar 파일을 다운받으신다음 포트로얄3가 설치된 폴더에 압축해제..
Damien.Lee
Lee's Lab