IT-개발/winapi 및 MFC(64)
-
OutputDebugString - 잘쓰기 (펌)
출처 : http://egloos.zum.com/tiger5net/v/5328868 윈도우 프로그래밍을 할 때, 디버그 모드에서는 잘 돌아가던 프로그램이 릴리즈 모드에서 이상한 증상을 보이면 참 난감하다. 물론 Visual Studio 2005는 릴리즈 모드에서도 디버깅이 가능한 것처럼 보이지만 실제로 해보면 코드추적(tracing)도 잘 안 되고, 변수값도 이상하게 찍히기 때문에 별로 도움이 안 된다. 인자로 넘긴 문자열을 Visual Studio 출력창에 찍어주는 OutputDebugString 함수를 쓰면 예전에 printf()로 하던 것처럼 디버깅할 수 있다. 특히DebugView라는 프로그램을 실행하면 이 함수의 출력값을 -Visual Studio 출력창이 아닌- 윈도우 화면으로 확인할 수 있기..
2015.09.30 -
DLL 만들때, 정적 라이브러리에서 MFC 사용 !!!(펌)
(출처 : http://six605.tistory.com/466) MFC 응용프로그램 배포 시, MFC 사용 방법을 프로젝트 설정에서 설정해준다. 공유 DLL에서 MFC 사용 : 응용프로그램 배포 시 mfc**.dll 파일을 함께 배포.정적 DLL에서 MFC 사용 : 응용프로그램의 실행 파일에 mfc**.dll 이 포함되어 배포되기 때문에 응용프로그램만 배포. 배포 시 응용프로그램만 배포하는게 관리하기도 편하고 오작동의 가능성도 적기 때문에 "정적 DLL 에서 MFC 사용" 으로 프로젝트를 설정하여 개발하게 된다. 응용프로그램이 DLL 일 경우 위와 같이 설정하면 컴파일 시 다음과 같은 오류 메시지가 발생한다.fatal error C1189: #error : Please use the /MD switch..
2015.09.24 -
특정 폴더를 한번에 삭제하기(폴더안 파일까지 포함) [펌]
[출처 : http://yamoe.tistory.com] 윈도우에서 폴더 삭제시 비어있는 폴더가 아닌 경우 일일히 폴더 안의 파일을 삭제해줘야 하는데 (DeleteFile후에 RemoveDirectory) 쉘을 사용할 경우 한번에 삭제할 수 있다. (어떤 사람들은 system("삭제명령")을 쓰라는 얘기도 있는데 이건 너무한 것 같다.) 이 쉘 함수가 SHFileOperation()으로 파일 및 폴더의 삭제, 복사, 리네임 등 flag에 따라 많은 일을 해준다. (옵션에 따라 휴지통에 지울 수 도 있다.) 문제는 Vista 이후 부터는 IFileOperation 를 사용하길 권장하고 있으며 실제로 Windows 7에서 SHFileOperation()을 사용할 경우 삭제시 파일을 못찾겠다는 둥 오동작을 한..
2015.09.18 -
CListCtrl 포커스 해제시 selection color 유지하기
ㅠㅠ.. 오랫만에 또 삽질 함... 것두~ 인터넷에 올려진 가짜 자료들로 인해~~ 구글링해보면~ "CListCtrl 포커스 해제시 selection color 유지하기" 요 제목으로 올려진 코드가 있다. 1234567891011121314151617181920212223242526272829303132333435afx_msg void OnCustomDraw(NMHDR *pNMHDR, LRESULT *pResult){ LPNMLVCUSTOMDRAW lplvcd = (LPNMLVCUSTOMDRAW)pNMHDR; switch(lplvcd->nmcd.dwDrawStage) { case CDDS_PREPAINT: *pResult = CDRF_NOTIFYITEMDRAW; break; case CDDS_ITEMPRE..
2015.08.21 -
잘못된 인수가 발견되었습니다(An invalid argument encountered)
내가 MFC로 만든 프로그램 소스에 잘못된 인수가 발견되었습니다(An invalid argument encountered) 라는 메세지가 나오도록 설정한 소스가 없음에도 다음 그림과 같은 메세지가 나오는 현상이 정말 간혹 있다.... 그 당혹스러움은~~ 그럴 때에는 몇가지 이유가 있지만 다음 사례중에 하나 인듯하다. 가장 유력한 내용은 1번째 내용이다. 1.. (펌) anscii code 상에 화면에 나오지 않는 문자 코드값을 string에 사용. - MFC 관련 함수를 의심해서 찾아내자 한국어로 "잘못된 인수가 발견되었습니다", 영어로 "An invalid argument was encountered"보통 MFC에서 존재하지 않는 리소스에 접근할때 접하는 에러이다... 그런데 다른경우에도 이 에러가 발..
2015.08.18 -
Kernel Object / Object Handle (펌)
Kernel Object에 대해서 두리뭉실하게 알고 있던걸 아주 상세하게는 아니지만 조금은 덜 두리뭉실하게 알게 해주는~ ^^ 어쨌든 Kernel Object에 대해서 아는데 도움을 많~이~ 주는 글을 보게 됐다. 요기 1. 커널 오브젝트란? 우선 한 문장 정의부터 정리하면 아래와 같다고 할 수 있다. "커널에서 관리하는 중요한 정보를 담아둔 데이터 블록" 예를 들어, 프로세스를 하나 생성했다고 치자. OS에서는 이에 대한 요청이 오면 프로세스(커널 리소스)를 생성하고, 이에 관리하기 위한 정보들을 커널 오브젝트에 저장한다.프로세스의 경우 프로세스 ID (PID), 기본 우선 순위, 종료 코드 등과 같은 정보를 가지고 있다. 반면 파일 커널 오브젝트의 경우 byte offset, sharing mode,..
2015.08.18