VB 프로그래밍 기초 과정
APIAPI 텍스트 브라우저란 무엇입니까?
API 함수 선언 데이터 유형 및 "유형 안전성"
일정한 구조
일부 API 기능 세트 요약: 제어 및 메시지 기능, 하드웨어 및 시스템 기능, 메뉴 기능, 그리기 기능
API란?
우선, API가 무엇인지 모두에게 알려야 합니다. 소위 API는 원래 C 및 C++ 프로그래머를 위해 작성되었습니다. 쉽게 말하면 API는 DLL이라는 별도의 동적 링크 라이브러리 파일에 포함되어 있는 일종의 함수입니다. 표준 정의에 따르면 API는 Windows의 32비트 애플리케이션 프로그래밍 인터페이스로, 프로그래머가 다양한 유형의 프로그래밍 언어를 사용하여 실행되는 프로그램을 컴파일할 수 있도록 하는 일련의 매우 복잡한 기능입니다. Windows 95 및 Windows NT 응용 프로그램의 경우. VC를 공부한 적이 있다면 API는 문제가 되지 않는다고 할 수 있습니다. 하지만 VC를 배운 적이 없거나 Windows95의 구조에 익숙하지 않다면 API를 배우는 것이 매우 어려울 것이라고 할 수 있습니다.
WINDOWS의 SYSTEM 폴더를 열면 DLL이라는 이름의 추가 파일이 많이 있는 것을 확인할 수 있습니다. DLL에는 API 함수가 하나만 포함되는 것이 아니라 수십 또는 수백 개가 포함됩니다. 우리 모두 그것을 마스터할 수 있습니까? 대답은 '아니요'입니다. 마스터하는 것은 불가능합니다. 하지만 사실, 우리는 그것들을 모두 마스터할 필요는 없습니다. 단지 Windos 시스템 자체와 함께 제공되는 API 기능을 마스터하는 데 집중하면 됩니다. 그러나 VB 자체 기능을 복제하는 기능도 폐기해야 합니다. 예를 들어, VB
etAttr 명령은 파일 속성을 가져올 수 있고 SetAttr은 파일 속성을 설정할 수 있습니다. API에 해당하는 함수도 있습니다.
GetFileAttributes와 SetFileAttributes의 성능은 비슷합니다. 그렇게 계산하면 500~600개 정도 남습니다. 예, 꽤 많습니다. 하지만 그 중 100가지를 익숙하게 마스터한다면 여러분의 프로그래밍 수준은 지금보다 적어도 두 배는 높아질 것이라고 감히 말씀드릴 수 있습니다. 사람들은 VB와 WINDOWS가 밀접한 관계에 있다고 말하지만 저는 API가 더 가깝다고 생각합니다.
윈도우. API를 배우면 첫 번째 이득은 WINDOWS 아키텍처에 대한 이해입니다. 이 이득은 쉽지 않습니다.
API에 의존하지 않으면 어떻게 될까요? 대부분이 고급 프로그래밍 책이라고 말씀드릴 수 있습니다. 이 책의 시작 부분에 나와 있음). 이 책은 특정 VB 기초를 갖춘 독자를 대상으로 하며) 첫 번째 질문은 일반적으로 API로 시작됩니다. 그러므로 API를 배우지 않으면 아마도 주니어 레벨에 머물며 올라가지 못할 것이라고 할 수 있습니다. 유일한 방법은 다른 사람에게 도움을 요청하는 것입니다. 죽어 가고 있습니다. 와서 나를 구해주십시오. 이걸 어떡해야합니까, 저건 어떡합니까? 물론 지금 온라인에는 좋은 사람들이 너무 많습니다. (나도 포함해 ㅎㅎ) 하지만 이 방법으로는 좋은 작품이 손에서 나올 수 없다는 점을 이해해 주셔야 합니다. 이러한 지식이 없으면 전체적인 디자인 컨셉을 마음속에 형성할 수 없기 때문입니다.
API 텍스트 브라우저[반환]
많은 API 함수는 매우 깁니다. 다음은 APIDdeClientTransaction 함수의 예입니다.
DeclareFunctionDdeClientTransactionLib"user32"(pDataAsByte,ByValcbDataAsLong,ByValhConvAsLong,ByValhszItemAsLong,ByValwFmtAsLong,ByValwTypeAsLong,ByValdwTimeoutAsLong,pdwResultAsLong)AsLong
우와! 너무 오랫동안 API에 노출된 적이 없다면 겁이 나셨을 것 같습니다. 계속 공부해야 하나 고민하고 계실 수도 있습니다. 하지만 걱정하지 마십시오. 다행스럽게도 Microsoft 디자이너가 유용한 도구를 제공합니다. 이것이 바로 API입니다.
텍스트 뷰어.
API 텍스트 뷰어를 통해 프로그램에 필요한 함수 선언, 구조 유형 및 상수를 쉽게 찾은 다음 이를 클립보드에 복사하고 마지막으로 VB 프로그램의 코드 세그먼트에 붙여넣을 수 있습니다. 대부분의 경우 프로그램에 필요한 기능, 구조 및 상수의 세 가지 측면을 결정하는 한 API 텍스트 브라우저에서 위의 작업을 통해 이를 프로그램 세그먼트에 추가하여 프로그램에서 사용할 수 있습니다. . 기능. 이는 API 학습을 위한 가장 기본적인 상식 질문이며, API의 거대한 시스템 콘텐츠에 비해 훨씬 적습니다. 우리는 미래에 에너지를 어디에 낭비하게 될까요(결코 낭비가 아닙니다).
언제 어떤 함수를 사용해야 하는지, 언제 어떤 구조 유형을 사용해야 하는지, 언제 어떤 상수를 사용해야 하는지.
API 함수 선언
다시 생각해 봅시다. VB에서 함수를 선언하는 방법은 무엇입니까? 이 글을 읽고 계시다면 이 질문에 확실히 답하실 수 있을 것 같습니다. 다음은 여러분에게 친숙할 함수 선언입니다.
함수SetFocus(ByValhwndAsLong)AsLong
즉, 이 코드 줄은 SetFocus라는 함수를 정의합니다. 이 함수는 Long 데이터 유형의 매개 변수를 가지며 함수가 실행된 후 Long 데이터가 반환됩니다.
API 함수의 선언도 매우 유사합니다. 예를 들어 API의 SetFocus 함수는 다음과 같이 작성됩니다.
DeclareFunctionSetFocusLib"user32"Alias"SetFocus"(ByValhwndAsLong)AsLong
조금 더 복잡합니다. 예, 조금 더 복잡합니다. 하지만 이러한 추가 부분을 제외하고 다른 부분은 이전에 배운 내용과 여전히 동일하다는 것을 말씀드릴 수 있습니다. 프로그램의 함수 호출도 마찬가지입니다. 좋다:
DimdlAsLong
dl&=SetFoucs(Form1.Hwnd)
그러나 한 가지는 분명합니다. 작동 메커니즘을 볼 수 있는 직접 작성하는 프로그램도 아니고 VB와도 다릅니다.
내장 함수와 마찬가지로 VB의 온라인 도움말에서 사용법을 확인할 수 있습니다. 유일한 방법은 VB가 아닌 다른 정보를 배우고 찾아보는 것입니다.
Declare 문은 모듈 수준에서 DLL(동적 연결 라이브러리)의 외부 프로시저에 대한 참조를 선언하는 데 사용됩니다. 이를 위해서는 모든 API 함수 선언이 이 명령문을 작성해야 한다는 점만 기억하면 됩니다.
Iib는 선언된 프로시저나 함수가 포함된 동적 링크 라이브러리 또는 코드 리소스를 나타냅니다. 즉, 기능이나 프로세스가 어디서 오는지에 대한 질문을 설명합니다.
위의 예에서와 같이 SetFocusLib "user32"는 SetFocus 함수가 user32.dll 파일에서 온 것임을 나타냅니다. 주요 DLL 동적 링크 라이브러리 파일은 다음과 같습니다.
user32.dllWindows 관리. 애플리케이션의 사용자 인터페이스를 생성하고 관리합니다.
GDI32.dll 그래픽 장치 인터페이스. Windows 장치용 그래픽 출력 생성
Kernel32.dll 시스템 서비스. 운영 체제의 컴퓨터 리소스에 액세스합니다.
DLL 파일이 Windows 또는 시스템 폴더에 없으면 해당 소스를 함수(
길). 예를 들어 SetFocusLib "c:/Mydll/user32"
함수 선언의 별칭은 선택 사항입니다. 호출할 프로시저가 DLL(동적 연결 라이브러리)에 다른 이름(별칭)을 가지고 있음을 나타냅니다. 예를 들어 별칭 "SetFocus"는 User32.dll에 있는 SetFocus 함수의 다른 이름이 다음과 같음을 나타냅니다.
SetFocus. 두 이름이 같은 이유는 무엇입니까? 물론 다를 수도 있습니다. 많은 경우 Alias로 설명되는 함수 이름, 즉 별칭의 마지막 문자는 문자 A인 경우가 많습니다. 예를 들어 SetWindowsText 함수의 다른 이름은 다음과 같습니다.
SetWindowsTextA, 별칭 "SetWindowsTextA"로 표현됩니다. 이 A는 디자이너가 사용하는 명명 규칙일 뿐이며 해당 기능이 ANSI 버전에 속함을 나타냅니다.
그렇다면 별칭의 용도는 정확히 무엇입니까? 이론적으로 별칭은 다른 이름으로 API를 호출하기 위한 기능적 방법을 제공합니다. 별칭을 지정하면 Declare 문 이후에 함수에 따라 함수를 호출하더라도 실제 함수 호출에서는 별칭이 첫 번째 선택이 됩니다. 예를 들어 다음 두 함수(Function, ABCD) 선언은 유효하며 동일한 SetFocus 함수를 호출합니다.
DeclareFunctionSetFocusLib"user32""SetFocus"(ByValhwndAsLong)AsLong
선언ABCDSetFocusLib"user32"별칭"SetFocus"(ByValhwndAsLong)AsLong
Alias를 선택할 때 Alias의 대소문자에 주의해야 합니다. Alias를 선택하지 않으면 함수 이름은 대소문자에 주의해야 하며 변경할 수 없습니다. 물론 함수 선언이 API에서 직접 이루어지기 때문에 많은 경우
텍스트 브라우저에서 복사한 것이므로 이런 오류가 발생할 확률은 매우 낮지만, 이 점은 꼭 알아두셔야 합니다.
마지막으로 API 선언(구조 및 상수 포함)은 양식이나 모듈의 "GeneralDeclarations" 섹션에 배치되어야 합니다.
데이터 유형 및 "유형 안전성"
API 함수에 사용되는 데이터 유형은 기본적으로 VB의 데이터 유형과 동일합니다. 하지만 WIN32의 API 함수로는 Integer가 존재하지 않습니다.
데이터 유형. 또 다른 점은 부울 데이터 유형을 API 함수에서 볼 수 없다는 것입니다. Variant 데이터 유형은 DataAsAny와 같은 API 함수에서 Any 형식으로 나타납니다. 이는 모든 매개변수 유형이 이 API 함수의 매개변수로 전달될 수 있다는 의미이지만 그렇게 하는 데에는 몇 가지 단점이 있습니다. 그 이유는 대상 매개변수의 모든 유형 검사가 꺼지기 때문입니다. 이는 자연스럽게 다양한 유형의 매개변수 호출에서 오류가 발생할 기회를 만듭니다.
엄격한 유형 검사를 시행하고 위에서 언급한 문제를 피하기 위한 한 가지 방법은 위에서 언급한 Alias 기술을 함수에 사용하는 것입니다. 예를 들어, API 함수 GetDIBits에 대해 다른 선언 방법을 사용할 수 있습니다. 다음과 같이:
GetDIBits 함수의 프로토타입:
PublicDeclareFunctionGetDIBitsLib"gdi32"Alias"GetDIBits"(ByValaHDCAsLong,ByValhBitmapAsLong,ByValnStartScanAsLong,ByValnNumScansAsLong,lpBitsAsAny,lpBIABITMAPINFO,ByValwUsageAsLong)AsLong
GetDIBits 함수 수정:
PublicDeclareFunctionGetDIBitsLongLib"gdi32"Alias"GetDIBits"(ByValaHDCAsLong,ByValhBitmapAsLong,ByValnStartScanAsLong,ByValnNumScansAsLong,lpBitsAsLong,lpBIABITMAPINFO,ByValwUsageAsLong)AsLong
이 과정의 앞부분에서 배운 지식을 통해 프로토타입 GetDIBits 함수 또는 수정된 GetDIBitsLong 함수가 실제로 Alias에서 지정한 원본 GetDIBits 함수를 호출할지 여부를 이미 알 수 있습니다. 그러나 둘 사이의 차이점은 수정된 함수에서 lpBits 매개변수를 Long으로 강제한다는 것입니다. 이렇게 하면 함수 호출에서 오류가 발생할 가능성이 최소화됩니다. 이 접근 방식을 "안전한 형식" 선언이라고 합니다.
API 함수에서 자주 볼 수 있는 데이터 유형은 Long, String, Byte, Any...(그렇습니다.)
끊임없는
API 상수에는 특별한 것이 없습니다. VB에서 다음 코드를 살펴보세요.
Msg=MsgBox("안녕하세요",vbOKCancel)
우리는 vbOKCancel 상수의 값이 1과 같다는 것을 알고 있습니다. 코드의 기능에 영향을 주지 않고 다음과 같이 위의 코드를 작성할 수 있습니다.
Msg=MsgBox("안녕하세요",1)
그러나 후자를 선택하면 코드를 이해하기 어려워지기 때문에 선택하지 않을 수도 있습니다. 이 접근 방식은 API에서도 사용됩니다. 단지 API 상수가 이벤트 전에 초기화되고 선언되어야 하는데 VB 자체에서는 이를 이해할 수 없습니다. 해당 콘텐츠는 여전히 API에서 제공됩니다.
텍스트 브라우저. 구체적인 형태는 다음과 같습니다.
PublicConstABM_ACTIVATE=&H6
PublicConstRIGHT_CTRL_PRESSED=&H4
PublicConstRPC_E_SERVER_DIED=&H80010007
PrivateConstRPC_S_CALL_FAILED_DNE=1727&
상수 초기화에 GlobalConstABM_ACTIVATE=&H6 등 일부 프로그램에서는 Global을 사용하는데 Public이 이를 완전히 대체할 수 있다고 생각합니다. 과거에는 Global을 사용했지만 지금은 많이 사용하지 않습니다. 지금 이걸 사용하고, 지금 저것을 사용하면 프로그램 간의 일관성을 유지할 수 없거나 적어도 어색해 보입니다.
구조[반환]
구조는 C와 C++의 언어입니다. 일반적으로 VB에서는 사용자 정의 데이터 유형이라고 합니다. 아마 많은 친구들이 이미 알고 있을 겁니다. API 분야에서는 API의 다양한 구조 유형이 제가 전혀 정의하지 않았기 때문에 구조라고 부르는 것을 선호합니다(
맞춤형).
VB에서 API 구조는 TYPE....ENDTYPE 문으로도 정의됩니다. 예를 들어 API에서 포인트 구조는 다음과 같이 정의됩니다.
PublicTypePOINTAPI
XAsLong' X 좌표 위 점의 좌표값(가로좌표)
YAsLong'Y좌표(세로)상의 점의 좌표값
종료 유형
또 다른 예로 API의 직사각형(Rect) 구조 정의는 다음과 같습니다.
공개 유형RECT
LeftAsLong'X 직사각형의 왼쪽 위 모서리 좌표
TopAsLong' 직사각형의 왼쪽 상단 모서리의 Y 좌표
직사각형의 오른쪽 하단 모서리의 RightAsLong'X 좌표
BottomAsLong' 직사각형 오른쪽 하단 모서리의 Y 좌표
종료 유형
이 콘텐츠는 API 텍스트 브라우저에서도 복사할 수 있습니다. 이러한 구조의 변수 이름은 구조 자체에 영향을 주지 않고 마음대로 변경할 수 있습니다. 즉, 이러한 멤버 변수는 모두 가상입니다. 예를 들어 POINTAPI 구조는 다음과 같이 변경될 수 있습니다.
PublicTypePOINTAPI
MyXAsLong'X좌표상의 점의 좌표값(가로좌표)
MyYAsLong'Y좌표(세로) 상의 점의 좌표값
종료 유형
그러나 일반적으로 말하면 이것은 필요하지 않습니다. 구조 자체는 데이터 유형이므로 이를 사용할 때 프로그램에서 실제로 구조를 사용하려면 먼저 특정 변수를 구조 유형으로 선언해야 합니다. 구조체의 선언 방법은 다른 데이터의 선언 방법과 동일합니다. 예를 들어 다음 문은 변수 MyPoint를 POINTAPI 구조체 유형으로 선언합니다.
MyPointAsPOINTAPI
구조체의 멤버 변수를 참조하는 것도 매우 간단합니다. 구조체 이름 뒤에 "."를 추가한 다음 참조할 멤버 변수를 작성하면 됩니다. 이는 VB에서 개체의 속성을 참조하는 것과 매우 유사합니다. 예를 들어 위에서 선언한 MyPoint 구조의 X 변수 값을 Temp& 변수에 할당하면
코드는 다음과 같습니다:
임시&=MyPoint.X
그러나 위 예시의 MyPoint를 값으로 생각하면 안 된다는 점에 유의하는 것이 중요합니다. 값이 아니라 주소(
바늘). 값과 주소는 완전히 다른 개념입니다. 구조 요구사항은 WINDOWS 함수, 즉 모든 API를 참조하여 전달됩니다.
함수에서 구조는 ByRef에 의해 전달됩니다. ByRef는 Declare 문의 기본 유형입니다. 구조 전달의 경우 ByVal을 사용하지 마십시오. 아무 것도 얻지 못할 것입니다. 구조 이름은 실제로 구조(구조의 첫 번째 주소)에 대한 포인터이므로 특정 구조 이름만 전송할 수 있습니다(요약을 참조하세요. 이 전송 방법을 강조하기 위해 빨간색 글꼴을 사용했습니다).
구조체는 포인터를 전송하므로 함수는 구조체를 직접 읽고 씁니다. 이 기능은 함수 실행 결과를 구조체로 로드하는 데 매우 적합합니다.
요약[반환]
다음 절차는 이번 단원에서 배운 내용을 요약하기 위해 제공됩니다. VB를 시작하고, 새 프로젝트를 만들고, 명령 단추를 추가하고, 다음 코드를 코드 세그먼트에 복사하고 실행합니다.
PrivateDeclareFunctionGetCursorPosLib"user32"(lpPointAsPOINTAPI)AsLong
PrivateTypePOINTAPI'포인트 구조 정의
XAsLong' X 좌표 위 점의 좌표값(가로좌표)
YAsLong'Y좌표(세로)상의 점의 좌표값
종료 유형
SubPrintCursorPos()
DimdlASLong
DimMyPointAsPOINTAPI
dl&=GetCursorPos(MyPoint)'화면 마우스 좌표를 가져오는 함수를 호출합니다.
Debug.Print"X="&Str(MyPoint.X)&"and"&"Y="&Str(MyPoint.Y)
EndSub
PrivateSubCommand1_Click()
인쇄커서위치
EndSub
출력 결과는 다음과 같습니다(각 실행마다 다른 결과가 나올 수 있으며 이는 함수 호출 시 화면에서 마우스 포인터의 위치에 따라 결정됩니다).
X=240및 Y=151
프로그램에서 GetCursorPos 함수는 화면에서 마우스 포인터의 위치를 얻는 데 사용됩니다.
위의 예에서는 매개변수로 전달된 MyPpint 구조의 내용이 함수 호출 이후 크게 변경된 것을 확인할 수 있습니다. 이는 구조가 ByRef에 의해 전달되기 때문입니다.
일부 API 함수 세트 [반환]
WindowsAPI
1. 컨트롤 및 메시지 기능
adjustWindowRect 창 스타일이 주어지면 대상 클라이언트 영역 직사각형을 얻는 데 필요한 창 크기를 계산합니다.
AnyPopup은 화면에 팝업이 있는지 확인합니다.
ArrangeIconicWindows는 부모 창의 최소화된 자식 창을 정렬합니다.
AttachThreadInput 연결 스레드 입력 기능
BeginDeferWindowPos는 일련의 새로운 창 위치를 구축하는 프로세스를 시작합니다.
BringWindowToTop은 지정된 창을 창 목록의 맨 위로 가져옵니다.
CascadeWindows는 계단식 방식으로 창을 정렬합니다.
ChildWindowFromPoint는 지정된 지점을 포함하는 부모 창의 첫 번째 자식 창 핸들을 반환합니다.
ClientToScreen은 클라이언트 영역 좌표로 표시되는 창 내 한 지점의 화면 좌표를 결정합니다.
CloseWindow는 지정된 창을 최소화합니다.
CopyRect 직사각형 콘텐츠 복사
DeferWindowPos 이 함수는 특정 창에 대한 새 창 위치를 지정합니다.
DestroyWindow는 지정된 창과 모든 하위 창을 지웁니다.
DrawAnimatedRects는 일련의 동적 직사각형을 묘사합니다.
EnableWindow는 지정된 창에서 모든 마우스 및 키보드 입력을 허용하거나 비활성화합니다.
EndDeferWindowPos는 DeferWindowPos가 호출될 때 지정된 모든 창의 위치와 상태를 동시에 업데이트합니다.
EnumChildWindows는 지정된 부모 창에 대한 자식 창을 열거합니다.
EnumThreadWindows는 지정된 작업과 관련된 창을 열거합니다.
EnumWindows는 창 목록의 모든 상위 창을 열거합니다.
EqualRect는 두 직사각형 구조가 동일한지 확인합니다.
FindWindow는 지정된 기준을 충족하는 창 목록에서 첫 번째 최상위 창을 찾습니다.
FindWindowEx는 지정된 조건과 일치하는 창 목록의 첫 번째 하위 창을 검색합니다.
FlashWindow는 지정된 창을 깜박입니다.
GetActiveWindow는 활성 창의 핸들을 가져옵니다.
GetCapture는 현재 입력 스레드에 있고 마우스 캡처(마우스 활동이 수신됨)가 있는 창의 핸들을 가져옵니다.
GetClassInfo는 지정된 클래스와 관련된 정보가 포함된 WNDCLASS 구조(또는 WNDCLASSEX 구조)의 복사본을 가져옵니다.
GetClassLong은 창 클래스의 Long 변수 항목을 얻습니다.
GetClassName은 지정된 창의 클래스 이름을 가져옵니다.
GetClassWord는 창 클래스에 대한 정수 변수를 가져옵니다.
GetClientRect는 지정된 창의 클라이언트 영역에 있는 직사각형의 크기를 반환합니다.
GetDesktopWindow는 전체 화면을 나타내는 창(데스크톱 창) 핸들을 가져옵니다.
GetFocus는 입력 포커스가 있는 창의 핸들을 가져옵니다.
GetForegroundWindow는 앞 창의 핸들을 가져옵니다.
GetLastActivePopup 지정된 상위 창에서 가장 최근에 활성화된 팝업 창에 대한 핸들을 가져옵니다.
GetLastError는 이전에 호출된 api 함수를 대상으로 합니다. 이 함수를 사용하면 확장된 오류 정보를 얻을 수 있습니다.
GetParent는 지정된 창의 상위 창을 결정합니다.
GetTopWindow는 내부 창 목록에서 지정된 창에 속하는 첫 번째 창 핸들을 검색합니다.
GetUpdateRect는 업데이트해야 하는 지정된 창 부분을 설명하는 직사각형을 얻습니다.
GetWindow는 소스 창과 특정 관계가 있는 창의 핸들을 얻습니다.
GetWindowContextHelpId는 창과 연결된 도움말 장면 ID를 가져옵니다.
GetWindowLong은 지정된 창의 구조에서 정보를 얻습니다.
GetWindowPlacement는 지정된 창의 상태 및 위치 정보를 얻습니다.
GetWindowRect는 전체 창의 범위 사각형을 가져옵니다. 창의 테두리, 제목 표시줄, 스크롤 막대, 메뉴 등이 모두 이 사각형 내에 있습니다.
GetWindowText는 폼의 제목 텍스트나 컨트롤의 내용을 가져옵니다.
GetWindowTextLength는 창 제목 텍스트 또는 컨트롤 내용의 길이를 조사합니다.
GetWindowWord는 지정된 창 구조에 대한 정보를 얻습니다.
InflateRect는 직사각형의 크기를 늘리거나 줄입니다.
IntersectRect 함수는 lpSrc1Rect와 lpSrc2Rect 두 직사각형의 교차점인 lpDestRect에 직사각형을 로드합니다.
InvalidateRect는 창의 클라이언트 영역 전체 또는 일부를 차단합니다.
IsChild는 창이 다른 창의 하위 창인지 하위 창인지 확인합니다.
IsIconic은 창이 최소화되었는지 여부를 확인합니다.
IsRectEmpty는 사각형이 비어 있는지 확인합니다.
IsWindow는 창 핸들이 유효한지 확인합니다.
IsWindowEnabled는 창이 활성 상태인지 여부를 결정합니다.
IsWindowUnicode는 창이 유니코드 창인지 여부를 결정합니다. 이는 창이 모든 텍스트 기반 메시지에 대해 유니코드 리터럴을 수신함을 의미합니다.
IsWindowVisible은 창이 표시되는지 여부를 결정합니다.
IsZoomed는 창이 최대화되었는지 여부를 결정합니다.
LockWindowUpdate는 지정된 창을 잠그고 업데이트를 방지합니다.
MapWindowPoints는 한 창의 클라이언트 영역 좌표에 있는 점을 다른 창의 클라이언트 영역 좌표계로 변환합니다.
MoveWindow는 지정된 창의 위치와 크기를 변경합니다.
OffsetRect는 지정된 오프셋을 적용하여 사각형을 이동시킵니다.
OpenIcon은 최소화된 프로그램을 복원하고 활성화합니다.
PtInRect는 지정된 점이 사각형 내부에 있는지 확인합니다.
RedrawWindow는 창 전체 또는 일부를 다시 그립니다.
ReleaseCapture는 현재 애플리케이션에 대한 마우스 캡처를 해제합니다.
ScreenToClient는 화면에서 지정된 지점의 클라이언트 영역 좌표를 결정합니다.
ScrollWindow 스크롤 창의 클라이언트 영역 전체 또는 일부
ScrollWindowEx는 추가 옵션에 따라 창의 클라이언트 영역 전체 또는 일부를 스크롤합니다.
SetActiveWindow는 지정된 창을 활성화합니다.
SetCapture는 마우스 캡처를 지정된 창으로 설정합니다.
SetClassLong은 창 클래스에 대한 Long 변수 항목을 설정합니다.
SetClassWord는 창 클래스에 대한 항목을 설정합니다.
SetFocusAPI는 입력 포커스를 지정된 창으로 설정합니다. 필요한 경우 창이 활성화됩니다.
SetForegroundWindow는 창을 시스템의 전면 창으로 설정합니다.
SetParent는 창의 새 부모를 지정합니다.
SetRect는 지정된 사각형의 내용을 설정합니다.
SetRectEmpty는 사각형을 빈 사각형으로 설정합니다.
SetWindowContextHelpId는 지정된 창에 대한 도움말 장면(컨텍스트) ID를 설정합니다.
SetWindowLong은 창 구조에서 지정된 창에 대한 정보를 설정합니다.
SetWindowPlacement는 창 상태 및 위치 정보를 설정합니다.
SetWindowPos는 창의 새 위치와 상태를 지정합니다.
SetWindowText는 창의 제목 텍스트 또는 컨트롤의 내용을 설정합니다.
SetWindowWord는 창 구조에서 지정된 창에 대한 정보를 설정합니다.
ShowOwnedPopups 지정된 창에 소유된 모든 팝업 창을 표시하거나 숨깁니다.
ShowWindow는 창의 가시성을 제어합니다.
ShowWindowAsync는 ShowWindow와 유사합니다.
SubtractRect는 lprcSrc1 직사각형에서 lprcSrc2를 뺀 결과인 lprcDst 직사각형을 로드합니다.
TileWindows는 창을 타일 순서로 정렬합니다.
UnionRect는 lpSrc1Rect와 lpSrc2Rect를 결합한 결과인 lpDestRect 대상 사각형을 로드합니다.
UpdateWindow는 즉시 창 업데이트를 강제합니다.
ValidateRect는 창의 클라이언트 영역 전체 또는 일부의 유효성을 검사합니다.
WindowFromPoint는 지정된 지점을 포함하는 창에 대한 핸들을 반환합니다. 마스크된 창, 숨겨진 창, 투명한 창 무시
2. 하드웨어 및 시스템 기능
ActivateKeyboardLayout은 새로운 키보드 레이아웃을 활성화합니다. 키보드 레이아웃은 실제 키보드의 키 위치와 의미를 정의합니다.
경고음은 간단한 소리를 생성하는 데 사용됩니다.
CharToOem은 ANSI 문자 집합의 문자열을 OEM 문자 집합으로 변환합니다.
ClipCursor는 포인터를 지정된 영역으로 제한합니다.
ConvertDefaultLocale은 특수 로컬 식별자를 실제 로컬 ID로 변환합니다.
CreateCaret은 지정된 정보를 기반으로 캐럿(커서)을 생성하고 이를 지정된 창의 기본 캐럿으로 선택합니다.
DestroyCaret은 캐럿을 삭제(파괴)합니다.
EnumCalendarInfo는 지정된 "로컬" 환경에서 사용 가능한 달력 정보를 열거합니다.
EnumDateFormats는 지정된 "로컬" 설정에서 사용할 수 있는 긴 날짜 형식과 간단한 날짜 형식을 열거합니다.
EnumSystemCodePages는 시스템에 설치되었거나 지원되는 코드 페이지를 열거합니다.
EnumSystemLocales는 시스템이 설치했거나 지원을 제공하는 "로컬" 설정을 열거합니다.
EnumTimeFormats는 지정된 위치에 적용 가능한 시간 형식을 열거합니다.
ExitWindowsEx는 창을 종료하고 특정 옵션으로 다시 시작합니다.
ExpandEnvironmentStrings는 환경 문자열을 확장합니다.
FreeEnvironmentStrings는 지정된 환경 문자열 블록을 변환합니다.
GetACP는 현재 유효한 ANSI 코드 페이지를 결정합니다.
GetAsyncKeyState는 함수가 호출될 때 지정된 가상 키의 상태를 확인합니다.
GetCaretBlinkTime은 캐럿 커서의 깜박이는 빈도를 결정합니다.
GetCaretPos는 캐럿의 현재 위치를 결정합니다.
GetClipCursor 현재 마우스 포인터에 대해 지정된 클리핑 영역을 설명하는 사각형을 가져옵니다.
GetCommandLine은 현재 명령줄 버퍼에 대한 포인터를 가져옵니다.
GetComputerName은 이 컴퓨터의 이름을 가져옵니다.
GetCPInfo는 지정된 코드 페이지와 관련된 정보를 얻습니다.
GetCurrencyFormat은 지정된 "로컬" 설정의 통화 형식에 따라 숫자 형식을 지정합니다.
GetCursor 현재 선택된 마우스 포인터의 핸들을 가져옵니다.
GetCursorPos는 마우스 포인터의 현재 위치를 가져옵니다.
GetDateFormat은 지정된 "로컬" 형식으로 시스템 날짜 형식을 지정합니다.
GetDoubleClickTime은 더블 클릭 이벤트로 처리될 두 번의 연속 마우스 클릭 사이의 시간 간격을 결정합니다.
GetEnvironmentStrings는 현재 환경 문자열 설정이 포함된 메모리 블록에 핸들을 할당하고 반환합니다.
GetEnvironmentVariable은 환경 변수의 값을 가져옵니다.
GetInputState는 보류 중인(처리 대기 중인) 마우스 또는 키보드 이벤트가 있는지 확인합니다.
GetKBCodePage는 GetOEMCP로 대체되었으며 두 기능은 모두 동일합니다.
GetKeyboardLayout은 지정된 애플리케이션의 키보드 레이아웃을 설명하는 핸들을 얻습니다.
GetKeyboardLayoutList는 시스템에 적용 가능한 모든 키보드 레이아웃 목록을 가져옵니다.
GetKeyboardLayoutName은 현재 활성화된 키보드 레이아웃의 이름을 가져옵니다.
GetKeyboardState는 키보드에 있는 각 가상 키의 현재 상태를 가져옵니다.
GetKeyboardType은 사용 중인 키보드에 대한 정보를 가져옵니다.
GetKeyNameText는 스캔 코드에 따라 키 이름을 결정합니다.
GetKeyState는 정보가 마지막으로 입력되었을 때 처리된 키에 대해 지정된 가상 키의 상태를 확인합니다.
GetLastError는 이전에 호출된 api 함수를 대상으로 합니다. 이 함수를 사용하면 확장된 오류 정보를 얻을 수 있습니다.
GetLocaleInfo는 지정된 "장소"와 관련된 정보를 얻습니다.
GetLocalTime은 현지 날짜와 시간을 가져옵니다.
GetNumberFormat은 지정된 "장소"에 대해 특정 형식으로 숫자 형식을 지정합니다.
GetOEMCP는 OEM과 ANSI 문자 집합 간에 변환할 Windows 코드 페이지를 결정합니다.
GetQueueStatus는 애플리케이션 메시지 큐에서 보류 중인(처리 대기 중인) 메시지 유형을 결정합니다.
GetSysColor는 지정된 Windows 표시 개체의 색상을 결정합니다.
GetSystemDefaultLangID는 시스템의 기본 언어 ID를 가져옵니다.
GetSystemDefaultLCID는 현재 기본 시스템 "위치"를 가져옵니다.
GetSystemInfo는 기본 하드웨어 플랫폼과 관련된 정보를 얻습니다.
GetSystemMetrics는 Windows 환경과 관련된 정보를 반환합니다.
GetSystemPowerStatus는 현재 시스템 전원 상태와 관련된 정보를 얻습니다.
GetSystemTime은 현재 시스템 시간을 가져옵니다. 이번에는 "협정 세계 시간"(즉, GMT라고도 하는 UTC) 형식을 사용합니다.
GetSystemTimeAdjustment는 내부 시스템 시계를 외부 시계 소스와 동기화합니다.
GetThreadLocale은 현재 스레드의 로컬 ID를 가져옵니다.
GetTickCount는 Windows가 시작된 이후 경과된 시간(밀리초)을 가져오는 데 사용됩니다.
GetTimeFormat은 현재 지정된 "장소"에 대한 특정 형식으로 시스템 시간 형식을 지정합니다.
GetTimeZoneInformation은 시스템 시간대 설정과 관련된 정보를 얻습니다.
GetUserDefaultLangID는 현재 사용자의 기본 언어 ID를 가져옵니다.
GetUserDefaultLCID 현재 사용자의 기본 "로컬" 설정을 가져옵니다.
GetUserName은 현재 사용자의 이름을 가져옵니다.
GetVersion은 현재 실행 중인 Windows 및 DOS 버전을 확인합니다.
GetVersionEx는 플랫폼 및 운영 체제와 관련된 버전 정보를 얻습니다.
HideCaret은 지정된 창에서 캐럿(커서)을 숨깁니다.
IsValidCodePage는 코드 페이지가 유효한지 확인합니다.
IsValidLocale은 로컬 식별자가 유효한지 확인합니다.
keybd_event 함수는 키보드 동작을 시뮬레이션합니다.
LoadKeyboardLayout은 키보드 레이아웃을 로드합니다.
MapVirtualKey는 지정된 매핑 유형에 따라 다양한 스캔 코드 및 문자 변환을 수행합니다.
MapVirtualKeyEx는 지정된 매핑 유형에 따라 다양한 스캔 코드 및 문자 변환을 수행합니다.
MessageBeep은 시스템 사운드를 재생합니다. 시스템 사운드 분배 계획은 제어판에서 결정됩니다.
mouse_event는 마우스 이벤트를 시뮬레이션합니다.
OemKeyScan은 OEM 문자 집합에서 ASCII 문자의 스캔 코드와 Shift 키 상태를 확인합니다.
OemToChar는 OEM 문자 집합의 문자열을 ANSI 문자 집합으로 변환합니다.
SetCaretBlinkTime은 캐럿(커서)의 깜박이는 빈도를 지정합니다.
SetCaretPos는 캐럿의 위치를 지정합니다.
SetComputerName은 새 컴퓨터 이름을 설정합니다.
SetCursor는 지정된 마우스 포인터를 현재 포인터로 설정합니다.
SetCursorPos는 포인터의 위치를 설정합니다.
SetDoubleClickTime은 시스템이 두 번 클릭 이벤트로 간주하는 두 번의 연속 마우스 클릭 사이의 시간 간격을 설정합니다.
SetEnvironmentVariable은 환경 변수를 지정된 값으로 설정합니다.
SetKeyboardState는 키보드의 각 가상 키의 현재 상태를 설정합니다.
SetLocaleInfo는 사용자 "로컬" 설정 정보를 변경합니다.
SetLocalTime은 현재 현지 시간을 설정합니다.
SetSysColors는 지정된 창에 표시되는 개체의 색상을 설정합니다.
SetSystemCursor는 표준 시스템 포인터를 변경합니다.
SetSystemTime은 현재 시스템 시간을 설정합니다.
SetSystemTimeAdjustment는 내부 시스템 클럭을 외부 클럭 신호 소스와 동기화하기 위해 교정 값을 주기적으로 추가합니다.
SetThreadLocale은 현재 스레드의 로케일을 설정합니다.
SetTimeZoneInformation은 시스템 시간대 정보를 설정합니다.
ShowCaret은 지정된 창에 캐럿(커서)을 표시합니다.
ShowCursor는 마우스 포인터의 가시성을 제어합니다.
SwapMouseButton은 왼쪽 및 오른쪽 마우스 버튼의 기능을 바꿀지 여부를 결정합니다.
SystemParametersInfo는 다수의 Windows 시스템 매개변수를 가져오고 설정합니다.
SystemTimeToTzSpecificLocalTime은 시스템 시간을 현지 시간으로 변환합니다.
ToAscii는 현재 스캔 코드와 키보드 정보를 기반으로 가상 키를 ASCII 문자로 변환합니다.
ToUnicode는 현재 스캔 코드 및 키보드 정보를 기반으로 가상 키를 유니코드 문자로 변환합니다.
UnloadKeyboardLayout은 지정된 키보드 레이아웃을 언로드합니다.
VkKeyScan은 Windows 문자 집합의 ASCII 문자를 기반으로 Shift 키의 가상 키 코드와 상태를 결정합니다.
~ 위에
3.메뉴 기능
AppendMenu는 지정된 메뉴에 메뉴 항목을 추가합니다.
CheckMenuItem은 지정된 메뉴 항목을 선택하거나 선택 취소합니다.
CheckMenuRadioItem은 메뉴 항목이 "라디오" 항목으로 확인되도록 지정합니다.
CreateMenu는 새 메뉴를 만듭니다.
CreatePopupMenu는 빈 팝업 메뉴를 만듭니다.
DeleteMenu는 지정된 메뉴 항목을 삭제합니다.
DestroyMenu는 지정된 메뉴를 삭제합니다.
DrawMenuBar는 지정된 창의 메뉴를 다시 그립니다.
enableMenuitem은 지정된 메뉴 항목을 허용하거나 비활성화합니다
GetMenu는 창에서 메뉴의 손잡이를 가져옵니다.
getMenuCheckMarkDimensions 메뉴 확인 표시의 크기를 반환합니다
getMenucontexthelpid 메뉴의 도움말 장면 ID를받습니다
getMenudeFaultItem 메뉴의 어떤 항목이 기본 항목인지 결정합니다.
getMenuitemCount 메뉴에서 항목 수 (메뉴 항목)를 반환합니다.
getMenuitemid 메뉴의 지정된 위치에있는 항목의 메뉴 ID를 반환합니다.
getMenuitemInfo 메뉴 항목과 관련된 특정 정보를 가져옵니다 (수신)
GetMenuitEmrect 지정된 메뉴 항목의 화면 좌표 정보를 사각형으로로드합니다.
GetMenustate 지정된 메뉴 항목의 상태와 관련된 정보를 얻습니다.
GetMenustring 지정된 메뉴 항목의 문자열을 가져옵니다
getSubmenu 메뉴의 지정된 위치에있는 팝업 메뉴의 핸들을 가져옵니다.
GetSystemMenu 지정된 창의 시스템 메뉴의 핸들을 가져옵니다.
Hilitemenuitem은 최상위 메뉴 항목의 강조 표시 상태를 제어합니다
InsertMenu는 메뉴의 지정된 위치에 메뉴 항목을 삽입하여 필요에 따라 다른 항목을 아래로 이동합니다.
InsertMenuitem은 새로운 메뉴 항목을 삽입합니다
ISMenu 지정된 핸들이 메뉴 핸들인지 결정합니다.
loadmenu 지정된 모듈 또는 응용 프로그램 인스턴스에서 메뉴를로드합니다.
loadMenuIndirect 메뉴를로드합니다
menuitemfrompoint 화면에 지정된 지점이 포함 된 메뉴 항목을 결정합니다.
ModifyMenu 메뉴 항목을 변경합니다
RemoveMenu는 지정된 메뉴 항목을 제거합니다
setMenu는 창 메뉴를 설정합니다
setMenucontexThelpid 메뉴의 도움말 장면 ID를 설정합니다
setMenudeFaultItem 메뉴 항목을 기본 항목으로 설정합니다
setMenuiteMbitMaps 표준 점검 기호 (√) 대신 지정된 메뉴 항목에서 사용할 특정 비트 맵을 설정합니다.
setMenuitemInfo 메뉴 항목에 대한 지정된 정보를 설정합니다
TrackPopupMenu 화면의 어느 곳에도 팝업 메뉴가 표시됩니다
TrackPopUpmenex는 추가 기능을 제공한다는 점을 제외하고 TrackPopUpMenu와 유사합니다.
~ 위에
다음은 메뉴 기능에 대한 몇 가지 유형의 정의입니다
menuiteminfo이 구조에는 메뉴 항목에 대한 정보가 포함되어 있습니다
TPMPARAMS이 구조는 TrackPopUpmenex 기능에 의해 추가 기능을 지원하기 위해 사용됩니다.
4. 드로잉 기능
AbortPath는 지정된 장치 장면으로 선택한 모든 경로를 버립니다. 또한 현재 진행중인 경로 생성을 취소합니다
anglearc는 연결 아크가있는 선을 그립니다
아크를 찍습니다
시작 경로는 경로 지점을 시작합니다
취소 DC는 다른 스레드에서 긴 드로잉 작업을 취소합니다
코드는 코드를 그립니다
ClosenHmetafile 지정된 향상된 Metafile 장치 장면을 닫고 새로 생성 된 Metafile로 핸들을 반환합니다.
Closefigure 경로를 그리면 현재 열린 그림을 닫으십시오.
CloseMetaFile 지정된 메타 플라이 장치 장면을 닫고 새로 생성 된 메타 피로 핸들을 반환합니다.
Copyenhmetafile 지정된 강화 메타 피의 사본 (사본)을 만듭니다.
copymetafile은 지정된 (표준) 중량의 사본을 만듭니다
CreateBrushIndirect Logbrush 데이터 구조를 기반으로 브러시를 만듭니다.
CreateBpatternBrush는 장치 독립 비트 맵을 사용하여 브러시를 생성하여 브러시 스타일 (패턴)을 지정합니다.
CreateEenhmetafile은 향상된 메타 파일 장치 장면을 만듭니다
CreateHatchBrush는 그림자 패턴의 브러시를 만듭니다
Createmetafile은 Metafile 장치 장면을 만듭니다
CreatePatternBrush 브러시 패턴을 지정하는 비트 맵을 사용하여 브러시를 만듭니다.
CreatePencencepenceceated 스타일, 너비 및 색상으로 브러시를 생성합니다.
CreatePenindirect 지정된 로그펜 구조를 기반으로 펜을 만듭니다.
CreatesolidBrush는 단색으로 브러시를 만듭니다
Deleteenhmetafile 지정된 향상된 메타 피를 삭제합니다
deletemetafile 지정된 metafile을 삭제합니다
deleteObject GDI 객체를 삭제하며 객체에서 사용하는 모든 시스템 리소스가 해제됩니다.
Drawedge는 지정된 스타일을 사용하여 직사각형 테두리를 그립니다
DrawEscape Escape 함수는 데이터를 디스플레이 장치 드라이버로 직접 보냅니다.
DrawFocusRect는 초점 사각형을 그립니다
DrawFrameControl은 표준 컨트롤을 그립니다
DrawState는 이미지 또는 드로잉 작업에 다양한 효과를 적용합니다.
타원은 지정된 사각형으로 둘러싸인 타원을 그립니다
EndPath는 경로 정의를 중지합니다
Enumenhmetafile은 향상된 메타 피에 대한 개별 메타 플 레 레코드를 나열합니다.
Enummetafile은 표준 Windows Metafile에 대한 개별 Metafile 레코드를 열거합니다.
EnumoBjects는 지정된 장치 장면에서 사용할 수있는 브러시와 브러시를 열거합니다.
ExtCreatePen은 확장 브러시 (장식용 또는 기하학적)를 만듭니다.
ExtFloodFill은 지정된 장치 장면에서 현재 선택된 브러시로 영역을 채 웁니다.
FillPath는 경로에서 열린 모양을 닫고 현재 브러시로 채우는 것입니다.
FillErct는 지정된 브러시로 사각형을 채 웁니다
FlattenPath는 모든 곡선을 경로에서 선 세그먼트로 변환합니다.
Floodfill은 현재 선택된 브러시로 지정된 장치 장면의 영역을 채 웁니다.
Framerect는 지정된 브러시를 사용하여 사각형 주위에 테두리를 그립니다.
GDICOMMENT 지정된 향상된 메타 파일 장치 장면에 주석 메시지를 추가합니다.
Gdiflush는 계류중인 드로잉 작업을 수행합니다
GDIGETBATCHLIMIT 큐에 몇 개의 GDI 드로잉 명령이 있는지 결정합니다.
GDISETBATCHLIMIT 얼마나 많은 GDI 드로잉 명령을 대기 할 수 있는지 지정합니다.
getArcDirection은 아크를 그릴 때 현재 드로잉 방향을 결정합니다.
GetBkColor 지정된 장치 장면의 현재 배경색을 가져옵니다.
GetBkMode 지정된 장치 장면에 대한 현재 배경 채우기 모드를 얻습니다.
GetBrushorgex 지정된 장치 장면에서 현재 선택된 브러시의 시작점을 결정합니다.
getCurrentObject 지정된 유형의 현재 선택된 객체를 가져옵니다.
GetCurrentPositionex 지정된 장치 장면에서 현재 펜 위치를 가져옵니다.
getenhmetafile 디스크 파일에 포함 된 향상된 메타 플라이의 중량 핸들을 얻습니다.
getenhmetafilebits 지정된 향상된 메타 파일을 메모리 버퍼에 복사합니다.
getenhmetafiledescription은 향상된 메타 피에 대한 설명을 반환합니다
getenhmetafileHeader는 향상된 메타 파일의 Metafile 헤더를 가져옵니다
getenhmetafilepaletteentries는 향상된 메타 플라일 팔레트의 전부 또는 일부를 얻습니다.
getMetafile 디스크 파일에 포함 된 metafile의 metafile 핸들을 가져옵니다.
getMetafilebitsex 지정된 메타 파일을 메모리 버퍼에 복사합니다
GetMiterLimit 장치 장면의 경사장 (Miter) 설정을 가져옵니다.
getNearestColor는 장치의 디스플레이 기능에 따라 지정된 색상에 가장 가까운 단색을 얻습니다.
GetObjectapi는 지정된 객체를 설명하는 구조를 얻습니다
GetObjectType 지정된 핸들에서 참조 된 GDI 객체의 유형을 결정합니다.
GetPath는 현재 경로를 정의하는 일련의 데이터를 얻습니다.
GetPixel은 지정된 장치 장면에서 픽셀의 RGB 값을 얻습니다.
getPolyFillMode 지정된 장치 장면의 다각형 채우기 모드를 얻습니다.
GetRop2 지정된 장치 장면의 현재 드로잉 모드를 얻습니다.
getStockoBject가 내재 된 객체 (스톡)를 가져옵니다.
GetSyscolorBrush는 모든 표준 시스템 색상에 대한 브러시를 얻습니다
getWinMetafilebits 표준 메타 피에 대한 데이터로 버퍼를 채워서 향상된 메타 파일을 표준 Windows Metafile로 변환합니다.
인버 트렉은 각 픽셀의 값을 반전시켜 장치 장면에서 지정된 사각형을 반전시킵니다.
linedda는 지정된 라인 세그먼트의 모든 지점을 열거합니다
Lineto는 현재 펜을 사용하여 현재 위치에서 지정된 지점으로 선을 그립니다.