반응형 C & C++444 [Radio] 라디오 버튼 그룹지정 * 임무 * MFC에서 다이얼로그를 만들어서 사용하는 경우, 라디오 버튼을 사용하는 경우가 있다. 이때 모든 라디오 버튼을 한가지 용도로만 사용하면 좋겠지만 아쉽게도 몇개의 그룹으로 나누어서 사용해야 하는 경우가 있다. MFC는 친절하게 라디오 버튼 하나를 누르면 다른 라디오 버튼에서 선택표시(가운데 찍히는 점)를 빼앗아 준다. 그룹이 여러개인 경우, 이렇게 되면 다른 그룹의 선택표시까지 빼앗아 버려 과잉 친절이 된다. 예) 하나의 다이얼로그에서 색상과 크기를 라디오 버튼으로 받는 경우를 생각해 보자. 이렇게 되면 색상을 입력받는 라디오 버튼들과 크기를 입력받는 라디오 버튼들로 2개의 그룹이 생긴다. 원래대로라면 크기이던 색상이던 하나의 버튼을 선택하면 나머지 그룹의 버튼에서도 선택점이 사라져 불편하다... 2011. 1. 12. [ToolBar] MFC 트루컬러 툴바 만들기 MFC로 유틸리티나 관리 툴을 만드는 것은 보편화 된 작업이다. 아직 Visual Studio 2003/2005를 사용하는 나로서는 최근 메신저에 등장하는 풀컬러 버튼이 부러울 수 밖에 없다. 가장 최근의 Visual C/C++에서 확장된 MFC가 트루컬러 툴바나 버튼을 지원하는지 여부는 알 수 없다. (프로그래머의 게으름 용서하길..) Microsoft의 MFC 담당 프로그래머들도 우리와 같은 게으른 족속들일 테니까, 이런 기능이 없더라도 굳이 그들을 원망하고 싶지는 않다. ^^; 인터넷을 검색하여 이와 관련된 몇가지 소스를 찾아 분석하였다. 그 중 가장 깔끔한 방법을 공개한다. * 작동원리 * 일단 원리를 설명하자면, 1) 3개의 24비트(트루컬러)의 툴바용 비트맵을 프로젝트 내에 리소스로 가지고 있.. 2011. 1. 12. [Event] 오른쪽 마우스버튼으로 여는 컨텍스트 메뉴 * 임무 * MFC 프로그램을 만들다 보면 오른쪽 버튼으로 여는 컨텍스트 메뉴가 필요한 경우가 있다. 과연 어떻게 구현하는 걸까? * 구현방법 * 1. CMenu를 이용 POPUP메뉴를 구현한다. 2. OnRButtonDown 이벤트 핸들러에서 TrackPopupMenu()를 구동시킨다. 3. 그러면 선택된 ID를 돌려 보내준다. 이것을 부모 윈도우에 메세지로 돌려보내준다. 4. 이후 메뉴에 집어넣은 ID값에 대한 핸들러를 작성하여 해당 메뉴를 선택하면 상응하는 함수가 호출 되어진다. 코딩 * 여기서는 예를 들어 DocTemplate 상황에서 구현하였다. 그러나 다이얼로그도 마찬가지임. CMenu m_ContextMenu; // 반대버튼 메뉴 void CDemoView::OnInitialUpdate() .. 2011. 1. 12. [Edit] CEdit Controller 의 사용법 * 임무 * 다이얼로그 또는 일반 어플리케이션에서 에디트 박스를 많이 사용한다. 어떻게 에디트 박스를 효율적으로 다룰 것인가? * 사용법 * 1. 먼저 에디트 박스를 지칭할 수 있는 포인터 변수를 생성한다. 2. 에디트 박스의 포인터를 받아온다. 3. CEdit의 멤버 함수를 이용하여 원하는 조작을 할 수 있다. * 코딩 예 * CEdit *pEdit; // 포인터 변수 // 여기서는 IDC_EDIT1이라는 임의 ID를 사용한다. 실제로는 리소스 에디터에서 만들고 이름을 바꿀 수 있다. pEdit = (CEdit *)GetDlgItem(IDC_EDIT1); // 해당 ID를 가진 에디트 박스의 포인터를 가져온다. (CEdit *)로 캐스팅 한다. // 해당 에디트 박스의 컨트롤을 가져 올 수 없다면 NU.. 2011. 1. 12. [Etc] 링크(Link) 컨트롤 //-------------------------------------------------------------------------------------------- void CLogonDemoDlg::OnNMClickSyslink1(NMHDR *pNMHDR, LRESULT *pResult) { CString strUrl = _T(""); CLinkCtrl* pLinkCtrl = (CLinkCtrl*)GetDlgItem(IDC_SYSLINK1); pLinkCtrl->GetItemUrl(0, strUrl); ::ShellExecute(NULL, TEXT("open"), strUrl, NULL, NULL, SW_SHOW); *pResult = 0; } //---------------------------.. 2011. 1. 12. [MFC 연습] LogonDemo 연습 //---------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------- // 로그온 ID CString m_strID; // 로그온 PassWord CString m_strPswd; //---------------------------------------------------------------------------------------------- void CLogonDemoDlg::OnBnClickedOk() { UpdateD.. 2011. 1. 12. 이전 1 ··· 69 70 71 72 73 74 다음 반응형