void DrawBitmap(HDC hdc, int x, int y, HBITMAP hBitmap)
{
HDC hMemDC;
HBITMAP hOldBitmap;
int nWidth, nHeight;
BITMAP bitmapData;
hMemDC = CreateCompatibleDC(hdc);
hOldBitmap = (HBITMAP)SelectObject(hMemDC, hBitmap);
GetObject(hBitmap, sizeof(BITMAP), &bitmapData);
nWidth = bitmapData.bmWidth;
nHeight = bitmapData.bmHeight;
SetStretchBltMode(hdc, HALFTONE);
StretchBlt(hdc, 0, 0, 160, 120, hMemDC, 0, 0, nWidth, nHeight, SRCCOPY);
//BitBlt(hdc, x, y, nWidth, nHeight, hMemDC, 0, 0, SRCCOPY);
SelectObject(hMemDC, hOldBitmap);
DeleteDC(hMemDC);
}
API
- DrawBitmap() 함수 2011.03.10
- UTF-8 to ANSI 함수 2009.05.21
- 구글 API 날씨정보 2009.05.19 2
- InstallShield 에서 regsvr32 로 COM 등록 스크립트 2009.02.13
- WideChar 에서 MultiByte 로 변환 2009.02.13
- '내 문서' 경로 얻어오기 2009.02.13
- 투명 윈도우 만들기 2009.02.13
- 한글인지 영문인지 한자인지... 2009.02.13
DrawBitmap() 함수
2011. 3. 10. 10:44
UTF-8 to ANSI 함수
2009. 5. 21. 11:36
char* UTF8toANSI(char *pszCode)
{
BSTR bstrWide;
char* pszAnsi;
int nLength;
// Get nLength of the Wide Char buffer
nLength = MultiByteToWideChar(CP_UTF8, 0, pszCode, lstrlen(pszCode) + 1,NULL, NULL);
bstrWide = SysAllocStringLen(NULL, nLength);
// Change UTF-8 to Unicode (UTF-16)
MultiByteToWideChar(CP_UTF8, 0, pszCode, lstrlen(pszCode) + 1, bstrWide, nLength);
// Get nLength of the multi byte buffer
nLength = WideCharToMultiByte(CP_ACP, 0, bstrWide, -1, NULL, 0, NULL, NULL);
pszAnsi = new char[nLength];
// Change from unicode to multi byte
WideCharToMultiByte(CP_ACP, 0, bstrWide, -1, pszAnsi, nLength, NULL, NULL);
SysFreeString(bstrWide);
return pszAnsi;
}
구글 API 날씨정보
2009. 5. 19. 13:59
기본적으로 지역명으로 가져올 수 있는 경우의 URL은
http://www.google.com/ig/api?weather=Seoul
http://www.google.com/ig/api?weather=Busan
등이 있다.
하지만 위와 같이 지역명으로 가져올 수 없는 지역일 경우,
http://www.google.com/ig/cities?output=xml&hl=ko&country=kr
에서, 해당지역의 위도와 경도를 찾아 입력하여 주면 된다.
예를 들어 강릉의 경우,
Gangneung 으로 정보를 불러올 수 없지만 아래와 같이 위도와 경도를 입력하여 줌으로써 원하는 정보를 얻을 수 있다.
http://www.google.com/ig/api?hl=ko&weather=gangneung,,,37750000,12889993
http://www.google.com/ig/api?weather=Seoul
http://www.google.com/ig/api?weather=Busan
등이 있다.
하지만 위와 같이 지역명으로 가져올 수 없는 지역일 경우,
http://www.google.com/ig/cities?output=xml&hl=ko&country=kr
에서, 해당지역의 위도와 경도를 찾아 입력하여 주면 된다.
예를 들어 강릉의 경우,
Gangneung 으로 정보를 불러올 수 없지만 아래와 같이 위도와 경도를 입력하여 줌으로써 원하는 정보를 얻을 수 있다.
http://www.google.com/ig/api?hl=ko&weather=gangneung,,,37750000,12889993
InstallShield 에서 regsvr32 로 COM 등록 스크립트
2009. 2. 13. 13:05
function OnEnd()
string szProgram, szCmdLine;
begin
szProgram = WINSYSDIR ^ "regsvr32.exe ";
szCmdLine = TARGETDIR ^ "파일이름";
//LongPathToShortPath (szCmdLine);
LongPathToQuote (szCmdLine, TRUE);
MessageBox(szCmdLine, INFORMATION);
LaunchAppAndWait(szProgram, szCmdLine, WAIT/*LAAW_OPTION_CHANGEDIRECTORY | LAAW_OPTION_FIXUP_PROGRAM /*LAAW_OPTION_WAIT*/);
end;
WideChar 에서 MultiByte 로 변환
2009. 2. 13. 13:02
// 길이를 구하고
int nMultiByteLen = WideCharToMultiByte(CP_ACP, 0, pwcName, -1, NULL, 0, NULL, NULL);
// 변환한다.
WideCharToMultiByte(CP_ACP, 0, pwcName, -1, szName, nMultiByteLen, NULL, NULL);
'내 문서' 경로 얻어오기
2009. 2. 13. 12:54
char szPath[MAX_PATH] = {0,}; // 경로 받아올 변수
SHGetSpecialFolderPath(NULL, szPath, CSIDL_PERSONAL, FALSE);
투명 윈도우 만들기
2009. 2. 13. 10:40
// 상수 정의
#ifndef WS_EX_LAYERED
#define WS_EX_LAYERED 0x00080000
#define LWA_COLORKEY 0x00000001
#define LWA_ALPHA 0x00000002
#endif
// USER32.DLL 에서 import할 함수형
typedef BOOL (WINAPI *lpfnSetLayeredWindowAttributes)(HWND hWnd, COLORREF crKey, BYTE bAlpha, DWORD dwFlags);
// 멤버변수로 보관
lpfnSetLayeredWindowAttributes m_pSetLayeredWindowAttributes;
// 이제부터 코드 추가 부분...
// USER32.DLL로부터 함수를 import한다.
HMODULE hUser32 = GetModuleHandle(_T("USER32.DLL"));
m_pSetLayeredWindowAttributes = (lpfnSetLayeredWindowAttributes)GetProcAddress(hUser32, "SetLayeredWindowAttributes");
// import가 제대로 됐는지 체크한다.
if (NULL == m_pSetLayeredWindowAttributes)
return FALSE;
// 다이얼로그의 현재 상태를 체크하고 WS_EX_LAYERED 속성을 추가한다.
SetWindowLong(m_hWnd, GWL_EXSTYLE, GetWindowLong(m_hWnd, GWL_EXSTYLE) | WS_EX_LAYERED);
// 윈도우를 70% 가시화
m_pSetLayeredWindowAttributes(m_hWnd, 0, (255 / 70) * 100, LWA_ALPHA);
한글인지 영문인지 한자인지...
2009. 2. 13. 10:10
0x80은 DBCS를 알수 있게 해주는 Mask입니다.
char character;
WORD chDBCS;
if (character & 0x80) {
// DBCS
if ( ( chDBCS = (character << 8) ) > 0xCAA0) {
// Hanja character
}
// Hangeul character
} else {
// SBCS
if (character < 0x41) {
// Symbol..
if (character < 0x20) {
// System Char
} else if (character >= '0' && character <='9') {
// Numeric characters..
} else {
// Symbol
}
} else if (character >= 0x5B && character <= 0x60) {
// Symbol 2..
} else if (character > 0x7A) {
// Symbol 3..
} else {
// Alphabet.
}
}