본문 바로가기
반응형

C & C++444

시리얼 통신 필수 함수(HexToInteger, HexToFloat, HexToDouble) 원본 출처 : 여기 여기 시리얼통신할때 필요한 함수들이다 //BUFFER_SIZE는 배열이 가지는 최대값이다(예 #define BUFFER_SIZE 4096) //hex값을 integer형으로 변경, 0xabcd ->43981, 2465 -> 2465 BOOL GetHexStringToInteger(__in CStringA strHex, __inout int& nValue) { strHex.Replace(" ", ""); strHex.Trim("\r\n "); nValue = strtol(strHex, NULL, 16); return TRUE; } //hex값을 float값으로 BOOL GetHexStringToFloat(__in CStringA strHex, __inout double& fValue) .. 2013. 11. 14.
화면 캡쳐(Screen Capture) 하기 화면 캡쳐(Screen Capture) 하기 바탕화면 정보 얻어와 bmp 저장하기 현재 스크린 화면을 캡쳐하여 그 이미지를 정의된 DIB형식에 따라 BMP파일로 저장하는 방법에 대해서 알아보겠습니다. ( 저장된 파일은 현재 폴더에 'image.bmp' 파일명으로 저장됩니다. ) // 캡쳐를 하기 위해서 화면에서 현재 프로그램을 감춘다. ShowWindow(SW_HIDE); // 스크린 전체를 캡쳐하기 위해서 CWindowDC 형식으로 DC를 얻는다. // GetDC의 파라메터에 특정 윈도우 핸들을 넣지 않고 NULL을 넣으면 // CWindowDC 형식으로 DC를 얻게 된다. HDC h_screen_dc = ::GetDC(NULL); // 현재 스크린의 해상도를 얻는다. int width = ::GetD.. 2013. 11. 14.
[SendMessageCallback] 메시지(Message) 처리 윈도에 메시지를 보낼때 보통 PostMessage 또는 SendMessage를 사용합니다. 다 아는 얘기지만 PostMessage는 메시지를 보내고 그 결과를 기다리지 않는 비동기적 성격을 갖고 있으며 SendMessage는 메시지를 보내고 결과가 올때까지 기다리는 동기적 성격을 갖고 있습니다. 따라서 PostMessage는 결과에 상관없이 즉시 리턴하기 때문에 다음 명령을 바로 실행 할 수 있는 장점이 있는 반면 처리 결과를 알기가 불편하고 SendMessage는 메시지 처리결과를 알 수 있지만 처리하는 동안 기다려야 하는 불편함이 있습니다. 그렇다면 여러개의 윈도에 동시에 메시지를 보내놓고 먼저 처리대는 대로 그 결과를 받고 싶은 경우는 어떻게 해야 할까요? 이경우 PostMessage와 SendMe.. 2013. 11. 14.
간단한 FTP 프로그램 원본 출처 : 여기 여기 가끔씩 간단한 업데이트 프로그램을 작성할때 FTP를 이용하곤 하는데... 막상 WinInet FTP API를 이용해서 개발을 하다보면 손이 많이갑니다. 특히 UTF8 인코딩 문제는 상당히 귀찮습니다(어떤서버(알FTP)는 UTF8을 지원하지 않는 반면 또 어떤 서버(파일질라)는 UTF8만을 지원하기도 하죠) 또 컴파일 환경(유니코드, 멀티바이트)에따라 제대로 동작하지 않는 경우도 있구요...그래서 이참에 차라리 범용적으로 쓸 수 있고 기능성도 있는 간단한 클래스를 하나 만들어보자는 생각에 시간을 들여 아래와 같은 CSimpleFfp를 만들고 간단한 예제프로그램을 작성하였습니다. WinInet FTP Wrapper Class 정도 될 것 같군요. 테스트하려면 CFtpExDlg.cpp.. 2013. 11. 14.
포털 사이트 및 웹페이지 자동 로그인 프로그램 2013. 11. 14.
MS Office( 엑셀, 워드, 파워포인터 ) 및 기타 프로그램 설치 여부 확인 엑셀 오토메이션(Excel Automation)을 이용해서 보고서 출력하는 기능을 만들고 있는데 엑셀이 안깔려 있는 피씨의 경우에는 오류가 발생한다. 오류 발생전에 미리 설치 여부를 확인하고 설치가 되어있지 않다면 이 기능을 사용하지 못하도록 아래 소스를 추가한다. // 엑셀 설치 여부 확인 // 열려있는 레지스트리 키(hKey)를 이용하여 lpValueName에 명시된 항목이름의 데이터 형식이나 내용을 얻는데 // 사용하는 함수이다. HKEY nHandle; if(::RegOpenKey(HKEY_LOCAL_MACHINE, L"Software\\Microsoft\\Windows\\CurrentVersion\\App Paths\\Excel.exe", &nHandle) != ERROR_SUCCESS) { A.. 2013. 11. 14.
반응형