728x90

Programing Story's 260

[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

[Linux/Ubuntu] cron(crontab) 사용법 (작업 스케줄러)

사용방법으로는 리눅스 쉘 상에서 $ crontab -l 위의 명령어를 입력하면 현재 작성된 스케줄러를 볼 수 있습니다 $ crontab -e 위의 명령어를 입력하면 crontab 편집기로 접근하게 됩니다 편집기에서 스케줄러를 작성 후 저장 후 (Esc 키 입력 후 『:wq』) $ /etc/init.d/cron restart 위의 명령어를 입력하면 cron 이 재시작되며 작성한 스케줄러가 적용됩니다 기본 작성 방법은 한줄에 한 줄씩 작성하면 되며 * * * * * /home/user/schdule.sh 별 5개와 실행 파일을 설정하면 됩니다 첫 번째 별의 의미는 분을 의미하며 위처럼 별 5개를 입력하면 매 분마다 실행되게 됩니다 (0-59) 두 번째 별의 의미는 시간을 의미하며 특정 시간에 실행하려 할 때..

OS/Linux(Ubuntu) 2023.02.07
728x90
반응형