본문 바로가기
728x90
반응형

프로그래밍/Windows26

(싱글 더블 와이드) 함수 정리 Generic-textSBCS (_UNICODE &_MBCS_UNICODE defined routine name MBCS not defined)defined _cgetts_cgets_cgets_cgetws_cgetts_s_cgets_s_cgets_s_cgetws_s_cputts_cputs_cputs_cputws_fgettcfgetcfgetcfgetwc_fgettchar_fgetchar_fgetchar_fgetwchar_fgettsfgetsfgetsfgetws_fputtcfputcfputcfputwc_fputtchar_fputchar_fputchar_fputwchar_fputtsfputsfputsfputws_ftprintffprintffprintffwprintf_ftprintf_sfprintf_sfprin.. 2014. 5. 25.
IPC MailSlot 메일 슬롯 Colored By Color Scripter™123456789101112131415161718192021222324252627282930313233#include#include#includeint _tmain(){ HANDLE hMailSlot; DWORD sz; hMailSlot = CreateMailslot( _T("\\\\.\\mailslot\\tmp"), 0, MAILSLOT_WAIT_FOREVER, NULL ); if (hMailSlot == INVALID_HANDLE_VALUE){ puts("메일 슬롯 생성 실패"); return -1; } while (1){ TCHAR msg[52] = { 0, }; if (!ReadFile(hMailSlot, msg, 50, &sz, NULL )){ _t.. 2014. 5. 25.
tchar.h Colored By Color Scripter™1234567#include#include#includeint main(){ _tprintf("T E S T "); return 0;} 옛날에 위처럼 코딩하고 왜 _tprintf가 안 되지? 라고 생각했었던 때가 있었다. _tprintf는 Colored By Color Scripter™12345#ifdef _UNICODE #define _tprintf wprintf#else #define _tprintf printf#endif 라고 정의 되어 있는데 왜 안 될까.. 이유는 바로 비쥬얼 스튜디오에서 사용자의 편의를 위해 기본적으로 _UNICODE를 정의해놨기 때문이였다. 따라서 _tprintf는 자동으로 wprintf로 바뀌었고, 그 인자는 유니코드 기반을 받.. 2014. 5. 13.
사용자 정의 에러 함수 _invalid_parameter_handler Colored By Color Scripter™1234567891011121314151617181920212223#include#include#include#include//에러 발생시 호출할 함수void InvalidParameterHandler(PCTSTR expression, PCTSTR function, PCTSTR file, unsigned int line, uintptr_t){ std::wcout 2014. 5. 1.
안전 문자열 함수 _tcscpy_s Colored By Color Scripter™12345678910#include#include#includeint main(){ TCHAR str[6]; wcscpy_s(str, _countof(str), L"123456"); printf("%S\n", str); return 0;} strcpy나 strcat 같은 문자열 함수에서 일어날 수 있는 BOF를 보완하기 위해 새로 만들어진 문자열 함수. 기존의 함수에 문자열 길이가 인자로 추가되어 들어간다. _countof() 메크로는 windows.h에 정의되어 있다. Colored By Color Scripter™1#define _countof(_Array) (sizeof(*__countof_helper(_Array)) + 0) 인자로 넣은 문자열의 길이.. 2014. 4. 30.
윈도우즈 에러 핸들링 GetLasterror / FormatMessage Colored By Color Scripter™1234567891011121314151617181920212223242526272829303132333435#include#includeint main(){ DWORD dwError = GetLastError(); HLOCAL hlocal = NULL; //언어 설정 DWORD systemLocale = MAKELANGID(LANG_KOREAN, SUBLANG_KOREAN); FormatMessage( //운영체제에 정의된 에러 코드를 가져온다. FORMAT_MESSAGE_FROM_SYSTEM | //%를 자리 표시자로 사용 안 함(%s, %c 등을 무시). FORMAT_MESSAGE_IGNORE_INSERTS | //메모리 공간을 할당 FORMAT_MES.. 2014. 4. 30.
윈도우 가시모드/비가시모드 ShowWindow(hInsert1[i-1][j],SW_SHOW);ShowWindow(hInsert1[i][j],SW_HIDE); 2014. 3. 28.
네모 그리기, 선 긋기, 글 쓰기 HDC hdc;HBRUSH hBrush; //네모 그리기hBrush=CreateSolidBrush(RGB(255,200,200));(HBRUSH)SelectObject(hdc,hBrush);Rectangle(hdc,17,50,107,771);DeleteObject(hBrush); 반드시 오브젝트 제거해줘야 한다 함.동적 할당 할 뒤에 해제하는 거랑 똑같은거래. 잘은 모르겠다. //선 긋기MoveToEx(hdc,17,50+120*i,NULL);LineTo(hdc,645,50+120*i); 위 함수로 스타트 점을 설정해주고, 그것을 시작점으로 아래 함수에서 지정한 위치까지 줄을 긋는다. 줄을 긋고 나면 아래 함수에서 지정한 위치가 다시 스타트 점으로 설정됨. //글 쓰기TextOut(hdc,680,30,L".. 2014. 3. 28.
winAPI 윈도우에 값 쓰거나 읽기 1. 함수를 이용하기 GetWindowText(hWnd,tmp1,4);SetWindowText( HWND hWnd,l LPCTSTR lpString) 2. 메시지 보내기SendMessage(hWnd,WM_GETTEXT,len+1,(LPARAM)Caption);SendMessage(swapA,WM_SETTEXT,0,(LPARAM)tmp2); 2014. 3. 28.
winAPI 버튼에 이미지 입히기 LoadBitmap HBITMAP hBitmap;hBitmap = (HBITMAP)LoadBitmap(g_hInst, MAKEINTRESOURCE(IDB_BITMAP1)); SendMessage(hBtn1[d], BM_SETIMAGE, 0, (LPARAM)hBitmap); 리소스로 불러온 이미지 파일만 가능하다. LoadImageW( __in_opt HINSTANCE hInst, __in LPCWSTR name, __in UINT type, __in int cx, __in int cy, __in UINT fuLoad);#ifdef UNICODE#define LoadImage LoadImageW#else#define LoadImage LoadImageA#endif // !UNICODE LoadImage() 라는 함수도 있는데.. 2014. 3. 28.
유니코드 -> 정수형 변환 문자열(char*)을 정수로 변환하는건 atoi() 함수이고, 유니코드를 정수형으로 변환하는건 _wtoi() 함수다. int atoi( const char *str ); int _wtoi( const wchar_t *str ); int utoi(HWND hWnd){TCHAR tmp[4];GetWindowText(hWnd,tmp,3);return _wtoi(tmp);} 이렇게 윈도우 컨트롤에서 문자열 가져다가 쓰면 꿀잼. 2014. 3. 28.
유니코드 파일 입출력 / 유니코드 한글 사용 FILE fout=_tfopen(L"output.txt",L"w");fclose(fout); 한글이 깨지면 메인 함수에 #include _wsetlocale( LC_ALL, L"korean" ); 혹은 std::cout.imbue(std::locale("korean")); 써주고. fwprintf() 함수로 파일 출력. 입력은 유니코드 관련 함수 찾아서 써주고. fwscanf() 2014. 3. 28.
728x90
반응형