본문 바로가기

윈도우

WaitForSingleObject , WaitForMultipleObject WaitForSingleObject , WaitForMultipleObject WaitForSingleObject DWORD WaitForSingleObject( HANDLE hHandle, // handle to object DWORD dwMilliseconds // time-out interval ); 실패시 WAIT_FAILED 리턴 - HhANDLE : 상태를 확인할 커널 오브젝트의 핸들을 전달. 이 핸들의 커널 오브젝트 상태가 signaled가 되어야 리턴한다. non-signaled상태에 있을 경우 함수는 리턴하지 않고 대기상태로 들어간다. - dwMilliseconds : 타임아웃을 설정한다. 커널오브젝트가 singnaled 상태로 바뀌지 않을 경우 무한대기 상태로 빠질수 있다. 그러나 타임.. 더보기
"COFF로 변환하는 동안 오류가 발생했습니다." 컴파일 에러 발생시 "COFF로 변환하는 동안 오류가 발생했습니다." 컴파일 에러 발생시 프로젝트 속성 >> 매니페스트도구 >> 입력 및 출력 >> 매니페스트포함을 "아니오" 로 속성 변경 그래도 문제가 해결되지 않으면 VS2010 서비스팩을 다운받아서 설치해야 함 링 크 : http://www.microsoft.com/ko-kr/download/search.aspx?q=VS2010 더보기
MFC 프로젝트 이름을 쉽게 바꿔주는 프로그램 VSProjectRenamer! Target Project Directory에 Browse 버튼을 눌러 바꾸고자하는 프로젝트의 경로를 설정해줍니다. Old Project에 기존에 프로젝트 이름을 적고.. New Project Name에 새로운 프로젝트 이름을 적고.. Run 버튼을 누르면 깔끔하게 바뀐 내용을 확인 하실수 있을겁니다. cf) 제가 확인해 본결과 이 프로그램이 정말 간단하게 프로젝트 이름을 바꾸긴 하지만 100% 확실하게 보장하지는 않는 것 같습니다. 간혹 하나정도 놓치는게 있는데 그럴때 에러표시를 따라가서 고쳐만 준다면 문제 될건 없습니다. 어렵지도 않더라구요~~ ㅎ 그것만 수고해주면 최고로 쉬운 프로그램이 될듯.. ㅎ 더보기
스마트 포인터 심플예제 처음 스마트포인터를 봤을때 참 기발하다고 생각했다~~ 캬캬 #include using namespace std; class Point { int x; int y; public: Point(int _x = 0, int _y = 0) : x(_x) , y(_y) { } void Print() const { cout 더보기
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 더보기