◼️MFC

    [MFC] CFileDialog 사용

    //파일창 세팅 CFileDialog FileDlg(TRUE, "", "", OFN_OVERWRITEPROMPT, "txt (*.txt)|*.pdf|(*.pdf)", this); //원하는 경로로 열리도록 한다. FileDlg.m_ofn.lpstrInitialDir = want_filepath; //파일 열기 다이얼로그 창이 열린다. if (FileDlg.DoModal() == IDOK) { //전체 경로를 얻어온다. CString path = FileDlg.GetPathName(); //확장자 포함 파일명만 얻어온다. CString fileName = FileDlg.GetFileName(); //확장자를 뺀 파일 경로를 읽어온다. int i = path.ReverseFind('.'); CString d..

    [MFC] CCombobox에 아무 값도 설정하지 않았을 때 Not Defined 표시하기

    [MFC] CCombobox에 아무 값도 설정하지 않았을 때 Not Defined 표시하기

    CCombobox에 사용자가 Item을 아직 선택하지 않았다는 것을 인지시켜야할 경우가 있습니다! 일종의 Null값을 보여주려고 합니다. 그래서 combox item에 Not Defined는 없지만 값을 선택하기 전에 기본적으로 Not Defined라고 보여주기로 했습니다. 아래와 같이 성별을 설정하는 ComboBox라고 가정해보겠습니다. CComboBox mycombo; mycombo.AddString("여"); mycombo.AddString("남"); 방법 1. CCombobox 의 Type을 Drop Down으로 설정해줍니다. 2. CCombobox에 값을 표시할 때 만약 설정값이 -1이면 Not Defined로 표시해줍니다. gender = -1 if(gender == -1){ mycombo.S..

    [MFC] 콘솔창 생성

    ✔ 콘솔창이 생성되도록 함 - preOpen()함수로 입출력이 가능하게한다. AlloccConsole();

    [MFC] Window 캡쳐 이벤트 발생시키기

    ✔ 키보드를 누른 것과 동일하게 동작하도록 함 Window +shift+ s 를 눌렀다 떼는 동작을 실행 keybd_event(VK_LWIN, 0, KEYEVENTF_EXTENDEDKEY, 0); //window 누름 keybd_event(VK_SHIFT, 0, KEYEVENTF_EXTENDEDKEY, 0); //shift 누름 keybd_event(0x53, 0, KEYEVENTF_EXTENDEDKEY, 0); //s의 아스키코드값 누름 keybd_event (VK_LWIN, 0, KEYEVENTF_KEYUP, 0); //뗌 keybd_event(0x53, 0, KEYEVENTF_KEYUP, 0); //뗌 keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0); //뗌

    [MFC] 원하는 텍스트를 txt파일로 생성하기

    [파일에 써서 원하는 위치에 txt생성] CFile file; CString str = _T("abc0-"); //원하는 텍스트 file.Open(_T("output.txt"),CFile::modeCreate|CFile::modeWrite,NULL); //파일이름과 모드설정 file.Write(str,str.GetLength()*sizeof(TCHAR)); //쓰기 file.Close(); //파일 닫기

    [MFC] CDialogBar 조작하기

    CDialogBar는 CMainFrame의 자식 윈도우 이다. View에서 다이얼로그바를 조작하기 위해서 CMainFrame을 가지고 와서 GetDlgItem으로 원하는 컨트롤 윈도우를 얻어와서 조작하면 된다. CMainFrame* pFrame = (CMainFrame*)AfxGetMainWnd(); CEdit* variable = (CEdit*)pFrame->m_wndDisControl.GetDlgItem(IDC_contoure_variable); variable->SetWindowTextA(_T("")); [컨트롤윈도우클래스(CButton, CEdit 등등)]

    [MFC] 윈도우에서 제공하는 캡쳐기능을 사용하여 캡쳐하고, 캡쳐한 파일을 원하는 위치에 저장 시키기

    [CFileFind를 이용해서 파일을 찾고 다른이름으로 저장 창 열어서 다른 위치에 저장시킨다.] 윈도우 캡쳐 ( window+Shift+s ) 로 화면 캡쳐를 하고 캡쳐된 알림을 클릭하게 되면 아래의 위치에 캡쳐이미지가 png파일으로 저장된다. "C:\Users\username\AppData\Local\Packages\Microsoft.ScreenSketch_8wekyb3d8bbwe\TempState\*.png" 특정 시간 이후에 생성된 파일을 해당 위치에서 찾은 후 다른이름으로 저장 창을 열어서 원하는 위치로 이동시킨다. (사용자는 원하는 위치로 이동이 아닌 그 위치로 바로 저장되었다고 생각하게된다.) CTime startTime, createTime;startTime = CTime::GetCurre..

    [MFC] 다이얼로그 상하좌우로 창크기 늘릴수 있도록한다.

    [MFC] 다이얼로그 상하좌우로 창크기 늘릴수 있도록한다.

    ✔ 다이얼로그 상하좌우로 창크기 늘릴수 있도록한다. ✔ 다이얼로그 창크기를 키우면 다이얼로그 안에있는 리스트의 크기를 함께 늘린다. ✔ 창이 늘어날때 버튼의 위치도 같이 이동한다. [상하좌우 창 크기 늘리는 방법] 리소스 설정에서 border(테두리)의 속성을 Resizing으로 설정하면 윈도우 창 크기를 마우스로 조절이 가능하게 된다. [다이얼로그 안에 있는 리스트 크기 창비율에 맞춰서 늘리기] 리스트 속성에서 크기조절 유형 속성을 설정한다. '가로, 세로, 모두, 없음'을 설정할 수있다. 컨트롤 윈도우가 속해있는 부모 윈도우의 크기설정에 맞춰서 컨트롤 윈도우의 크기도 자동조정된다. * 윈도우의 크기는 MoveWindow()함수로 조정할 수있다. [윈도우의 창 크기에 맞춰 컨트롤 윈도우의 위치 이동] ..

    [MFC] 기본 개념

    1. CWnd 클래스 더보기 ● MFC = Microsoft Foundation Class : 마이크로 소프트사가 만든 c++기반의 윈도우 라이브러리, 객체 지향적인 구조를 갖는다. ● CWnd 클래스 : MFC에서 모든 윈도우 클래스의 기본 클래스 ● 상속관계 CObject > CCmdTarget > CWnd CCmdTarget: MFC의 메시지맵과 관련된 코드가 구현된 클래스 ● View에 새로운 윈도우를 보이게 하는 법 : View.h에 CWnd를 멤버 변수로 선언하고 View.cpp의 OnCreate함수내부에서 CWnd의 Create함수를 이용하여 생성한다. (Edit 형태 or Button형태) ● 부모 윈도우 설정 방법 - 윈도우의 부모 윈도우 설정 (CWnd.SetParent(부모윈도우)) ..

    [MFC] visual studio 2015 MFC 상단 메뉴바에 하위메뉴 추가

    [MFC] visual studio 2015 MFC 상단 메뉴바에 하위메뉴 추가

    MFC 메뉴 만들기 실습을 하려고하다 보니 하위메뉴를 추가하려고했는데 오류가 떴다 저기 빨간색 표시한부분에 더블클릭해서 글자를 입력했더니 메모리 참조 오류가 떴다. 이런 기본적인것에 오류가 뜬다니!!!!! devenv.exe 0x000000005d7f0cc9에 있는 명령이 0x00000000046005c의 메모리를 참조했습니다. read할 수없습니다. 더블클릭해서 글자입력하는 방법 말고 대표사진 삭제 사진 설명을 입력하세요. 하위메뉴를 추가할 부분에 우클릭을 해서 새로삽입을 누르니까 됐다 구글링해도 방법이 나오지 않았지만 이것저것 눌려보다보니 해결했다!!

    [MFC] 마우스 위치의 윈도우 핸들값 얻기

    윈도우 핸들값을 얻는 함수 HWND WindowFromPoint(POINT point); (WindowFromFoint()는 CWnd의 멤버함수입니다.) 예시 코드 HWND hWnd; //핸들 저장변수 POINT point; //마우스 포인터 저장변수 // 먼저 마우스의 위치를 얻고 GetCursorPos( &point ); // 얻은 위치값을 WindowFromPoint 함수의 인자로 넘겨주면 얻을 수 있다. hWnd = WindowFromPoint( point ); 먼저 GetCursorPos()함수를 이용하여 마우스가 위치한 곳의 포인터를 point 구조체에 저장한 후 WindowFromPoint()함수를 이용하여 현재 포인터에 있는 윈도우의 핸들값을 반환시켜 hWnd에 넘겨줍니다. [출처] htt..

    [MFC] UpdateData(true), UpdateData(false)

    UpdateData(true) // ui에 설정된 값을 Value 변수로 가져오는 것 UpdateData(false) //변수에 설정된 값을 연결된 UI 에 적용하는 것

    [MFC] 일반 클래스에서 CView로 버튼 클릭이벤트 보내기

    CMainFrame * pFrame = (CMainFrame*)AfxGetMainWnd(); //MainFrame 얻어서 //MainFrm -> View pFrame->GetActiveView()->SendMessage(WM_COMMAND, IDC_MAIN_GOTO_APPLY, 0); //View 얻어서 메시지보내기

    [MFC] OnDraw, OnPaint 호출 관계

    OnPaint: 화면출력을 위한 함수 OnDraw: 화면 출력뿐 아니라 프린터 출력에도 관여되는 함수 같은 화면을 출력하는 함수가 2개 존재한다면 어떻게 될까? voie CPaintView::OnDraw(CDC* pDC){ CPaintDoc* pDoc = GetDocument(); if(pDoc) return; //TODO: 여기에 원시 데이터에 대한 그리기 코드를 추가합니다. pDC->TextOutW(100,10,_T("OnDraw"); } void CPaintView::OnPaint(){ CPaintDC dc(this); // Do not call CView::OnPaint() for painting messages dc.TextOutW(100,40, _T("OnPaint"); } * OnPaint ..

    [MFC] 시스템 바, 타이틀 바 크기 구하기

    int iEdge; // 테두리 라인 굵기 int iHeight; //실제 높이 //테두리 사이즈를 구한다. iEdge = GetSystemMetrics(SM_CYEDGE); //테두리 사이즈를 더한 높이가 실제 높이 iHeight = GetSystemMetrics(SM_CYCAPTION) + iEdge; 출처: https://sisman.tistory.com/24

    [MFC] App, MainFrame, View 클래스 호출

    4대 클래스간 참조 //각각 헤더파일 include #include "MainFrm.h" //메인프레임 헤더파일 #include "ClassDoc.h" //Doc클래스 헤더파일 #include "ClassView.h" //View를 include 할때는 반드시 Doc 헤더파일이 위에잇어야한다 #include "Class.h" //APP Class 의 헤더파일 void CClassView::OnMenuView() //뷰클래스 CClassApp *pApp=(CClassApp *)AfxGetApp(); //View -> App CMainFrame *pMain=(CMainFrame *)AfxGetMainWnd(); //View -> MainFrm //View -> MainFrm -> Doc CClassDoc *..

    [MFC] 버튼 클릭시 Client Edge true로 변경

    client edge 추가 ModifyStyleEx(0, WS_EX_CLIENTEDGE,SWP_FRAMECHANGED); client edge 삭제 ModifyStyleEx(WS_EX_CLIENTEDGE, 0,SWP_FRAMECHANGED); ModifyStyleEx(WS_EX_CLIENTEDGE,0); 제거를 하면 3D 처럼 보이지 않는다. Border 까지 삭제되므로 ModifyStyle(0,WS_BORDER); 옵션은 선택적으로 사용해야한다. [출처: https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=search100&logNo=80131364993]

    [MFC] 다이얼로그 소멸 순서

    https://mindgear.tistory.com/117 [MFC] OnCancel(), OnClose(), OnDestroy(), OnOK() 그리고 Dialog 소멸자 예전 스프링노트에 정리했던 내용 Dialog가 종료되는 상황 IDOK 버튼을 눌렀을 때 OnOK() 호출 뒤 OnDestroy() 호출됨 IDCANCEL 버튼을 눌렀을 때 OnCancel() 호출 뒤 OnDestroy() 호출됨 Dialog의 우측 상단 종료 버 mindgear.tistory.com

    [MFC] 다이얼로그 창 타이틀 바만 보이도록 하기

    최소화 버튼 클릭시에 타이틀 바만 보이도록 한다. 최대화 버튼 클릭시 원래 사이즈로 돌아도록한다. 최대화, 최소화이벤트는 WM_SYSCOMMAND메시지 이벤트 함수에서 처리할 수 있다. 창 더블클릭시 창이 최소화되고 최대화되는 이벤트는 WM_NCLBUTTONDBCLICK 메시지 이벤트 함수에서 처리할 수 있다. BOOL MyDlg::OnInitDialog(){ RECT s; GetWindowRect(&s); //초기 창의 크기 width = s.right - s.left; height = s.bottom - s.top; /*시스템 바 높이 구하기*/ int iEdge; // 테두리 라인 굵기 iEdge = GetSystemMetrics(SM_CYEDGE); //테두리 사이즈를 구한다. titleBarHe..

    [MFC] CFont 폰트 굵기 변경

    LOGFONT lf; btn->GetFont()->GetLogFont(&lf); lf.lfWeight = bold; CFont font; font.CreateFontIndirect(&lf); btn->SetFont(&font); font.Detach(); //꼭 해줘야한다.