목록MFC (30)
SPRING :: NOTE
1. 클래스를 추가 솔루션 탐색기의 프로젝트에서 마우스 오른쪽 버튼을 클릭한 후 뒤 추가 -> 클래스를 선택해준다. MFC 클래스를 선택한 후 CDialogEx를 상속받는 클래스 추가 다이얼로그 이름 지정 및 베이스 클래스 지정 PANE에 자연스럽게 들어갈 수 있도록 Dialog 속성에서 X 버튼과 Title Bar를 제거해준다. 2. MainFrm.cpp에서 헤더파일 추가 및 DockPane에 Dialog 추가
BROWSEINFObrInfo; ITEMIDLIST* pDirList; char pszPath[500]; CString FPath = ""; brInfo.hwndOwner = NULL;// GetSafeHwnd(); brInfo.pidlRoot = NULL; memset(&brInfo, 0, sizeof(brInfo)); brInfo.pszDisplayName = pszPath; brInfo.lpszTitle = ("폴더를 선택하세요."); brInfo.ulFlags = BIF_RETURNONLYFSDIRS; // DIalog Open pDirList = ::SHBrowseForFolder(&brInfo); if (pDirList != NULL) ::SHGetPathFromIDList(pDirList, ..
주석으로 설명 대체 void CMainFrame::OnFileOpen() { CFileFindFFinder; CString FPath = _T("[폴더경로]\\*.jpg");// 마지막 경로는 파일 확장자 *.* :: 모든파일 CString strTemp = ""; int cnt = 0; BOOL bWorking = FFinder.FindFile(FPath);// 파일 경로가 존재 한다면 TRUE 반환 while (bWorking) { bWorking = FFinder.FindNextFileA();// 다음 파일 / 폴더가 존재한다면 TRUE 반환 if (FFinder.IsArchived()) { CString _fileName = FFinder.GetFileName(); cnt++; } } strTem..
SendMessage와 PostMessage의 차이점은 다른 블로그에서 습득하길 바란다. 본 포스팅에서는 소스만 나열한다. 사용하고자 하는 함수를 생성한다. LRESULT [DlgName]::OnUserFun(WPARAM wParam, LPARAM lParam) { // 사용자 함수 구현부 (SendMessage를 이용해 실행 할 함수) return 0; } 그다음의 Message ID를 정의한다. #define M_MSG_MSG1 (WM_USER+1) 메세지맵에 사용하고자 하는 함수 및 메세지 아이디 정의 BEGIN_MESSAGE_MAP(CPDlg1553B, CXTPResizeDialog) ON_WM_ERASEBKGND() ON_BN_CLICKED(IDC_BUTTON1, &CPDlg1553B::OnBn..
VIsual Studio 2013 이상 버전으로 어플리케이션을 작성하고, Release 모드로 빌드를 하였는데도 MFC 120d.dll or MFC 120.dll이 없다고 실행 안될 때,VS 2013 재배포 패키지가 없어 나타나는 현상 또는 인터넷에서 다른 개발자가 만든 어플리케이션을 받았을 때 MFC 120.dll이 설치 안되었다고 하는 경우이도 역시 VS 2013 재배포 패키지가 PC에 설치되어 있지 않아 나타나는 현상이다. 아래 링크로 이동하여 자신에 맞는 운영체제용 VS 재배포 패키지를 설치한다.마이크로소프트 다운로드 링크윈도우 64비트의 OS인 경우 vcredist_x64, 32비트인경우 vcredist_x86을 받아 설치하면 해결된다.
1. 클래스 마법사에서 아래 함수 추가 WM_ERASEBKGND2. 생성된 OnEraseBkgnd(CDC* pDC) 함수안에 코드 추가 BOOL CDlgConf::OnEraseBkgnd(CDC* pDC){ // TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다. CRect rect; GetClientRect(rect); pDC->FillSolidRect(rect, RGB(255, 255, 255)); // 흰색 적용 return TRUE; //return CDialogEx::OnEraseBkgnd(pDC); }
MFC 프로젝트를 만들고 작업 중, xxxView.cpp(.h)와 xxxDoc.cpp(h)가 쓰지도 않는데 거슬렸다. 다른 프로젝트를 보니 전부 쓰지도 않고 파일 자리를 차지하여 보기에 안좋았다. View파일과 Doc파일을 없애보겠다. [AppName].cpp 파일을 열면 InitInstance() 부분에 다음과 같은 정의가 있다. CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CToolkitTestDoc), RUNTIME_CLASS(CMainFrame), // main SDI frame window RUNTIME_CLASS(CToolkitTestView)); if (!..
리본바를 만들어보겠다. XTToolkit의 테마때문에 많은 삽질 끝에, 만들긴 하였는데. 이렇게 만드는게 잘한 방법인지는 모르겠다. 1. XTToolkit 프로젝트 생성 (이전 포스팅 참조) OnCreate 부분에 아래 소스를 추가 // 자동생성 if (CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT))) { TRACE0("Failed to create status bar\n"); return -1; // fail to create } // Initialize th..