//テンプレート-------- byhottey2004-4-13-0:18 //
//著者のウェブサイト:http://asp.itdrp.com/hottey //
ProgramDelphi;
用途
窓、
メッセージ;
const
HelloStr = 'HelloWorld!';
{$ rdelphi.res}
//ウィンドウメッセージ処理機能。
functionmywinproc(hwnd:thandle; umsg:uint; wparam、lparam:cardinal):cardinal; exp
ort; stdcall;
var
HDCA、HDCB:Thandle; //デバイスの説明テーブルハンドル。
rect:trect; //長方形構造。
フォント:hfont;
PS:tpaintruct; //描画構造。
始める
結果:= 0;
caseumsgof
wm_paint:
始める
hdca:= beginpaint(hwnd、ps);
setBKMode(HDCA、透過);
setBKColor(HDCA、getBKColor(HDCA));
getClientRect(hwnd、rect); //ウィンドウクライアント領域のサイズを取得します。
DrawText(HDCA、PCHAR(HelloStr)、-1、rect、dt_singlelineordt_centerordt
_vcenter);
// Textout(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、font);
releasec(hwnd、hdcb);
終わり;
wm_destroy:
ポストキットメッジ(0)
それ以外
//デフォルトのウィンドウメッセージ処理機能を使用します。
結果:= defwindowproc(hwnd、umsg、wparam、lparam);
終わり;
終わり;
//メインプログラムが開始されます。
var
MSG:TMSG; //メッセージ構造。
hwnd、hinst:thandle; // windowsウィンドウハンドル。
Winclass:Twndclassex; // Windows Windowクラス構造。
始める
Hinst:= getModuleHandle(nil); // getTheApplicationInstance
winclass.cbsize:= sizeof(twndclassex);
winclass.lpszclassname:= 'mywindow'; // class name。
winclass.style:= cs_hredraworcs_vredraworcs_owndc;
winclass.hinstance:= hinst; //プログラムのインスタンスハンドル。
//ウィンドウメッセージ処理機能を設定します。
winclass.lpfnwndproc:=@mywinproc; //ウィンドウプロセス。
winclass.cbclsextra:= 0; //次の2つのドメインがクラスの構造とウィンドウで使用されています
s内で保存されたウィンドウ構造
winclass.cbwndextra:= 0; // winclassの余分なスペースを予約します。
winclass.hicon:= roadicon(hinstance、makeintresource( 'mainicon'));
winclass.hiconsm:= loadicon(hinstance、makeintresource( 'mainicon'));
winclass.hcursor:= loadcursor(0、idc_arrow);
// getStockObjectグラフィックオブジェクトを取得します。ここで、ウィンドウの背景を描くブラシを取得し、白いブラシを返します
子供のハンドル。
winclass.hbrbackground:= hbrush(getstockobject(white_brush));
winclass.lpszmenuname:= nil; //ウィンドウクラスメニューを指定します。
//ウィンドウクラスをWindowsに登録します。
ifregisterclassex(winclass)= 0then
始める
MessageBox(0、 'RegistertationError!'、 'SDK/API'、MB_OK);
出口;
終わり;
//ウィンドウオブジェクトを作成します。
hwnd:= createwindowex(
ws_ex_overlappwindow、//拡張ウィンドウスタイル。
winclass.lpszclassname、// class name。
「Hellowindow」、//ウィンドウタイトル。
ws_overlappwindow、//ウィンドウスタイル。
cw_usedefault、//ウィンドウの左上隅は画面に相対的です
左上隅の初期位置x。
0、// ....右y。
cw_usedefault、//ウィンドウ幅x。
0、//ウィンドウの高さy。
0、//親のウィンドウハンドル。
0、//ウィンドウメニューハンドル。
Hinst、//プログラムインスタンスハンドル。
nil); //パラメーターポインターを作成します。
ifhwnd <> 0then
始める
showwindow(hwnd、sw_shownormal); //ウィンドウを表示します。
UpdateWindow(hwnd); //命令ウィンドウを更新します。
setWindowpos(hwnd、hwnd_topmist、0,0,0,0、swp_nomove+swp_nosize);
終わり
それ以外
MessageBox(0、 'WindownotCreated!'、 'SDK/API'、MB_OK);
//メインメッセージループプログラム。
whilegetMessage(MSG、0,0,0)はします
始める
TransMessage(MSG); //特定のキーボードメッセージを変換します。
DispatchMessage(MSG); //ウィンドウプロセスにメッセージを送信します。
終わり;
終わり。
> Windowsプログラミングは、プログラムを書くことを学ぶすべての人が習得しなければならないものです。
上記のコードは、デルファイで使用されているnew->フォームほど高速ではありませんが、これを伝えることができます
資格のあるものは、メッセージループなどをよりよく理解するのに役立ちます
。
>注:上記のコードは、文字通りWindowsプログラミング()からC ++構文から翻訳されており、テスト後に問題はありません。
注釈にエラーがある場合は、私を修正してください!^_^
Hottey on 2004-5-19著者のウェブサイト:http://asp.itdrp.com/hottey(ルーチン)