반응형


이번에는 비주얼 스튜디오 2019를 설치하고 

MFC 개발 환경을 구축하는 방법에 대해서 알아보도록 할게요.


옛날에는 비주얼 스튜디오를 설치하면 기본적으로 MFC 개발 환경이 같이 설치되었는데 

이제는 별도로 설치할 때 옵션을 선택해 줘야 MFC 개발 환경이 설치되니 만약에 

이 포스트를 보기 전에 비주얼 스튜디오 2019를 설치하였는데 MFC가 

안 보여서 글을 읽으시는 분들은 아래쪽에 MFC 설치하기 쪽을 참고하세요.



비주얼 스튜디오 2019 다운로드 및 설치하기

(Visual Studio 2019 Community Download & Install)


먼저 아래의 마이크로 소프트웨어 비주얼 스튜디오 홈페이지에서 

Visual Studio Community 다운로드 이미지를 클릭하여 

비주얼 스튜디오 2019의 설치 파일을 다운로드하세요.



이크로 소프트웨어 비주얼 스튜디오 홈페이지

(VS 2019 Community Download)


다운로드를 완료하신 분들은 설치 파일을 실행하여 비주얼 스튜디오 2019를 설치하세요.



설치가 완료되고 나오는 창에서 <워크로드>에서 <C++를 사용한 데스크톱 개발>를 

체크하고 오른쪽에 있는 <설치 세부 정보> 창에서 <v숫자 빌드 도구용 C++ MFC(x86 및 x64>를 

체크하고 오른쪽 아래에 있는 <설치> 버튼을 클릭하세요.

(약 5.73GB 공간 필요 / 이미지는 이미 비주얼 스튜디오 설치 후 

스크린을 캡처 한 것으로 수정 버튼으로 나온거니 무시하세요.)




설치 버튼을 클릭하면 인스톨러가 설치 파일을 받고 자동으로 설치하고 

비주얼 스튜디오를 실행하면 색 테마 등을 선택하며 기본적인 비주얼 스튜디오 설치가 완료돼요.



이제 <새 프로젝트 만들기>를 클릭하고 상단에 입력 에디터 박스(검색창)에 mfc를 입력하면 

<MFC 앱>이라고 나오는 것을 선택하고 다음 버튼을 클릭하면 이전 비주얼 스튜디오에서 

볼 수 있던 프로젝트 이름, 애플리케이션 종류 등을 선택할 수 있어요.






프로젝트 구성을 마치면 다음과 같은 화면을 볼 수 있으며, 

F5를 눌러 실행하면 MFC가 잘 실행되는 것을 볼 수 있어요.








MFC 설치하기

(개발 환경 구축, MFC Setup)


이번에는 이미 비주얼 스튜디오를 설치하였는데 MFC가 안 보여서 본 포스트를 

보시는 분들을 위해 MFC를 추가 설치하는 방법에 대해서 알아보도록 할게요.


앞에서 비주얼 스튜디오 2019 초기 설치 때 MFC를 추가적으로 설치 옵션을 

선택해야 되는 과정이 누락된 것으로 비주얼 스튜디오 인스톨러에 MFC를 설치해주면 돼요.


비주얼 스튜디오를 실행하면 나오는 초기 화면에서 <새 프로젝트 만들기>를 선택하여 

나오는 창에서 위에 있는 에디터 창(검색 창)에 mfc를 입력하여 결과가 없으면 설치가 

안 된 것으로 아래에 <원하는 항목을 찾지 못하였나요?>라는 박스 아래에 

<추가 도구 및 기능 설치>를 클릭하세요.



그러면 Visual Studio Installer가 실행되는데 여기서 

<Visual Studio Community 2019> 오른쪽에 <수정> 버튼을 클릭하세요.

(기본 위치 - C:\Program Files (x86)\Microsoft Visual Studio\Installer|vs_installer.exe)



수정 버튼을 클릭하면 최초 설치 때 보았던 워크로드, 개별 구성 요소 등의 

옵션을 선택할 수 있는 창이 나오는데 <워크로드>에서 <C++를 사용한 데스크톱 개발>를 

체크하고 오른쪽에 있는 <설치 세부 정보> 창에서 <v숫자 빌드 도구용 C++ MFC(x86 및 x64>를 

체크하고 오른쪽 아래에 있는 <수정> 버튼을 클릭하면 MFC가 설치돼요.



설치가 완료하고 다시 비주얼 스튜디오를 실행하여 

<새 프로젝트 만들기>의 입력창에다 MFC를 입력하면 

MFC 앱이 검색되어 나오는 것을 볼 수 있어요.



그럼 이상으로 포스팅을 마치며 즐거운 코딩하세요.


반응형
,
반응형


드라이브의 타입과 남은 용량과 얻어보는 방법에 대해서 알아볼게요.

드라이브의 남은 용량은 GetDiskFreeSpaceEx()를 사용해 가져 올 수 있는데

가져온 데이터가 바이트 단위이기 때문에 UI로 남은 공간을 표시할 시

표시할 데이터 단위로 변환해야 한다는 걸 잊지마세요.



설명


- ::GetDriveType() : 드라이브 타입 가져오기


UINT GetDriveTypeA(LPCSTR lpRootPathName);


DRIVE_UNKNOWN 0  

DRIVE_NO_ROOT_DIR 1

DRIVE_REMOVABLE 2  

DRIVE_FIXED 3

DRIVE_REMOTE 4 

DRIVE_CDROM 5

DRIVE_RAMDISK 6 


GetDriveType() 설명 - MS Docs



- GetDiskFreeSpaceExA() : 드라이브 남은 공간 확인

BOOL GetDiskFreeSpaceExA(

LPCSTR          lpDirectoryName,

PULARGE_INTEGER lpFreeBytesAvailableToCaller,

PULARGE_INTEGER lpTotalNumberOfBytes,

PULARGE_INTEGER lpTotalNumberOfFreeBytes

);


GetDiskFreeSpaceExA() 설명 - MS Docs



소스 코드


LPCSTR lpDirectoryName = "C:";

ULARGE_INTEGER lpFreeBytesAvailableToCaller;

ULARGE_INTEGER lpTotalNumberOfBytes;

ULARGE_INTEGER lpTotalNumberOfFreeBytes;


// 타입

UINT nType = ::GetDriveType(lpDirectoryName);


// 남은 공간 정보 가져오기

BOOL bResult = GetDiskFreeSpaceEx(lpDirectoryName, 

&lpFreeBytesAvailableToCaller, 

&lpTotalNumberOfBytes, 

&lpTotalNumberOfFreeBytes);



결과


나온 값은 바이트 단위로 데이터 크기 변환하여 

실제 디스크의 남은 공간과 맞는지 확인해보세요.




#GetDiskFreeSpaceEx #GetDriveType #MFC #VC++

#하드디스크남은용량가져오기 #하드디스크타입정보

#GetHDDFreeByte #디스크남은공간가져오기



반응형
,
반응형


 현재 시스템 정보를 가져오는 방법에 대해서 알아보도록 할게요.

 이 함수를 통해 CPU의 정보를 얻어 시스템 사양에 맞게 프로그램이 동작, 설정하도록 할 수 있어요.


소스 코드

SYSTEM_INFO stSysInfo;

GetSystemInfo(&stSysInfo);



구조체

typedef struct _SYSTEM_INFO {

    union {

        DWORD dwOemId;          // Obsolete field...do not use

        struct {

            WORD wProcessorArchitecture;

            WORD wReserved;

        } DUMMYSTRUCTNAME;

    } DUMMYUNIONNAME;

    DWORD dwPageSize;

    LPVOID lpMinimumApplicationAddress;

    LPVOID lpMaximumApplicationAddress;

    DWORD_PTR dwActiveProcessorMask;

    DWORD dwNumberOfProcessors;

    DWORD dwProcessorType;

    DWORD dwAllocationGranularity;

    WORD wProcessorLevel;

    WORD wProcessorRevision;

} SYSTEM_INFO, *LPSYSTEM_INFO;



설명

>> dwNumberOfProcessors

CPU의 스레드 개수로 CPU의 코어 개수가 아니에요.


>> dwProcessorType

PROCESSOR_INTEL_386 (386)

PROCESSOR_INTEL_486 (486)

PROCESSOR_INTEL_PENTIUM (586)

PROCESSOR_INTEL_IA64 (2200)

PROCESSOR_AMD_X8664 (8664)

PROCESSOR_ARM (Reserved)


 다음 사진은 제 노트북에서 소스코드를 돌려본 결과인데요.

 dwNumberOfProcessors = 4, dwProcessorType = 586 로 CPU 스레드가 4개인 걸 알 수 있어요.





 확인을 위해 인텔 홈페이지에서 제 노트북의 CPU 모델을 넣어 확인해보면 CPU 코어는 2개, 

CPU 스레드는 4개인 걸 확인할 수 있으며, 작업관리자에서도 스레드가 4개인 걸 확인할 수 있어요.





 더 자세한 _SYSTEM_INFO의 정보는 아래의 링크를 통해 참고해주세요.

_SYSTEM_INFO 설명



반응형
,
반응형

- 리소스 내용 추가

 

#ifndef APSTUDIO_INVOKED
#include "targetver.h"
#endif
#include "afxres.h"
#include "verrsrc.h"
#include "bcgprores.h"


#define _AFX_NO_SPLITTER_RESOURCES
#define _BCGCBPRO_STATIC_
#define _AFX_NO_OLE_RESOURCES
#define _AFX_NO_TRACKER_RESOURCES
#define _AFX_NO_PROPERTY_RESOURCES

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR)
LANGUAGE 18, 1
#include "res\TestApp.rc2"  // Microsoft Visual C++ 이외의 다른 도구에서 편집한 리소스입니다.
#include "l.KOR\afxres.rc"      // 표준 구성 요소
#endif

#include "BCGCBPro.rc"
#include "C:\Program Files (x86)\BCGSoft\BCGControlBarPro\BCGCBPro\Styles\BCGPStyle2010Blue.rc"
#include "C:\Program Files (x86)\BCGSoft\BCGControlBarPro\BCGCBPro\Styles\BCGPStyle2010White.rc"
#include "C:\Program Files (x86)\BCGSoft\BCGControlBarPro\BCGCBPro\Styles\BCGPStyle2010Black.rc"

#include "C:\Program Files (x86)\BCGSoft\BCGControlBarPro\BCGCBPro\Styles\BCGPStyle2007Aqua.rc"
#include "C:\Program Files (x86)\BCGSoft\BCGControlBarPro\BCGCBPro\Styles\BCGPStyle2007Luna.rc"
#include "C:\Program Files (x86)\BCGSoft\BCGControlBarPro\BCGCBPro\Styles\BCGPStyle2007Obsidian.rc"
#include "C:\Program Files (x86)\BCGSoft\BCGControlBarPro\BCGCBPro\Styles\BCGPStyle2007Silver.rc"

#include "C:\Program Files (x86)\BCGSoft\BCGControlBarPro\BCGCBPro\Styles\BCGPStyleCarbon.rc"
#include "C:\Program Files (x86)\BCGSoft\BCGControlBarPro\BCGCBPro\Styles\BCGPStyleScenic.rc"

 

 

- stdafx.cpp 추가

#if _MSC_VER > 1500
#define COMPILE_MULTIMON_STUBS
#include "multimon.h"
#endif

 

- stdafx.h 추가

// BCG Control
#include <BCGCBProInc.h>   // BCGPro Control Bar

 

- 리소스 추가 (Debug & Release | 리소스-일반-추가 포함 디렉터리)

C:\Program Files %28x86%29\BCGSoft\BCGControlBarPro\BCGCBPro\Styles

 

반응형
,
반응형

- Cstring 문자를 메시지로 전송하기


// 보내는 부분

CString *pStr = new CString();

PostMessage(m_hWnd, UM_ID, (WPARAM)NULL, (LPARAM)pStr);


// 받는 부분

LRESULT CMainDlg::onMesage(WPARAM wParam,LPARAM lParam)

{

CString *pStr = (CString *) lParam;

delete pStr;

}

반응형
,