본문 바로가기

프로그래밍/MFC

(27)
fatal error C1076: compiler limit : internal heap limit reached; use /Zm to specify a higher limit fatal error C1076: compiler limit : internal heap limit reached; use /Zm to specify a higher limit 위와 같은 에러가 난다면.. 아래 그림과 같이 Project Option에 "/Zm500" 을 추가해주자. /Zm500에서 숫자(500)의 의미는 아래와 같다. 10 5.0MB 100 50MB 200 100MB 1000 500MB 2000 1000MB
shell32.lib(shguid.obj) : fatal error LNK1103 shell32.lib(shguid.obj) : fatal error LNK1103 shell32.lib(shguid.obj) : fatal error LNK1103: debugging information corrupt; recompile module VC6에서 최신 SDK를 깔고 나서.. 어떤 플젝을 컴파일 해보면 이런 오류가 뜨는 경우가 있다. 해결방법은 Platform SDK 의 lib폴더(C:\Program Files\Microsoft Platform SDK\Lib)에서 shell32.lib 파일을 예전 VC6의 shell32.lib파일로 (C:\Program Files\Microsoft Visual Studio\VC98\Lib) 교체 해주면 된다.
버튼 클릭 기능 구현하기. Dialog의 버튼 클릭 기능 SendMessage 보내기 - 프로그램으로 클릭하기 VC++ Tips Dialog Box의 버튼은 실행하면서 마우스로 클릭 한다. 그러나 다른 다이얼로그나 쓰래드에서 이 버튼을 클릭한 기능을 하려면 SendMessage() 함수를 이용할 수 있다. m_pDlg->SendMessage(WM_COMMAND, IDC_RUN, 0); 이와 같은 메시지는 m_pDlg : 목적하는 다이어로그 박스을 지정 한다. WM_COMMAND : BN_CLICKED 메시지를 보내는 위한 메시지 종류이다. IDC_RUN : 버튼의 ID이다. 다이얼로그 박스 편집기에서 ID을 만들고 볼 수 있다. *** TestDlg.h ***************************************** c..
하위 디렉터리까지 검색하는 소스(재귀함수) void FindSubFolder(char *path) { SetCurrentDirectory(path); //현재 검색할 디렉터리 설정. CFileFind find; CString pname; char newpath[MAX_PATH]; int res = find.FindFile(); while(res) { res = find.FindNextFile(); if(!find.IsDots()) //. ..은 제외하고 { if(find.IsDirectory()) //디렉터리일때 { pname = find.GetFilePath(); strcpy(newpath, pname); FindSubFolder(newpath); //재귀함수 호출. } total_cnt++; pname = find.GetFilePath(); ..
윈도우(OS) 버전 읽어오기 void GetOSVersion (LPSTR lpstInfo, LPSTR lpstBuildNumber, LPSTR lpstServicePack) { int stat = 0; TCHAR data [64]; DWORD dataSize; DWORD win95Info; OSVERSIONINFO versionInfo; HKEY hKey; LONG result; lpstServicePack[0] = 0; versionInfo.dwOSVersionInfoSize = sizeof (OSVERSIONINFO); // 버전 정보를 얻어낸다. if (!::GetVersionEx (&versionInfo)) { strcpy(lpstInfo, "운영체제 정보를 얻을 수 없습니다."); return; } // NT이면 서버인지 ..
64비트 윈도우를 프로그래밍 하기 위해서 알아야 할 모든 것들 http://www.microsoft.com/korea/msdn/msdnmag/issues/06/05/x64/default.aspx Matt Pietrek (영문) 목차 x64 운영체제 x64의 간략한 내부 구조 Visual C++로 x64용 어플리케이션 개발 Win64 호환되는 코드 만들기 디버깅 매니지드 코드는 어떻게 하나요? 최종 정리 새로운 64비트 윈도우에서 일했던 경험의 좋았던 점 중의 하나는, 새로운 기술이 어떻게 동작하는지 눈으로 확인할 수 있다는 것이었습니다. 저 자신은 특히 어떤 운영체제 밑바닥에 대해서 조금이라도 알기 전까지는, 그 운영체제에 대해서 그렇게 편안함을 느끼지 못하는 편입니다. 그래서, 64비트 Windows XP와 Windows Server™ 2003이 나타났을 때, 저..
윈도우 프로그램이 종료될때 나타나는 메시지 순서 (OnClose-> OnDestroy -> DestroyWindow) 윈도우 프로그램 이 종료될 때 다음의 순서대로 메시지가 나타납니다. 1. WM_CLOSE ( OnClose ) 2. DestroyWindow ( DestroyWindow ) 3. WM_DESTROY ( OnDestroy ) 소스로 보시면 ... void CMainDlg::OnClose() { CDialog::OnClose(); TRACE("First : OnClose!\n"); return; //
error LNK2005: _exit already defined in msvcrt.lib(MSVCRT.dll) msvcrt.lib(MSVCRT.dll) : error LNK2005: _atoi already defined in libcmt.lib(atox.obj) msvcrt.lib(MSVCRT.dll) : error LNK2005: _strchr already defined in libcmt.lib(strchr.obj) msvcrt.lib(MSVCRT.dll) : error LNK2005: _strstr already defined in libcmt.lib(strstr.obj) msvcrt.lib(MSVCRT.dll) : error LNK2005: __stricmp already defined in libcmt.lib(stricmp.obj) msvcrt.lib(MSVCRT.dll) : error LNK2005:..