윈도우 프로그래밍(2)

IT 2020. 8. 8. 11:01

출처: https://docs.microsoft.com/ko-kr/cpp/windows/walkthrough-creating-windows-desktop-applications-cpp?view=vs-2019

 

연습: 기존 Windows 데스크톱 응용 프로그램 만들기 (c + +)

Visual Studio, c + + 및 Win32 API를 사용 하 여 최소한의 기존 Windows 데스크톱 응용 프로그램을 만드는 방법

docs.microsoft.com

Windows 데스크톱 애플리케이션을 시작하려면 부분

윈도우 프로그램을 만들다 보면 웹메인 있음. 자바의 메인 메소드 같이 프로그램의 시작점을 의미함.

 

웹메인도 알아가면 좋을거 같아서... 의미는 알아야 할 거 같다... 이런 사소한게 쌓이면 존나 중요함...

WinMain은 응용 프로그램 진입 점에 사용되는 일반적인 이름... 그러니까 자바의 메인 메소드 느낌...

파마미터들의 각각의 의미는 무엇일까용~?!

1-1. _In_ HINSTANCE hInstance,

hInstance
Type: HINSTANCE
A handle to the current instance of the application.

 

여기서 HINSTANCE는 뭐지?

윈도우 데이터 타입 중 하나임.. 자세한 데이터 종류는 여기...

출처: https://docs.microsoft.com/en-us/windows/win32/winprog/windows-data-types

 

Windows Data Types (BaseTsd.h) - Win32 apps

The data types supported by Windows are used to define function return values, function and message parameters, and structure members.

docs.microsoft.com

인스턴스에 대한 핸들입니다. 이것은 메모리에있는 모듈의 기본 주소입니다. 
HMODULE과 HINSTANCE는 오늘날 동일하지만 16 비트 Windows에서 다른 것을 나타냅니다.

그러니까 메모리에 있는 모듈의 위치를 해시코드 같은거로 나타내는 거...

 

1-2. _In_opt_ HINSTANCE hPrevInstance,

1-1과 같으니까 데이터 타입은 통과. 그럼 어떤값이 와?!

응용 프로그램의 이전 인스턴스에 대한 핸들입니다. 이 매개 변수는 항상 NULL입니다. 다른 인스턴스가 이미 있는지 감지해야하는 경우 CreateMutex 함수를 사용하여 고유 한 이름의 뮤텍스를 만듭니다. 뮤텍스가 이미 존재하더라도 CreateMutex는 성공하지만 함수는 ERROR_ALREADY_EXISTS를 반환합니다. 이는 뮤텍스를 먼저 생성했기 때문에 애플리케이션의 다른 인스턴스가 존재 함을 나타냅니다. 그러나 악의적 인 사용자가이 뮤텍스를 생성하기 전에 생성하여 응용 프로그램이 시작되지 않도록 할 수 있습니다. 이러한 상황을 방지하려면 임의로 명명 된 뮤텍스를 만들고 권한이있는 사용자 만 얻을 수 있도록 이름을 저장합니다. 또는이 목적으로 파일을 사용할 수 있습니다. 애플리케이션을 사용자 당 하나의 인스턴스로 제한하려면 사용자의 프로필 디렉토리에 잠긴 파일을 만듭니다.


1-3. _In_ LPSTR     lpCmdLine,

8 비트 Windows (ANSI) 문자의 null로 끝나는 문자열에 대한 포인터입니다. 자세한 내용은 글꼴에 사용되는 문자 집합을 참조하십시오. 프로그램 이름을 제외한 응용 프로그램의 명령 줄입니다. 전체 명령 줄을 검색하려면 GetCommandLine(https://docs.microsoft.com/en-us/windows/win32/api/processenv/nf-processenv-getcommandlinea) 함수를 사용하십시오.

자세히는 모르겠음...


1-4. _In_ int       nCmdShow

TBD(to be determined)

 

메인함수에 대해선 이정도만 하자...

 

아맞다 그런데 궁금한거 있음.

변수 타입명 앞에 _In_ , _In_opt_ 얘랑 쟤 차이점은 뭐야?

 

Microsoft 소스 코드 주석 언어 (SAL)

출처: https://docs.microsoft.com/ko-kr/cpp/code-quality/understanding-sal?view=vs-2019

 

SAL 이해

SAL 이해Understanding SAL 이 문서의 내용 --> Microsoft SAL (소스 코드 주석 언어)은 함수에서 매개 변수를 사용 하는 방법, 해당 매개 변수를 사용 하는 가정 및 완료 될 때의 보장을 설명 하는 데 사용할

docs.microsoft.com

 _In_      : 여기와도 읽기전용임.

_In_opt_ : _In_과 동일하다는데... 매개변수가 선택적일 경우에 사용??? 단, 입력 매개 변수는 NULL이 될 수 있으므로 함수는이를 확인 해야 합니다. 이제 무슨 뜻인지 알겠음..

 

 

'IT' 카테고리의 다른 글

[2020_0928]python_32bit  (0) 2020.09.28
취업관련 그리고 진도용...  (0) 2020.09.25
윈도우 프로그래밍(1)  (0) 2020.08.08
자바스크립트 비동기 관련...  (0) 2020.08.08
이클립스 utf8 인코딩 설정(eclipse.ini)  (0) 2019.05.09
Posted by roselumi
,