DrawFrameControl함수는 인수로 지정한 다양한 형태의 Control을 그려 표시합니다.
Declare Function DrawFrameControl Lib "user32" Alias "DrawFrameControl" (ByVal hDC As Integer, ByRef lpRect As RECT, ByVal un1 As Integer, ByVal un2 As Integer) As Integer
- VB.NET 선언
[DllImport("user32")]
public static extern int DrawFrameControl(int hDC, ref RECT lpRect, int nu1, int un2);
- C# 선언
DrawFrameControl함수의 첫번째 인수로는 Control을 표시할 Device Context를 기술해야 합니다.
[Windows API for .NET] - GetWindowDC - 현재 Windows화면의 Device Context 구하기
[Windows API for .NET] - GetDC - Window및 Control의 Device Context 구하기
두번째 인수는 Control을 그릴 위치및 크기에 대한 구조체를 기술합니다. 이 구조체는 예를 들어 왼쪽 10부터 가로 10, 상단 10부터 세로 10만큼의 위치와 크기로 Control을 생성하고자 한다면 다음과 같이 선언될 수 있습니다.
Public Structure RECT
Public left As Integer
Public top As Integer
Public right As Integer
Public bottom As Integer
End Structure
Dim norRECT As RECT
norRECT.left = 10
norRECT.top = 10
norRECT.right = 50
norRECT.bottom = 50
- VB.NET
public struct RECT
{
public int left;
public int top;
public int right;
public int bottom;
}
RECT norRECT = default(RECT);
norRECT.left = 10;
norRECT.top = 10;
norRECT.right = 50;
norRECT.bottom = 50;
- C#
DrawFrameControl함수의 세번째 인수 어떠한 Control모양을 그려낼 것인지 지정하는 것이며 다음과 같은 상수가 사용됩니다.
상수 | 값 | 설명 |
DFC_CAPTION | 1 | Titlebar 관련 |
DFC_MENU | 2 | Menu 관련 |
DFC_SCROLL | 3 | Scrollbar 관련 |
DFC_BUTTON | 4 | Button 관련 |
네번째 인수는 세번째 인수로 무엇을 지정했는지에 따라 달라집니다.
상수 | 값 | 설명 |
DFCS_CAPTIONCLOSE | 0 | 닫기 모양 |
DFCS_CAPTIONMAX | 2 | 최대화 모양 |
DFCS_CAPTIONMIN | 1 | 최소화 모양 |
DFCS_CAPTIONRESTORE | 3 | 원상태복귀 모양 |
DFCS_CAPTIONHELP | 4 | 도움말 모양 |
DFC_CAPTION(1) - 16진수(VB.NET : &H, C# : 0x)
상수 | 값 | 설명 |
DFCS_MENUARROW | 0 | Sub menu 지시모양 |
DFCS_MENUCHECK | 1 | 선택 Check 표시 |
DFCS_MENUBULLET | 2 | 원형 분류 표시 |
DFCS_MENUARROWRIGHT | 4 | Sub menu(아랍계) |
DFC_MENU(2) - 16진수(VB.NET : &H, C# : 0x)
상수 | 값 | 설명 |
DFCS_SCROLLUP | 0 | Scrollbar의 위쪽이동 화살표 |
DFCS_SCROLLDOWN | 1 | Scrollbar의 아래쪽 화살표 |
DFCS_SCROLLLEFT | 2 | Scrollbar의 왼쪽 화살표 |
DFCS_SCROLLRIGHT | 3 | Scrollbar의 오른쪽 화살표 |
DFC_SCROLL(3) - 16진수(VB.NET : &H, C# : 0x)
상수 | 값 | 설명 |
DFCS_BUTTONCHECK | 0 | Check Box |
DFCS_BUTTONRADIOIMAGE | 1 | Radio Button Image |
DFCS_BUTTONRADIOMASK | 2 | Radio Button Check Image |
DFCS_BUTTONRADIO | 4 | Radio Button |
DFCS_BUTTON3STATE | 8 | 상태 Button |
DFCS_BUTTONPUSH | 10 | Push Button |
DFC_BUTTON(4) - 16진수(VB.NET : &H, C# : 0x) 다음 인수는 네번째 인수에 결합될 수 있는 상수입니다.
상수 | 값 | 설명 |
DFCS_ADJUSTRECT | 2000 | 빈 영역 |
DFCS_CHECKED | 400 | 선택된 상태 |
DFCS_FLAT | 4000 | 평면모양 |
DFCS_HOT | 1000 | Hot Track형 |
DFCS_INACTIVE | 100 | 사용불가능 상태 |
DFCS_MONO | 8000 | 1차원단색면 표시 |
DFCS_PUSHED | 200 | 눌러진 상태 |
DFCS_TRANSPARENT | 800 | 바탕화면 미선택 상태 |
DFC_BUTTON(4) - 16진수(VB.NET : &H, C# : 0x) 위 인수를 토대로 Program의 Form에 구조체의 위치와 크기에 따른 Radio Button을 생성해 보려면 DrawFrameControl함수는 다음과 같이 호출될 수 있습니다.
DrawFrameControl(GetDC(Me.Handle), norRECT, 4, &H0)
- VB.NET 호출
DrawFrameControl(GetDC((int)this.Handle), ref norRECT, 0x4, 0x0);
- C# 호출
DrawFrameControl 함수는 실행에 실패하는 경우 0값을 반환합니다.
'.NET > Windows API for .NET' 카테고리의 다른 글
DrawText - 화면에 Text문자열 출력 (0) | 2019.07.31 |
---|---|
DestroyCursor - Cursor의 제거 (0) | 2019.07.31 |
GetWindowDC - 현재 Windows화면의 Device Context 구하기 (0) | 2019.07.31 |
GetDesktopWindow - 현재 Windows 화면의 Handle구하기 (0) | 2019.07.31 |
GetDC - Window및 Control의 Device Context 구하기 (0) | 2019.07.31 |