728x90

Application 172

[MFC] 실행 파일 버전 가져오기

우선 Class의 헤더 파일에 lib 파일 추가와 변수를 선언해 줍니다 #pragma comment(lib,"version.lib") class CMyClass { .... CString m_strVersion; } 그 후 소스 파일에서 아래와 같이 함수를 작성하면 m_strVersion 변수에 현재 파일의 버전을 가져올 수 있습니다 void CMyClass::GetVersion() { m_strVersion.Empty(); WCHAR szPath[MAX_PATH]; GetModuleFileName(AfxGetInstanceHandle(), szPath, sizeof(szPath)); DWORD dwVersionHandle; DWORD dwVersionInfoSize = GetFileVersionInfo..

Application/MFC 2023.02.17

[MFC] TrayIcon 만들기

TrayIcon 생성을 위해서는 메시지 처리를 위한 함수와 TrayIcon 생성 함수로 구성됩니다 우선 헤더 파일에 사용자 메시지를 등록과 메시지 처리 함수 생성 그리고 TrayIcon 생성 함수를 등록해 줍니다 #defineWM_TRAYICON_MSG(WM_USER + 0x01) class CMyDlg : public CDialogEx { .... afx_msg LRESULT TrayIconMsg(WPARAM wParam, LPARAM lParam); BOOL MakeTrayIcon(); } 그리고 소스 파일에서 메시지 맵에 아래와 같이 추가합니다 BEGIN_MESSAGE_MAP(CMyDlg, CDialogEx) ... ON_MESSAGE(WM_TRAYICON_MSG, &CMyDlg::TrayIconM..

Application/MFC 2023.02.16

[MFC] TrayIcon 초기화시 재 생성 방법 (TaskbarCreated)

트레이 아이콘이 초기화되거나 사라졌을 경우 프로그램에서 TrayIcon을 재 생성해 줘야 할 때 쓰는 방법입니다 우선 Dialog 가상 함수를 하나 추가 합니다 함수명은 WindowPoc 함수입니다 virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam); 이후 Dialog 헤더 파일에 UINT 변수를 선언합니다 UINT m_uTrayIconRestart; 그리고 Dialog 소스 파일로 가서 OnInitDialog 함수 내 윈도우 메시지를 등록해 줍니다 m_uTrayIconRestart = RegisterWindowMessage(_T("TaskbarCreated")); 마지막으로 선언된 가상 함수 내에 아래와 같이 작성해주면 완료됩니..

Application/MFC 2023.02.15

[MFC] 자식 핸들 가져오기 (GW_HWNDNEXT, GW_CHILD)

자식창을 가져오기 위해서는 현재 부모창을 검색한 후 아래와 같이 자식창 리스트를 검색하면 됩니다 //부모 핸들 가져오기 HWND hParent = ::FindWindow(NULL, _T("WindowName")); if(hParent) { //자식 핸들 가져오기 HWND hChild = ::GetNextWindow(hParent, GW_CHILD); //자식 핸들이 존재한다면 계속 반복 while(hChild) { //검색된 자식 핸들의 형제 핸들 가져오기 hChild = ::GetNextWindow(hChild, GW_HWNDNEXT); } } 사용 방법에 따라서 자식 핸들의 그 자식을 가져오고 싶다면 GW_CHILD 값을 써서 코드를 변형해서 사용하시면 됩니다 제 글이 도움이 되셨다면 댓글 & 공감 ..

Application/MFC 2023.02.14

[MFC] MAKELPARAM 사용 방법

MAKELPARAM 의 경우 마우스 클릭 메시지 처리 시 LPARAM의 값에 대입하여 넘겨줘야 하는데 이와 같은 경우에 값을 LPARAM 형태로 넘겨주기 위해 사용 합니다 간단한 예로 마우스 클릭 이벤트를 발생시키기 위해서는 WM_LBUTTONDOWN 메시지와 WM_LBUTTONUP 메시지를 발생시키면 됩니다 특정 프로그램에서 X와 Y 좌표값 기준으로 클릭 이벤트를 발생시키려면 아래와 같이 코드를 작성하면 됩니다 int iPosY = 100; //Y 좌표 int iPosX = 100; //X 좌표 //창 핸들 가져오기 HWND hWnd = ::FindWindow(NULL, _T("WindowName")); if(hWnd) //핸들이 존재한다면 { LPARAM lParam = MAKELPARAM(iPosX..

Application/MFC 2023.02.14

[MFC] WM_USER 사용 (User Message)

우선 클래스 생성 시 상단에 메시지 ID를 정의하고 Dialog의 핸들을 받아오는 코드를 작성해 줍니다 #define DF_MSG_LOG (WM_USER + 0x01) class CMyClass { public: CMyClass(HWND hWnd); ~CMyClass(void); private: HWND m_hWnd; void SendMsg(); } 그런 다음 클래스의 정의부는 아래와 같이 작성 합니다 CMyClass::CMyClass(HWND hWnd) { m_hWnd = hWnd; } CMyClass::~CMyClass(void) { } void CMyClass::SendMsg() { SendMessage(m_hWnd, DF_MSG_LOG, (WPARAM)(LPCTSTR)_T("테스트"), NULL)..

Application/MFC 2023.02.10

[MFC] CListCtrl 배경색 & 글자색 변경

CListCtrl 컨트롤의 배경색 혹은 글자색을 변경하려면 컨트롤의 이벤트에서 NM_CUSTOMDRAW 를 추가한 후 해당 함수 내 소스를 변경하면 쉽게 처리가 가능합니다 특정 칼럼의 값에 따라 변경 하고 싶다면 void CWinshieldManagerDlg::OnNMCustomdrawList1(NMHDR *pNMHDR, LRESULT *pResult) { NMLVCUSTOMDRAW* pLVCD = (NMLVCUSTOMDRAW*)pNMHDR; // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. *pResult = 0; WCHAR szValue[MAX_PATH]; switch(pLVCD->nmcd.dwDrawStage) { case CDDS_ITEMPREPAINT: m_ListCtrlClient..

Application/MFC 2023.02.09

[MFC] FindFirstFile & FindNextFile (파일, 디렉토리, 폴더 검색)

특정 위치로부터 파일 검색 혹은 다른 용도로 사용하기 위해서 사용하는 API 함수로 FindFirstFile & FindNextFile 함수를 사용하면 쉽게 파일 혹은 디렉토리를 찾아갈 수 있습니다 BOOL FindFiles(CString strPath) { WIN32_FIND_DATA FindFileData; HANDLE hFind; CString strFileName; hFind = FindFirstFile(strPath + _T("*.*"), &FindFileData); if(hFind == INVALID_HANDLE_VALUE) { return FALSE; } do { strFileName.Format(_T("%s"), FindFileData.cFileName); if(strFileName == ..

Application/MFC 2023.02.08

[MFC] 디스플레이 화면 배율 설정

윈도우 설정에서 디스플레이의 배율을 설정하려면 레지스트리의 값 두 개를 수정하면 됩니다 레지스트리의 위치는 "HKCU\Control Panel\Desktop\" 이며 하위 『Win8DpiScaling』 키와 『LogPixels』 키의 값을 설정하면 됩니다 둘 다 키의 종류는 REG_DWORD 이며 『Win8DpiScaling』 의 값은 1로 세팅하고 『LogPixels』 의 값은 배율에 따라 조절하시면 됩니다 참고로 배율의 값은 DPI 배율 96 100 120 125 144 150 192 200 위의 표를 참고하시면 되며 설정값은 DPI의 값을 입력하시면 됩니다 이후 PC를 재 부팅 하면 적용한 배율에 따라 바뀐 화면이 출력됩니다 참고 https://learn.microsoft.com/ko-kr/wind..

Application/MFC 2023.02.03

[MFC] 해상도 및 주사율 설정하기 (EnumDisplaySettings)

윈도우의 해상도 및 주사율을 설정하고 싶다면 EnumDisplaySettings 함수를 사용하시면 됩니다 간단하게 최대 해상도와 최대 주사율을 설정 하고 싶다면 아래와 같이 코드를 짜면 됩니다 void SetResolution() { double dMaxValue = 0; int iMaxModeNumber = 0; int iModeCount = 0; DEVMODE dm = { 0 }; dm.dmSize = sizeof(dm); //해상도 및 주사율 리스트 검색 while(EnumDisplaySettings(NULL, iModeCount, &dm) != 0) { //찾은 해상도 및 주사율 보다 크다면 해상도 및 주사율 리스트 인덱스 설정 if(nMaxValue < ((double)dm.dmPelsWidth..

Application/MFC 2023.02.02
728x90
반응형