본문 바로가기

윈도우/MFC

MFC 프로젝트 이름을 쉽게 바꿔주는 프로그램 VSProjectRenamer! Target Project Directory에 Browse 버튼을 눌러 바꾸고자하는 프로젝트의 경로를 설정해줍니다. Old Project에 기존에 프로젝트 이름을 적고.. New Project Name에 새로운 프로젝트 이름을 적고.. Run 버튼을 누르면 깔끔하게 바뀐 내용을 확인 하실수 있을겁니다. cf) 제가 확인해 본결과 이 프로그램이 정말 간단하게 프로젝트 이름을 바꾸긴 하지만 100% 확실하게 보장하지는 않는 것 같습니다. 간혹 하나정도 놓치는게 있는데 그럴때 에러표시를 따라가서 고쳐만 준다면 문제 될건 없습니다. 어렵지도 않더라구요~~ ㅎ 그것만 수고해주면 최고로 쉬운 프로그램이 될듯.. ㅎ 더보기
MFC 엔터나 취소버튼 누를때 프로그램 죽는현상 방지 MFC 엔터나 취소버튼 누를때 프로그램 죽는현상 방지 BOOL 클래스::PreTranslateMessage(MSG* pMsg) { // TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다. switch(pMsg->message) { case WM_KEYDOWN: { switch(pMsg->wParam) { case VK_ESCAPE: case VK_RETURN: { ::TranslateMessage(pMsg); ::DispatchMessage(pMsg); return TRUE; } } break; } } return 클래스::PreTranslateMessage(pMsg); } 더보기
MFC 로그 분석을 위한 Console 창 만들기 MFC 로그 분석을 위한 Console 창 만들기 if (!AllocConsole()) AfxMessageBox("Failed to create the console!", MB_ICONEXCLAMATION); else { freopen("conout$", "w", stdout); freopen("conout$", "w", stderr); // static const char szTitle[64]; char szTitle[64]; sprintf( szTitle, "%s %s", "Console Test", "LOG"); ::SetConsoleTitle( szTitle ); Sleep( 500 ); HWND hWnd = ::FindWindow( NULL, szTitle ); // Get the menu fo.. 더보기
MFC Tip 매일 일정시간에 작동하는 Timer 호출 매일 일정시간에 작동하는 Timer 호출 OnTimer(UINT nIDEvent) 안에서 코딩추가 if( nIDEvent == IDU_TIMER_TEST_SEND ) { CString strHour = CTime::GetCurrentTime().Format("%H"); // 시간만 추출 int iHour; iHour = _ttoi((LPTSTR)(LPCTSTR)strHour); if( 1 == iHour) // 새벽 1시가 되면 특정기능이 수행된다 { // 특정기능 삽입 } } 물론 초기화 함수에서 SetTimer(IDU_TIMER_TEST_SEND , .....); 호출해야함 더보기
MFC CTime 클래스를 이용하여 날짜 계산하기 (날짜연산) char Year[5]; char Month[3]; char Day[3]; strncpy(Year , RecvTime , 4); Year[4] = 0x00; strncpy(Month , RecvTime + 4 , 2); Month[2] = 0x00; strncpy(Day , RecvTime + 6 , 2); Day[2] = 0x00; // int 타입으로 변환 int iYear = _ttoi(Year); int iMonth = _ttoi(Month); int iDay = _ttoi(Day); CTime request_Time(iYear , iMonth , iDay , 0 , 0 , 0); // 날짜 연산을 하기위해서 받은 날짜를 CTime객체로 변경 request_Time += CTimeSpan( 1, .. 더보기
응용 프로그램의 side-by-side 구성이 잘못되어 응용 프로그램을 시작하지 못했습니다. 응용 프로그램의 side-by-side 구성이 잘못되어 응용 프로그램을 시작하지 못했습니다. Visual C++ 2008로 개발된 프로그램을 실행했을때 아래와 같은 에러메세지가 뜨면서 실행되지 않을때 조치방법 위와같은 경고창이 나올때는 아래링크로 가서 버젼에 맞는 라이브러리 런타임 구성요소를 설치해야 합니다. Microsoft Visual C++ 2008 재배포 가능 패키지(x86) Microsoft Visual C++ 2008 SP1 재배포 가능 패키지(x86) Microsoft Visual C++ 2008 SP1 재배포 가능 패키지(x64) 더보기
자리에 맞춰서 오른쪽정렬과 공백에는 0으로 삽입하는 %s 출력방식 자리에 맞춰서 오른쪽정렬과 공백에는 0으로 삽입하는 %s 출력방식 char interval[5]; 일경우 CString IntervalMin; // 180에 삽입되어있을겨우 sprintf(interval , "%s" , (LPTSTR)(LPCTSTR)IntervalMin); 이와 같은 포맷일경우 interval[0] => 1 interval[1] => 8 interval[2] => 0 interval[3] => 공백 sprintf(interval , "%04s" , (LPTSTR)(LPCTSTR)IntervalMin); 이와 같은 포맷일경우 interval[0] => 0 interval[1] => 1 interval[2] => 8 interval[3] => 0 더보기
2008 개발중 CDlgFlowApp::m_CConfigData' : protected 멤버('CDlgFlowApp' 클래스에서 선언)에 액세스할 수 없습니다. 에러가 뜰때 2008 개발중 CDlgFlowApp::m_CConfigData' : protected 멤버('CDlgFlowApp' 클래스에서 선언)에 액세스할 수 없습니다. 작업중 위와 같은 에러가 뜨네요~ 뭥미?? 분명 m_CConfigData 는 public 으로 선언되어있는데..?? 알수가 없네요 @@ 1시간 가량의 구글링 끝에 해결책은 발견했네요~ 이유는 모르겠지만... 일단 에러를 해결했으니 다음 스텝을 나가야 겠네요~~ class CDlgFlowApp : public CWinAppEx { public: CDlgFlowApp(); // 재정의입니다. public: virtual BOOL InitInstance(); // 구현입니다. DECLARE_MESSAGE_MAP() public : => 추가 (위에 p.. 더보기
Visual Studio 2008 이용중 코드 요소 'XX'이(가) 읽기전용이므로 추가/제거 작업을 수행할수 없습니다. 메세지가 뜰때 Visual Studio 2008 이용중 코드 요소 'XX'이(가) 읽기전용이므로 추가/제거 작업을 수행할수 없습니다. 메세지가 뜰때 해당 프로젝트의 디렉토리안에서 ncb파일을 삭제하면 해결됩니다.~~ ㅎ 더보기
fatal error C1083: 포함 파일을 열 수 없습니다. 'afxcontrolbars.h': No such file or directory 오류가 날때 fatal error C1083: 포함 파일을 열 수 없습니다. 'afxcontrolbars.h': No such file or directory 오류가 날때 #include 위와 같은 헤더파일을 참조하면 나오는 에러입니다. MFC의 리본 및 컨트롤 막대 지원하는 헤더파일로써 Visual Studio 2008 SP1 을 설치하면 해결됩니다. 당연히 Visual Studio 2003 이하 버전에서는 사용이 안됩니다.~~ 아래 사이트에가서 Service Pack 1 을 다운 받고 설치하셔야 오류를 잡을 수 있습니다. Service Pack 1 온라인 설치 파일링크 : http://www.microsoft.com/downloads/ko-kr/confirmation.aspx?familyId=27673c47-b3.. 더보기