본문 바로가기

mfc11

MFC 단축키 Accelerator 리소스 추가 https://learn.microsoft.com/ko-kr/windows/win32/learnwin32/accelerator-tables 액셀러레이터 키 테이블 - Win32 apps 액셀러레이터 키 테이블 learn.microsoft.com MFC 프로젝트에 Accelerator 리소스를 아래 이름으로 추가합니다. IDR_ACCEL1 리소스 편집기에서 관련 단축키를 지정합니다. ID_FILE_OPEN, ID_FILE_SAVE 등은 기본적으로 생성이 되는데 Main Menu, Toolbar에 관련 ID가 등록되어 있으면 아래와 같이 Accelerator를 등록하지 않아도 작동이 되는 것 같습니다. 그러나 사용자가 추가한 ID는 아래와 같이 등록을 하지 않으면 작동이 되지 않는 것을 확인 했습니다. 헤더.. 2024. 1. 16.
최근 열어본 파일 MRU Menu Items 처리 커스텀 방법 MFC의 Main Menu에 "최근 열어본 파일" 리스트를 표시하고 그 리스트를 선택 했을 때 Doc의 OnOpenDocument(LPCTSTR lpszPathName) 함수가 호출된다. MFC 프레임워크에서 처리를 하기 때문에 OnOpenDocument(LPCTSTR lpszPathName) 함수 전에 CDocTemplate을 선택 한다거나 다른 작업을 하려면 아래와 같은 방식으로 처리를 하면 된다. 내가 이 작업을 하게 된 이유는 프로그램 내부 버전 별로 CDocTemplate을 어려게 사용을 하는데 자동을 OnOpenDocument(LPCTSTR lpszPathName) 함수가 호출되니 원하는 CDocTemplate으로 표시가 되지 않는 문제가 있었다. 참고로 CDocTemplate을 선택하는 방법.. 2024. 1. 15.
UpdateData() 함수 Param 의미 MFC에서 UpdateData()를 사용해서 Control의 값을 변수로 적용하거나 반대로 처리한다. void etModalProgressThread::UpdateData(BOOL b) { etModalProgressDlg * pDlg = (etModalProgressDlg *)m_pMainWnd; pDlg->m_title = m_title; pDlg->m_Text = m_Text; pDlg->SendMessage(UM_MODAL_UPDATEDATA, (WPARAM)b, 0L); } https://learn.microsoft.com/en-us/cpp/mfc/dialog-data-exchange?view=msvc-170 Dialog Data Exchange Learn more about: Dialog Da.. 2023. 7. 7.
MFC jsoncpp 설치 jsoncpp 를 library 로 만들지 않고 source 와 header 파일을 프로젝트에 포함해서 사용 가능합니다. 1. jsoncpp download download link : https://github.com/open-source-parsers/jsoncpp 2. python를 설치하고, 다운받은 json 폴더의 amalgamate.py 파일 실행합니다. 생성된 dist 폴더를 확인합니다. 3. dist 폴더 이동해서 생성된 파일을 확인합니다. jsoncpp.cpp , json.h, json-forwards.h 파일을 프로젝트에 추가해서 함께 빌드합니다. 2022. 11. 28.
CScrollView를 이용한 Image Viewer 예제 JPG, BMP, PNG 등의 이미지 파일을 열어 스크롤이 가능한 화면에서 확대/축소를 하는 예제이다. CScrollView 클래스를 이용하면 Scroll을 계산하지 않아도 된다. 예제는 TabCtrl에 Tab을 5개 만들고 각 탭별로 이미지를 넣고 확대/축소 기능과 함께 이미지를 보는 간단한 프로그램이다. 이미지는 CImage 클래스를 이용해서 읽는다. Viewer 클래스에서 OnDraw()함수에서 확대/축소를 위한 StretchBlt 처리를 한다. CScrollView 클래스를 이용할 경우 OnInitialUpdate()함수에서 SetScrollSizes() 함수를 이용해서 크기를 초기화해야 한다. 그렇지 않으면 Scroll 처리를 위한 Size를 알수가 없어 에러가 발생한다. void ImageVi.. 2022. 7. 27.
AfxGetMainWnd() 함수 NULL 리턴 문제 CMainFrame* pFrm = (CMainFrame *)AfxGetMainWnd(); 기존에 잘 사용했는데 갑자기 pFrm이 NULL로 리턴되는 문제가 발생했다. 검색을 해 보니 이런 문제로 올라온 글이 있어서 수정을 했다. 이전과 달라진 부분을 확인해 보니 기존에 OnTimer에서 호출하던 함수를 성능 개선을 위해 Thread를 만들어서 호출하도록 변경을 했다. 이것 때문에 문제가 발생한 것으로 보인다. 아래와 같은 방식으로 사용을 하면 NULL로 리턴을 하지 않는 것을 확인했다. CMainFrame* pFrm = (CMainFrame *)AfxGetApp()->GetMainWnd(); https://frostguy.tistory.com/37 2019. 12. 12.
Switch MDI Active MDI에서 ChildForm이 여러개 존재하는데 그 ChildForm을 사용자가 Active로 변경하고 싶을 경우가 있다. 여러개의 Sub Dialog가 열린 상태에서 Dialog를 선택하면 그 Dialog의 ChildForm이 Active 되게 처리를 해야 하는데 이럴 경우에 MFC에서는 WM_MDIACTIVATE 메시지를 이용해서 처리를 할 수가 있다. 1. 먼저 Sub Dialog에서 포커스를 확인 하는 방법은 OnActivate을 이용한다. - MessageMap에 WIM_ONACTIVATE을 추가한다. - Dialog의 virtual 함수인 OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized)를 추가한다. 2. OnActivate함수에서 nSta.. 2019. 11. 15.
Ethernet Status Check WinAPI 참조) https://docs.microsoft.com/ko-kr/windows/win32/api/netioapi/nf-netioapi-getifentry2 GetIfEntry2 function (netioapi.h) Retrieves information for the specified interface on the local computer. docs.microsoft.com https://msdn.microsoft.com/zh-tw/visualc/aa365917(v=vs.90) GetAdaptersInfo function (Windows) The GetAdaptersInfo function retrieves adapter information for the local computer. On Wind.. 2019. 7. 2.
MFC 투명 툴바, 아이콘 제작 방법 MFC 투명한 툴바, 아이콘 만들기 32비트 BMP 이미지를 만든다. 포토샵에서 채널 정보를 보면 알파 채널이 존재한다. 펜을 선택하고 바탕색을 Black(0,0,0)으로 변경 한다. 투명으로 처리하고 싶은 부분에 색칠을 한다. 아래 이미지에서 붉은 색으로 표시되는 부분이 Black으로 칠한 영역이다. 이 부분이 툴바, 아이콘에서 투명으로 표시된다. White(255,255,255)으로 칠을 하면 표시되는 영역이 된다. 채널 레이어를 선택하고 작업해야 한다. 2018. 7. 10.
LIST