본문 바로가기
반응형

vc++97

[개발/MFC] VC++/MFC API 팁 1. 특정 디렉토리 뒤지기 2. API를 이용하는 유니코드와 ANSI 문자열간의 변환 방법 3. 윈도우 탐색기로부터의 Drag&Drop을 받으려면 4. 시스템의 모든 드라이브 알아내기 5. 레지스트리 읽기/쓰기 1. 특정 디렉토리 뒤지기 지정한 디렉토리에 있는 모든 파일을 찾아내는 코드를 만들려면 어떻게 해야 합니까 ? 이 때 사용할 수 있는 API가 바로 FindFirstFile과 FindNextFile, FindClose라는 API들입니다. 사용 예제는 다음과 같습니다. WIN32_FIND_DATA findFileData; HANDLE hFileHandle; // szDir에 뒤지고자 하는 디렉토리의 경로명을 준다. 예를 들면 "C:\\TEMP\\*.*" // 찾아진 파일의 속성은 findFileDa.. 2011. 4. 13.
[개발/MFC] Sleep()함수 대신 프로그램 딜레이 시키기 Sleep()함수 대신 프로그램 딜레이 시키기 개발을 하다가 보면... 어떤 조건이 true가 될 때까지 기다려야 할 때가 있다. 그렇게 하려면 loop를 사용해야한다. 그리고 대기함수인 Sleep() 함수를 사용하게 되는 경우가 생기는데 이 함수를 사용하면. 모든 메세지 처리가 중단되기 때문에 프로그램 응답 없음과 같은 애매하고 난감한 사항에 처하게 된다. 그래서 이 Sleep()이라는 함수 대신에 프로세스나 쓰레드에서 사용되는 메세지는 처리되면서 특정조건이 만족할 때까지 기다릴 수 있는 함수가 필요하다. 대기시간 동안 메세지큐에서 메세지를 확인하여 처리하면서 기다리게 해준다. ///////////////////////////////////////////////////////////////// // 수.. 2011. 4. 8.
[개발/VC++] CreateThread(), _beginthread(), _beginthreadex() 에 관하여 아래 쓰레드 생성함수에 관한 비교가 참 명쾌하게 되어 있습니다. 출처 : http://naiades.tistory.com/6 윈도우즈에서 스레드를 생성하는 API는 CreateThread(), _beginthread(), _beginthreadex() 이렇게 3개의 함수가 존재합니다. CreateThread()와 _beginthread(), _beginthreadex()의 차이점은 다음과 같습니다. CreateThread()는 스레드를 생성하는 기능만 담당한다. _beginthread(), _beginthreadex()는 내부적으로 CreateThread() 를 사용하여 스레드를 생성하고 C Runtime library에서 내부적으로 필요로 하는 메모리 영역을 초기화 해주는 역할을 하게 됩니다. 초기화 .. 2011. 4. 1.
[개발/VC++] 리소스 DLL 만들기 [개발/VC++] 리소스 DLL 만들기 리소스 전용 DLL은 아이콘, 비트맵, 문자열 및 대화 상자 등의 리소스만 들어 있는 DLL입니다. 리소스 전용 DLL을 사용하면 여러 프로그램 간에 동일한 리소스 집합을 쉽게 공유할 수 있습니다. 여러 언어로 지역화된 리소스가 있는 응용 프로그램을 제공하는 것도 좋은 방법입니다(MFC 응용 프로그램의 지역화된 리소스: 위성 DLL 참조). 리소스 전용 DLL을 만들려면 새로운 Win32 DLL(비 MFC) 프로젝트를 만든 다음 이 프로젝트에 리소스를 추가합니다. 새 프로젝트 대화 상자에서 Win32 프로젝트를 선택한 다음 Win32 프로젝트 마법사에서 DLL 프로젝트 형식을 지정합니다. 해당 DLL에 사용할 문자열 또는 메뉴와 같은 리소스가 포함된 새 리소스 스크.. 2011. 3. 30.
[개발/MFC] UTF8로 파일저장하기 [MFC] UTF8로 파일저장하기 CString strFilePath = dlg.GetPathName(); // UTF8로 컨버팅 int nAllocLen = WideCharToMultiByte (CP_UTF8, 0, strSaveData, -1, NULL, 0, NULL, NULL); CHAR * pBuffer = new CHAR [nAllocLen + 1]; memset (pBuffer, 0, nAllocLen); WideCharToMultiByte (CP_UTF8, 0, strSaveData, -1, pBuffer, nAllocLen + 1, NULL, NULL); // 파일로 저장 CFile file; file.Open (strFilePath, CFile::modeCreate | CFile::mo.. 2011. 3. 22.
[개발/VC++] 응용 프로그램 구성이 올바르지 않기 때문에 ... VC++ 개발을 하면서... 난감한 상황들이 한 두번이 아니다. 그 중 간단한 MFC 프로그램을 작성하는데 가상머신에서 실행하려니 에러가 난다. "응용 프로그램 구성이 올바르지 않기 때문에 이 응용 프로그램을 시작하지 못했습니다. 이 문제를 해결하려면 응용 프로그램을 다시 설치하십시오." 이런 에러가 난다. 좀 당황스럽다. VC++이 설치 되어 있지 않는 곳에서 실행하려면 도대체 무엇을 해줘야 하는가. 델파이에서는 런타임 라이브러리 팩키지 포함 옵션만 체크하면 문제가 없었는데 VC++에서는 그런 옵션이 없다... 알아보니 마이크로소프트에서는 manifest 관리를 위하여 debug/release 모드와 VC++버전별로 dll 파일을 별도로 하고 있다. 그런데... 이것을 함께 묶을 수 있다거나 함께 배포.. 2011. 3. 21.
반응형