본문 바로가기

프로그래밍언어/C++, MFC10

MFC 라디오 버튼 추가 MFC 라디오 버튼 추가 1) 추가 하고자 하는 그룹 정한다.  2) 속성페이지에서 group 은 false , tabstop 은 true 한다. * 탭 순서가 연속적으로 안되어 있다면 그룹핑이 안된다. 라디오 버튼 컨트롤 탭 순서는 연속적으로 해주어야 한다. 예) 1,2,3,4 또는 5,6,7,8 등등등CTRL+D 탭순서 번호를 재지정 할 수 있다. 2017. 6. 8.
Visual Studio 2010 관리자 권한 실행 프로그램 만들어 주기 윈도우 Vista 버전 이후로는 관리자 권한이 프로그램 배포시 골치거리가 되었습니다.역시 보안을 강화하면 많이 피곤해지는 듯...  아래 설명할 내용은 VC++ 에 해당 됩니다. C# 등 비슷할 것이라 생각 됩니다. 너무 늦었지만 VS6.0 기반의 프로그램을 VS2010 으로 변환을 해야만 했습니다. 2주 정도 삽질해서 변환을 성공했는데 프로그램 배포후 문제 발생 -_-사용자 설정에 따라 관리자 권한을 요구함 그래서 아래와같이 설정을 변경 하였고,   문제가 없습니다.  솔루션 탐색기에서 프로그램에서 오른쪽 클릭 속성 1. 구성속성 ->C/C++-> 일반  클릭:  아래와 같이 설정 되었는지 확인 2. 구성속성 ->C/C++-> 최적화  클릭 : 최적화 설정 확인  3. 구성속성 ->링커-> 매니페스트 .. 2014. 7. 9.
Visual C++ 6.0 -> Visual Studio 2010 업그레이드시 주의 사항 1. 작업 계획 세우기변환작업은 생각보다 만만한 작업이 아닙니다. 물론 소스가 몇줄 안된다면 아무 상관없겠지만 (그렇다면 새로 짜는게 낳을지도..ㅋ)보통 툴 업그레이드를 생각하고, 소스를 그대로 가져갈 계획이라면이미 그동안 6.0으로 작업했던 소스량은 엄청날 것입니다.당연히 계획수립은 이루어져야 합니다.담당자가 프로젝트를 변환 하면, 나머지 팀원들이 소스 변환 작업은 언제까지 할 것이며,그 도중에 급한 요구사항은 어떻게 처리 할 것인지..툴 업그레이드가 완료되면, 릴.. 2014. 2. 6.
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에서 프로그램이 오류가 발생 했다 ㅡㅡ;결론적으로 사용자 정의 메시지 함수 구현부분을 정확히 안해서 발생했던 문제였다 참고SYMPTOMSWhen 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_REGISTERED_.. 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.cer2) 명령 프롬프트에서 다음 명령줄을 입력하면 mycert.cer로부터 mycert.spc 파일을 생성한다.   cert2spc mycert.. 2008. 11. 12.
문자열 코드 변환 방법 및 기초 지식 (VC++) - 문자열 표현 종류1. ascii (American Standard Code for information interchange)아스키는 128개의 가능한 문자조합을 제공하는 7비트(bit) 부호로, 처음 32개의 부호는 인쇄와 전송 제어용으로 사용된다.  2. Unicode2바이트가 하나의 문자를 나타내며, 세계 각국의 언어를 동일한 코드로 표현할 수 있습니다. 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                // 이벤.. 2008. 10. 22.
트래이 아이콘 프로그램 만들기 - 트레이 등록 함수 void CTeamStatMakerDlg::RegistTrayIcon(){    NOTIFYICONDATA  nid;    nid.cbSize = sizeof(nid);    nid.hWnd = m_hWnd; // 메인 윈도우 핸들    nid.uID = IDR_MAINFRAME;  // 아이콘 리소스 ID    nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP; // 플래그 설정    nid.uCallbackMessage = WM_TRAYICON_MSG; // 콜백메시지 설정    nid.hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); // 아이콘 로드     char strTitle[256];    GetWindo.. 2008. 10. 14.