728x90

Application/MFC 51

[MFC] 심볼릭 링크 혹은 정션 링크 위치 가져오기

Symbolic Link 혹은 Junction Link의 위치를 가져오고 싶다면 GetFinalPathNameByHandle 함수를 사용 하면 됩니다 사용법으로는 아래와 같이 작성 하면 링크가 바라보는 위치를 가져올 수 있습니다 CString GetFinalPath(CString strSource) { WCHAR szPath[MAX_PATH]; HANDLE hFile = CreateFile(strSource, 0, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL); if(hFile == INVALID_HANDLE_VALUE) { return _T(""); } wcscpy_s(szPath, strSource); if(GetFin..

Application/MFC 2023.02.21

[MFC] FTP 파일 다운로드

MFC에선 간단하게 FTP 파일을 다운로드할 수 있습니다 아래와 같이 함수로 만들면 쉽게 FTP에서 다운로드 가능합니다 BOOL CMyClass::GetFTPFileDownload(CString strPath) { CInternetSession Session; CFtpConnection *pConnection; pConnection = Session.GetFtpConnection(_T("FTP Domain or IP Address"), _T("UserName"), _T("User Password")); if(pConnection == NULL) { return FALSE; } if(pConnection->GetFile(strPath, _T("저장할 파일명"), FALSE, FILE_ATTRIBUTE_NO..

Application/MFC 2023.02.20

[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
728x90
반응형