본문 바로가기

MFC20

[MFC] HotKey(핫키)를 사용하여 키보드 막기 예제소스 키보드나 마우스의 제한, 혹은 입력정보를 컨트롤(정보조작 등) 하기위해 메시지후킹을 많이 사용한다. 하지만 특정키에 대해 컨트롤 하기위해서는 WM_HOTKEY를 사용하는 것이 훨씬 간편하게 구현가능하며 이해하기도 쉽다. 그럼 프린트스크린 키(Print Screen Key)의 입력을 막는 프로그램의 소스를 살펴보자. [MainFrm.cpp] int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIP.. 2012. 12. 27.
[MFC] STOPWATCH(스톱워치) 시간 측정하기 예제소스 시간을 측정할 수 있는 StopWatch 함수에 대해 알아보자. StopWatch는 함수 등 작업의 소요시간이 얼마나 걸리는 지 측정하는 데 용이하다. 사용법은 간단하다. 1. 다음 예제를 입력하여 헤더 파일을 생성한다. [StopWatch.h] #ifndef __STOPWATCH_H__ #define __STOPWATCH_H__ #include class STOPWATCH { private: struct _timeb m_Stb; struct _timeb m_Etb; __int64 m_stime; __int64 m_etime; public: void Start() { _ftime(&m_Stb); } void End() { _ftime(&m_Etb); } __int64 TimeCheck() { m_stim.. 2012. 12. 27.
[MFC] Cstring <-> Char* 형변환 CString Char* 형 변환 하는법 CString -> Char * CString strBuffer; char szBuffer[MAX_PATH] = {0,}; int nLength = (MAX_PATH > strlen(strBuffer)) ? strlen(strBuffer) : MAX_PATH; strncpy(szBuffer, (LPSTR)(LPCSTR)strBuffer, nLength); Char * -> CString CString strBuffer; char szBuffer[MAX_PATH]; strBuffer = (LPSTR)szBuffer; 2012. 12. 26.
[MFC] 리스트컨트롤(List Control) 사용 Tip 리스트컨트롤과 관련된 몇가지 예제들을 올려봅니다. 필요한 부분만 참고해서 사용하세요. 1. 리스트컨트롤 추가. 2. 리스트컨트롤 멤버변수 추가 m_list 3. 체크박스 레이아웃 설정 m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_CHECKBOXES | LVS_EX_GRIDLINES ); 4. 초기화 m_list.DeleteAllItems(); 5. 칼럼명 설정 m_list.InsertColumn(0, _T("번호"), LVCFMT_LEFT, 100, -1); m_list.InsertColumn(1, _T("제목"), LVCFMT_LEFT, 100, -1); m_list.InsertColumn(2, _T("작성자"), LVCFMT_LEFT, 100, -1.. 2012. 12. 26.
[MFC] YCbCr <-> RGB 변환 이미지 처리를 하다보면 YCbCr 과 RGB 간의 변환이 필요할 때가 많다. 그럴경우, 간단한 방법으로 다음과 같이 채널 별 weigth를 주어 처리할 수 있다. Y : 16~235 Cb, Cr : 16 ~ 240 RGB -> YCbCr 변환 Y = 0.257*R+0.504*G+0.098*B+16; Cb = -0.148*R-0.291*G+0.439*B+128; Cr = 0.439*R-0.368*G-0.071*B+128; YCbCr -> RGB 변환 R = 1.164*(Y-16)+1.596*(Cr-128); G = 1.164*(Y-16)-0.813*(Cr-128)-0.392*(Cb-128); B = 1.164*(Y-16)+2.017*(Cb-128); 위와 같이 간단한 수식을 적용하여 변환할 수 있다. 2012. 12. 26.
[C] 디렉토리(폴더)의 모든 파일을 제거 디렉토리(폴더)내의 모든 파일을 제거, 삭제하는 함수 DeleteAllFile 입니다. 파일을 삭제하는 함수이므로 주의해서 사용하시기 바랍니다. 핵심 코드는 CFileFind, FindFile, DeleteFile 입니다. void DeleteAllFile( LPCSTR szDir ) { CString strName; strName.Format( "%s\\*.*", szDir ); CFileFind ff; BOOL bFind = ff.FindFile( strName ); while( bFind ) { bFind = ff.FindNextFile(); if( ff.IsDots() == TRUE || ff.IsDirectory() == TRUE ) continue; DeleteFile( ff.GetFilePa.. 2012. 12. 26.