// 템플릿 ------- ByHottey2004-4-13-0 : 18 //
// 저자 웹 사이트 : http://asp.itdrp.com/hottey //
Programdelphi;
용도
창문,
메시지;
Const
helloStr = 'HelloWorld!';
{$ rdelphi.res}
// 창 메시지 처리 기능.
functionmyWinProc (hwnd : thandle; umsg : uint; wparam, lparam : 추기경) : 추기경; exp
ort; stdcall;
var
HDCA, HDCB : Thandle; // 장치 설명 테이블 핸들.
rect : trect; // 직사각형 구조.
글꼴 : Hfont;
추신 : tpaintstruct; // 도면 구조.
시작하다
결과 : = 0;
Caseumsgof
wm_paint :
시작하다
HDCA : = 시작 펜트 (HWND, PS);
setBkmode (HDCA, 투명);
setbkcolor (HDCA, getBkcolor (HDCA));
getClientRect (hwnd, rect); // 창 클라이언트 영역의 크기를 가져옵니다.
DrawText (HDCA, PCHAR (HELLOSTR), -1, rect, DT_SINGLELENORDT_CENTERORDT
_vcenter);
// 텍스트 아웃 (HDC, 100,40, helloStr, length (helloStr));
endPaint (HWND, PS);
끝;
WM_CREATE :
시작하다
hdcb : = getdc (hwnd);
font : = createfont (45,0,0,0, fw_normal, 0,0, ansi_charset, out
_default_precis, clip_default_precis,
default_quality, 34, pchar ( 'arial'));
selectObject (HDCB, 글꼴);
릴리스 (HWND, HDCB);
끝;
WM_DESTROY :
PostQuitMessage (0)
또 다른
// 기본 창 메시지 처리 기능을 사용합니다.
결과 : = defwindowproc (hwnd, umsg, wparam, lparam);
끝;
끝;
// 메인 프로그램이 시작됩니다.
var
msg : tmsg; // 메시지 구조.
Hwnd, Hinst : Thandle; // Windows Window Handle.
Winclass : Twndclassex; // Windows Window 클래스 구조.
시작하다
Hinst : = getModuleHandle (nil); // getThePrictionInstance
winclass.cbsize : = sizeof (twndclassex);
winclass.lpszclassName : = 'myWindow'; // 클래스 이름.
winclass.style:=CS_HREDRAWORCS_VREDRAWORCS_OWNDC;
winclass.hinstance : = hinst; // 프로그램의 인스턴스 핸들.
// 창 메시지 처리 기능을 설정합니다.
winclass.lpfnwndproc : =@myWinProc; // 창 프로세스.
winclass.cbclsextra : = 0; // 다음 두 도메인은 클래스 구조와 창에 사용됩니다.
창 구조는 s 내부에서 저장되었습니다
winclass.cbwndextra : = 0; // 추가 공간을 예약하십시오.
winclass.hicon : = loadicon (Hinstance, makeIntresource ( 'mainicon'));
winclass.hiconsm : = loadicon (Hinstance, makeIntresource ( 'mainicon'));
winclass.hcursor : = loadcursor (0, idc_arrow);
// getStockObject 그래픽 객체를 가져옵니다. 여기에 창 배경을 그리는 브러시를 얻는 것이 흰색 브러시를 반환합니다.
아이의 손잡이.
winclass.hbrackground : = hbrush (getStockoBject (white_brush));
winclass.lpszmenuname : = nil; // 창 클래스 메뉴를 지정합니다.
// Windows에 Window 클래스를 등록합니다.
ifregisterclassex (winclass) = 0then
시작하다
MessageBox (0, 'RegisterationError!', 'sdk/api', mb_ok);
출구;
끝;
// 창 객체를 만듭니다.
hwnd : = createwindowex (
ws_ex_overlappedwindow, // 확장 된 창 스타일.
winclass.lpszclassName, // 클래스 이름.
'Hellowindow', // 창 제목.
ws_overlappedwindow, // 창 스타일.
cw_usedefault, // 창의 왼쪽 상단은 화면과 관련이 있습니다.
왼쪽 상단의 초기 위치 x.
0, // .... 오른쪽 y.
cw_usedefault, // 창 너비 x.
0, // 창 높이 y.
0, // 부모 창 핸들.
0, // 창 메뉴 핸들.
Hinst, // 프로그램 인스턴스 핸들.
nil); // 매개 변수 포인터 생성.
ifhwnd <> 0then
시작하다
Showwindow (HWND, SW_SHOWNORMAL); // Show Window.
updateWindow (hwnd); // 습득 창이 새로 고침됩니다.
setWindowpos (HWND, HWND_TOP MESTE, 0,0,0,0, SWP_NOMOVE+SWP_NOSIZE);
끝
또 다른
MessageBox (0, 'WindownotCreated!', 'SDK/API', MB_OK);
// 기본 메시지 루프 프로그램.
whilegetMessage (MSG, 0,0,0)
시작하다
TranslateMessage (MSG); // 특정 키보드 메시지를 변환합니다.
DispatchMessage (MSG); // Window 프로세스로 메시지를 보냅니다.
끝;
끝.
> 실제로 Windows 프로그래밍은 프로그램을 작성하는 법을 배우는 모든 사람이 델파이를 배울 때 Windows 프로그래밍을 배우는 것이 가장 좋습니다.
위의 코드는 델파이에서 새로운 형식이 사용되는 것만 큼 빠르지 않지만이를 말할 수 있습니다.
자격을 갖춘 것들이 메시지 루프 및 다른 부분을 더 잘 이해하는 데 도움이됩니다
.
> 참고 : 위의 코드는 문자 그대로 Windows Programming ()에서 C ++ 구문에서 번역되며 테스트 후에는 아무런 문제가 없습니다.
주석에 오류가 있으면 저를 수정하십시오!^_^
2004-5-19 저자 웹 사이트의 Hottey : http://asp.itdrp.com/hottey (일상적)