扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:潇潇 来源:天极网 2007年10月31日
关键字:
//用面向对象的方法来编写 program TMyWindowClass; uses Windows, Messages, SysUtils; //创建窗口类 type TMyWindow = class ( TObject ) private { 定义私有变量 } WindowClass : WndClass; hWindow : HWnd ; AMessage : TMsg ; FAppName : String ; FWndProc : TFNWndProc ; function WinRegister : Boolean ; virtual ; procedure CreateMyWindow ; public {定义公有变量 } constructor Create ; destructor Destroy ; override ; procedure WinCreate ; virtual ; procedure Run ; {定义属性 } property ApplicationName : String read FAppName write FAppName ; property WindowProcedure : TFNWndProc read FWndProc write FWndProc ; end ; const AppName = ' MyClassshili ' ; var myWindow : tMyWindow ; { TMyWindow类中公有函数的实现 } constructor TMyWindow . Create ; begin end ; destructor TMyWindow . Destroy ; begin inherited ; end ; procedure TMyWindow . CreateMyWindow ; //创建窗口 begin hWindow : = CreateWindow ( AppName , ' hello , world ' ,ws_OverlappedWindow , cw_UseDefault , cw_UseDefault , cw_UseDefault , cw_UseDefault , 0 , 0 , system . MainInstance , nil ) ; if hWindow <> 0 then begin ShowWindow ( hWindow , CmdShow ) ; ShowWindow ( hWindow , SW_SHOW ) ; UpdateWindow ( hWindow ) ; end ; end ; procedure TMyWindow . WinCreate ; begin if WinRegister then begin CreateMyWindow ; end ; end ; function TMyWindow . WinRegister : Boolean ; //注册窗口类 begin WindowClass.Style : = cs_hRedraw or cs_vRedraw ; WindowClass . lpfnWndProc : = FWndProc ; WindowClass . cbClsExtra : = 0 ; WindowClass . cbWndExtra : = 0 ; WindowClass . hInstance : = system.MainInstance ; WindowClass . hIcon : = LoadIcon ( 0 , idi_Application ) ; WindowClass . hCursor : = LoadCursor ( 0 , idc_Arrow ) ; WindowClass . hbrBackground : = GetStockObject ( WHITE_BRUSH ) ; WindowClass . lpszMenuName : = nil ; WindowClass . lpszClassName : = PChar ( FAppName ) ; Result : = RegisterClass ( WindowClass ) <> 0 ; end ; function WindowProc ( Window : HWnd ; Amessage : UINT ; WParam : WPARAM ; LParam : LPARAM ) : LRESULT ; stdcall ; export ; //消息处理函数 var dc : hdc ; ps : TPaintStruct ; r : TRect ; begin WindowProc : = 0 ; case AMessage of WM_PAINT : begin dc : = BeginPaint ( Window , ps ) ; GetClientRect ( Window , r ) ; DrawText ( dc , ' hello , world ! ! ' , -1 , r , DT_SINGLELINE or DT_CENTER or DT_VCENTER ) ; EndPaint ( Window , ps ) ; Exit ; end ; wm_Destroy : begin PostQuitMessage ( 0 ) ; Exit ; end ; end ; WindowProc : = DefWindowProc ( Window , AMessage , WParam , LParam ) ; end ; procedure TMyWindow . MyRun ; begin while GetMessage ( AMessage , 0 , 0 , 0 ) do begin TranslateMessage ( AMessage ) ; DispatchMessage ( AMessage ) ; end ; Halt ( AMessage . wParam ) ; end ; //主程序,程序运行的进入口 begin myWindow : = TMyWindow . Create ; myWindow . ApplicationName : = AppName ; myWindow . WindowProcedure : = TFNWndProc ( @WindowProc ) ; myWindow . WinCreate ; try myWindow . MyRun ; finally FreeAndNil ( myWindow ) ; end ; end . |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者