반응형 C & C++444 [MFC] MFC 대화상자에서 초기화 및 종료 순서 "메시지 처리에 대해서 잘 알고 있다면 다음 내용이 필요 없다." MFC에서 기본적인 위도우 프레임웍이 설계되어 있고 그 곳에 맞게 필요한 코드를 넣어주면 된다. 프로그래밍에 있어서 가장 중요한게 자원 할당과 해제이다. 특히 C++에서는 메모리 관리를 프로그래머가 직접해주기 때문에 잘못된 메모리 관리는 시스템 전체에 안좋은 영향을 준다. MFC에서 가장 무식하게 자원 할당과 해제를 하는 경우를 보면 생성자와 소멸자에 하는 경우이다. 실제 직접 생성자와 소멸자에 코딩하는 경우는 드물고 포인터 변수를 NULL로 초기화하는 정도이다. 그럼 MFC에서 실제 API 호출 순서를 보자. 응용프로그램 형태 중에서 대화상자를 중심으로 살펴보겠다. Case 1) 대화상자 뛰우고 [X] 버튼 눌러 종료하기 Warning:.. 2011. 4. 13. [MFC] 윈도우에서 GetWindowRect, GetCllientRect를 통해 크기 얻기 Window의 컨트롤이나 핸들러의 크기나 위치를 관리하기 위한 API를 살펴보겠다. 일단 컨트롤의 위치 값을 얻는 API는 두 가지가 있다. GetWindowRect와 GetClientRect이다. GetWindowRect: 윈도우 화면 좌표 값으로 위치 정보 반환한다. GetClientRect: 윈도우 클라이언트 영역사에서의 좌표값 반환한다. 일단 윈도우의 좌표 표시는 일반적으로 사용하는 수학의 좌표와는 조금 틀리다. 수학에서 X, Y축의 증가하는 값는 왼쪽과 위쪽이다. 그러나 윈도우에서는 Y축의 방향이 아래로 향한다. 그렇기에 Y축의 값을 계산할 때 주의를 요한다. 다음으로는 화면 좌표간의 변환를 사용하는 API를 보겠다. ScreenToClient와 ClientToScreen 함수이다. Screen.. 2011. 4. 13. 문자열 관련 자료형 정리 문자열 관련 자료형 정리 LPSTR : char * LPCSTR : const char * LPCTSTR : const char * 또는 const WCHAR * WORD : 보통 2바이트의 부호없는 정수형 (*.word형을 string형으로 바꾸기 string := IntToStr(word); ) DWORD : 4바이트의 부호없는 정수형 DWORD unsigned long 그럼, WORD와, int의 차이점은... WORD는 4글자 int는 3글자 typedef unsigned short WORD; //WORD는 예약어가 아니죠 (typedef는 변수부분) (cf.define은 전처리 부분) *.단순참고 char, unsigned char, signed char : 1 byte short, unsign.. 2011. 4. 7. 파일존재 파악, 선택시 파일삭제 파일이 있는지 여부를 체크한다. CString strFilePath = "파일경로"; BOOL bCheck = find.FindFile(strFilePath); 주로 파일이 있냐 없냐를 판독한다. DeleteFile()함수와 함께 선택시 파일삭제도 한다. //bDel 0) { bCheck = TRUE; //파일사이즈가 0보다크니깐 쓸수 있다 } else { bCheck = FALSE; //파일사이즈가 0이거나 작으면 못쓰니깐 fALSE } return bCheck; }//////////////////////////////////////////////////////////////////////////////////////// CStdioFile ExistFile; ExistFile.Remove(_T("te.. 2011. 4. 7. 파일 사이즈 얻어오기 파일 용량을 알아낼때 유용하다. 주로 파일사이즈 알아낼때 써먹기도 하지만, 텍스트파일에 내용이 쓰여있느냐 없느냐를 판독할때도 써먹는다. CString strFilepath = "파일경로"; // 파일경로 int nFileSize = 0; //파일사이즈 변수...파일용량에 따라 long, LONGLONG형으로 변환가능(되나?) HANDLE hFile = CreateFile(strFilePath, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL); int nFileSize = GetFileSize(hFile, NULL); 2011. 4. 7. [Tip] Wait() 시간 갭을 주기위한 함수 ////////////////////////////////////////////////////////////////// void Wait(DWORD dwMillisecond); // 시간 갭을 주기위한 함수 ///////////////////////////////////////////////////////////////// void CDlgInitDbFromServer::Wait(DWORD dwMillisecond) { MSG msg; DWORD dwStart; dwStart = GetTickCount(); while (GetTickCount() - dwStart < dwMillisecond) { while (::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { ::Trans.. 2011. 4. 7. 이전 1 ··· 54 55 56 57 58 59 60 ··· 74 다음 반응형