본문 바로가기
반응형

vc++97

[개발/MFC] MFC 팁 54개 1. DC얻기 CClientDC dc(this); 2. Client 영역 구하기 GetClientRect(&rect); WM_SIZE 메시지발생후 cx,cy 사용 3. 문자열 사각형안에 그리기 pDC->DrawText(문자열,사각형,Style); Style : DT_BOTTOM - 문자열을 사각형 맨아래줄에배열 반드시DT_SINGLELINE과 함께사용 DT_CENTER - 문자열을 가로중앙에 배치 DT_VCENTER - 문자열을 세로중앙에 배치 DT_LEFT,RIGHT - 문자열을 좌,우로 배치 DT_SINGLELINE - 문자열을 한줄로만 쓴다 4. Brush 사용법 CBrush brushname(RGB(red,green,blue)); //브러쉬 생성 //이전Brush 저장, 새로운 Brush 선택 C.. 2011. 5. 10.
[개발/VC++] 탭 브라우저 윈도우 핸들 구하기 출처 : http://csk61241.springnote.com/pages/5709479 다들 아시는 것처럼, IE 7에서는 "탭 브라우징" 환경을 지원합니다. "일반 사용자" 입장에서는 이는 분명 환영받을 만한 일입니다. 그런데... 개발자 입장에서는 IE 6과 IE 7간의 환경이 달라짐으로 인해 기존 응용 프로그램들이 정상적으로 구동되지 않는 문제가 있어 ^^ 힘겨울 따름인데요. 오랜만에, IE BHO(Browser Helper Object) 모듈을 다뤄보면서 저도 이 문제에 관심을 갖게 되었습니다. 한번 ^^ 같이 살펴 볼까요? 아마도 대부분의 BHO 모듈에서 다음과 같은 식의 SetSite 코드 유형을 구현하고 있을 것입니다. STDMETHODIMP CHelloWorldBHO::SetSite(IU.. 2011. 5. 4.
[개발/VC] 레지스트리 키 열기, 닫기, 목록 가져오기, 키 값 가져오기 레지스트리 키 열기, 닫기 키 목록 가져오기, 키에 해당하는 값 가져오기(GetText, GetDword 외 필요하시면 추가하시면 됩니다.) 키하위의 값목록 가져오기. 이와 같은 동작을 하는 함수만 아래 나열. typedef struct REGVALUE_T { enum { TYPE_NONE, TYPE_DWORD, TYPE_SZ }type; string key; union { DWORD val_dword; char *val_sz; }value; }RegValue, *PRegValue; typedef list RegValueList; HKEY RegCtrl::OpenKey(string keyName) { HKEY hKey = NULL; string retval_; LONG lretval_; string rV.. 2011. 4. 13.
[개발/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.
반응형