본문 바로가기

MFC8

MFC 라디오 버튼 추가 MFC 라디오 버튼 추가 1) 추가 하고자 하는 그룹 정한다. 2) 속성페이지에서 group 은 false , tabstop 은 true 한다. * 탭 순서가 연속적으로 안되어 있다면 그룹핑이 안된다. 라디오 버튼 컨트롤 탭 순서는 연속적으로 해주어야 한다. 예) 1,2,3,4 또는 5,6,7,8 등등등CTRL+D 탭순서 번호를 재지정 할 수 있다. 2017. 6. 8.
Sleep함수 안쓰고 효과 주기 C++,C# 멀티 쓰레드 프로그램 환경에서 Sleep 대신 약간의 딜레이가 필요 할때가 있다.나의 경우 여러 스크린샷을 찍어 저장할때 사용 하였다. C++void CMainFrame::Delay(){MSG msg;DWORD dwStart;dwStart = GetTickCount();while(GetTickCount() - dwStart < 1500) // 1000 =1초{while(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)){TranslateMessage(&msg);DispatchMessage(&msg);}}} C#private DateTime Delay(int ms){ DateTime dateTimeNow = DateTime.Now; TimeSpan duration = new Time.. 2013. 5. 9.
VC6 Release 모드에서 디버깅하기 Debug 모드에서는 잘 되던 프로그램이 Release 모드에서 실행하면 프로그램이 죽는 경우가 생길 수 있는데 변수 초기화 문제 또는 Debug 와 Release 모드에서 서로 다른 정의를 갖는 매크로를 사용하는 경우가 문제인 상황이 많다. 문제가 어디해서 발생했는지를 찾기 위해 디버깅을 해야하는데 Release 모드에서는 디버깅 데이터들을 포함하지 않기 때문에 불가하다. 그래서 다음과 같은 방법으로 Release 모드에서 디버깅을 해볼 수 있다. 1. Project -> settings -> C/C++ -> Category 에서 General -> Optimizations 에서 Disable 선택, Debug info 에서 Program database 선택 2. Project -> settings .. 2009. 9. 14.
사용자정의 메시지 버그? unhandled exception 에러 발생 할때 클라이언트 프로그램 기능중 간단한 소켓 부분을 추가 하고 있었다. 한개의 쓰레드 생성하여 단순한 recv만을 수행해서 부모에게 SendMessage 하는 구조인데 release에서 프로그램이 오류가 발생 했다 ㅡㅡ; 결론적으로 사용자 정의 메시지 함수 구현부분을 정확히 안해서 발생했던 문제였다 참고 SYMPTOMS When developing applications in Visual C++ with MFC, you may receive an invalid page fault in Mfc42.dll in release builds due to an incorrect function signature for any of the following MFC macros: ON_MESSAGE() ON_REGISTE.. 2009. 8. 14.
cab 파일 만드는 법 1. VC++ 툴에서 ocx를 만든다. 2. ocx파일을 cap 파일이 있는 경로로 옮긴다. 3. inf 파일을 수정한다. 모듈의 클래스 아디를 넣어주고 버전도 맞추어 준다. 클래스 아디는 개발툴 폴더 odl란 확장자를 가진 파일 맨끝부분에 있는 번호이다. 4. 공인 인증서가 없을 경우 ~~ 1) 명령 프롬프트에서 다음 명령줄을 입력하면 다음과 같은 대화 상자가 생성되어 암호를 입 력하면 개인 키 파일 mycert.pvk 및 mycert.cer이 생성된다. makecert -sv "mycert.pvk" -n "CN=JYS ActiveX" mycert.cer 2) 명령 프롬프트에서 다음 명령줄을 입력하면 mycert.cer로부터 mycert.spc 파일을 생성한다. cert2spc mycert.cer my.. 2008. 11. 12.
문자열 코드 변환 방법 및 기초 지식 (VC++) - 문자열 표현 종류 1. ascii (American Standard Code for information interchange) 아스키는 128개의 가능한 문자조합을 제공하는 7비트(bit) 부호로, 처음 32개의 부호는 인쇄와 전송 제어용으로 사용된다. 2. Unicode 2바이트가 하나의 문자를 나타내며, 세계 각국의 언어를 동일한 코드로 표현할 수 있습니다. Windows NT/2000 운영체제는 내부적으로 Unicode를 사용하고 있습니다. 그렇기 때문에 API 호출시에 Unicode 를 사용한다면 보다 효율적입니다. C++에서는 wchar_t 타입을 사용합니다. 3. MBCS(Multi Byte code Set)/DBCS (Double Byte code Set) 하나의 문자를 나타내기 위해서.. 2008. 10. 30.
WSAAsyncSelect 모델 정의 WSAAsyncSelect를 사용하면 윈속의 소켓 이벤트를 윈도우 메시지를 통하여 비동기적으로 통보 받을 수 있다. WSAAsyncSelect 모델을 이용하기 위해서는 우선 CreateWindow를 이용하여 윈도우를 생성하여 윈도우 프로시저가 동작되도록 해야 한다. 다이얼로그 박스도 윈도우이기 때문에 다이얼로그 박스와 다이얼로그 프로시저를 사용해도 된다. int WSAAsyncSelect ( SOCKET s, // 이벤트를 받기위한 소켓 HWND hWnd, // 메시지를 전달 받을 윈도우 핸들 unsigned int wMsg, // 이벤트 발생시 전달되어질 윈도우 메시지 번호 long lEvent // 이벤트 ); *Anthony Jones 는 말했다. 하나 이상의 소켓을 처리하는 클라이언트를 개발 하고.. 2008. 10. 22.
사용자 정의 메시지 핸들러 1.클래스의 헤더파일에 메시지 정의 ex) #define WM_MY_BTN (WM_USER+3) 2. 클래스의 헤더부분 하단에 DECLARE_MESSAGE_MAP에 SendMessage가 호출할 함수를 afx_msg 붙여서 넣습니다. (함수 정의라 보면됩니다.) ex) protected: // Generated message map functions //{{AFX_MSG(CProgressBar_TWO) ...... afx_msg BOOL OnMyBtn(); ...... //}}AFX_MSG DECLARE_MESSAGE_MAP() 3.클래스 CPP부분으로 와서 BEGIN_MESSAGE_MAP에 메시지와 함수를 연결합니다. BEGIN_MESSAGE_MAP(CFontTestView, CView) //{{AFX.. 2008. 10. 13.