본문 바로가기
반응형

C & C++/MFC 컨트롤199

[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.
[MFC 연습] 마우스 드레그 & 드롭 public: CPoint m_ptItemText; bool m_bDragFlag; //--------------------------------------------------------------------------------- CMouseCombiView::CMouseCombiView() { m_ptItemText = CPoint(10, 30); m_bDragFlag = false; } //--------------------------------------------------------------------------------- void CMouseCombiView::OnLButtonDown(UINT nFlags, CPoint point) { if(point.x >= m_ptItemText... 2011. 1. 11.
반응형