본문 바로가기

API

(16)
MFC 수정가능한 ComboBox 구현 ■ Editable한 ComboBox의 Item 변경하기( Combo Type은 DropDown ) 1. 콤보박스 생성2. (선택)콤보박스 멤버변수 만들기3. 콤보박스 이벤트( CBN_EDITCHANGE )추가 4. CBN_EDITCHANGE함수에서 m_Combo.GetWindowText( CString )를 통해 콤보박스에 입력된 스트링을 불러옴( ※ 이때 GetCurSel의 반환값이 선택된 위치가 아닌 CB_ERR를 반환하게 됨 즉, 수정 후에는 GetCurSel이 파괴됨 -1을 반환하니 65535 이런값을 반환해줄것임 WORD형이니깐 )5. 수정하고자하는 콤보의 위치의 아이템을 DeleteString( index ); ( ※ 찾아봤지만 InsertString은 가능하지만 이후에 수정하는 함수는 없는..
MFC Ctrl+C, Ctrl+V virtual BOOL PreTranslateMessage(MSG* pMsg); BOOL Class::PreTranslateMessage(MSG* pMsg){// TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다.if( pMsg->message == WM_KEYDOWN ){if( pMsg->wParam == 'c' || pMsg->wParam == 'C' ){if( GetKeyState( VK_CONTROL ) < 0 ){// 처리}}}return CDialogEx::PreTranslateMessage(pMsg);} WM_KEYDOWN 메시지를 처리하는 방식으로 해도 무관.
MFC List Control 복사 붙여넣기 BOOL CopyToClipboard( CListCtrl* pListCtrl, LPCTSTR lpszSeparator = _T( "\t" ) ); BOOL Class::CopyToClipboard( CListCtrl* pListCtrl, LPCTSTR lpszSeparator /*= _T( "\t" ) */ ){ASSERT(pListCtrl && ::IsWindow(pListCtrl->GetSafeHwnd())); CString sResult;POSITION pos = pListCtrl->GetFirstSelectedItemPosition();if (!pos)return TRUE; CWaitCursor wait;int nItem, nCount = 0;int nColumn = 1; if ((pListCtr..
MFC std::string 사용시 주의점 싱글톤을 이용해 매니저 클래스를 프로그램 종료시 releaseinstance 할 때해당 매니저 클래스에 std::string을 이용하고 있으면 ~basic_string() 쪽에서 에러가 발생 std::string의 자체 해제가 자동으로 이루어지지 않는다거나mfc는 CString을 이용해서 그런지해제시에 문제가 발생 std::string -> CString으로 변환하여 사용하니 잘 돌아감 ■변환void CUtil::CStringToString( std::string* p_Dest, CString p_Obj ){*p_Dest = p_Obj;} ■역변환std::string temp;CString tempString( temp.c_str() );// 선언과 동시에 대입
INI 파일과 레지스트리 정보의 저장프로그램은 실행 중에 사용자가 입력한 옵션 설정이나 프로그램 스스로 만들어낸 정보들을 다음 실행을 위해 저장해 두어야 한다. 이런 정보를 저장할 필요가 있을 때는 디스크를 사용한다. 메모리는 휘발성이므로 저장하지 못하므로 현재는 하드 디스크에 파일을 입력하는 방법 밖에 없다. 저장의 방법프로그램의 설정 정보를 저장하는 방법에는 INI 파일을 쓰는 방법과 레지스트리를 쓰는 방법이 있다. 응용 프로그램은 이런 장치를 통해 자신의 고유 정보를 저장해 놓고 다음 실행할 때 이 정보를 복원해 계속 사용한다. 저장 대상 정도는 사용자 신상, 위치, 크기, 옵션, 사용자의 설정, 최근 연 파일 목록, 설치 관련 정보 및 기타 동작에 필요한 모든 정보들이다. 단, 이런 설정 정보는 프로그램 자신의 정보일 뿐..
멀티 프로세스 멀티 프로세스리눅스와 윈도우는 멀티 프로세스 운영체제이므로, 동시에 여러 프로세스를 실행하고 관리할 수 있다. 멀티 프로세싱이 동시에 여러 프로세스를 운용한다는 의미를 품고 있지마, 실제로 같은 시간에 여러 프로세스가 동시에 실행되지는 않는다. 아주 짧은 시간 동안 프로세스를 번갈아 가면서 실행시켜 동시성을 제공한다. 프로세스 간의 전환시간이 짧기 때문에 마치 여러 프로세스가 동시에 실행되고 있는 것처럼 느껴질 뿐이다. 시간을 나누어서 사용하는 방식인데, 이를 시분할 방식이라고 한다. 리눅스와 윈도우는 모두 시분할 방식을 이용한 멀티 프로세싱 기능을 지원한다.
프로세스란? 프로세스프로그램을 실행할 때 만들어지느 게 프로세스다.프로그램의 실행 객체를 프로그램이라 하지 않고 프로세스라고 하는 이유는 프로그램을 실행하게 되면 하드디스크에 있는 프로그램을 메모리로 복사하여 이용하기 때문이다. 하드디스크상 : 프로그램메모리에로드되어있을 때 : 프로세스 실제로 컴파일 한 후 모든 것을 지워도 실행은 되고 있다 왜냐하면 메모리에 모두 로드되어 있기 때문이다. 즉, 프로세스는 메모리에 로드되어있는 프로그램을 말한다.
대화상자 모달형 대화상자대화상자를 만들기 위해선 기본적으로 두 가지가 필요하다 1. 대화상자 템플릿 : 대화상자의 모양과 대화상자 내의 컨트롤 배치 상태가 저장되는 이진 정보이며 리소스로 작성된다. 개발자 스튜디오에 별도의 대화상자 편집기가 제공되므로 어렵지 않게 디자인할 수 있다.2. 대화상자 프로시저 : 윈도우 프로시저가 윈도우에서 발생하는 메시지를 처리하는 것과 마찬가지로 대화상자 프로시저는 대화상자에서 발생하는 메시지를 처리한다. 모델리스형 대화상자모델리스형은 대화상자를 열어놓은 채로 메인 윈도우를 조작할 수 있기 때문에 모달형 대화상자보다 더 복작하며 사용하기도 어렵다. 골치아픈 문제가 발생할 수도 있으며 게다가 대화상자를 닫지 않은 채로 값을 변경하고 메인 윈도우가 변경된 값을 즉각 인지할 수 있어야 ..