博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Delphi7 API之 MDI窗口创建
阅读量:4614 次
发布时间:2019-06-09

本文共 3926 字,大约阅读时间需要 13 分钟。

继续上节,我们还是用工程文件创建一个MDI窗口。代码如下:

program MDIApp;uses  Windows,  Messages;var  TheMessage:TMsg;  FrameWindow,ClientWindow,ChildWindow:HWND;const  IDCHILDWND = 100;   //第一个MDI子窗口ID{
$R *.RES}//回调函数function FrameWindowProc(TheFrameWindow:HWND;TheMessage,WParam,LParam:LongInt):LongInt;stdcall;var ClientStruct:TClientCreateStruct;begin case TheMessage of WM_CREATE: begin ClientStruct.hWindowMenu:=0; ClientStruct.idFirstChild:=IDCHILDWND; ClientWindow := CreateWindowEx(0, 'MDICLIENT', nil, WS_CHILD or WS_CLIPCHILDREN or WS_VISIBLE, 0, 0, 0, 0, TheFrameWindow, 0, HInstance, @ClientStruct); if ClientWindow = 0 then begin MessageBox(0,'createwindow faild',nil,MB_OK); Exit; end; end; WM_DESTROY: begin PostQuitMessage(0); Exit; end; end; Result := DefFrameProc(TheFrameWindow,ClientWindow,TheMessage,WParam,LParam);end;//注册主窗口function RegisterFrameClass:Boolean;var WindowClass:TWndClass;begin WindowClass.style:=CS_HREDRAW or CS_VREDRAW; WindowClass.lpfnWndProc:=@FrameWindowProc; WindowClass.cbClsExtra := 0; WindowClass.cbWndExtra := 0; WindowClass.hInstance := HInstance; WindowClass.hIcon := LoadIcon(0,IDI_WINLOGO); WindowClass.hCursor:= LoadCursor(0,IDC_ARROW); WindowClass.hbrBackground:= COLOR_WINDOW; WindowClass.lpszMenuName:= nil; WindowClass.lpszClassName:= 'FrameClass'; Result := windows.RegisterClass(WindowClass)<>0;end;//注册子窗口function RegisterChildClass: Boolean;var WindowClass:TWndClass;begin WindowClass.style := CS_HREDRAW or CS_VREDRAW; WindowClass.lpfnWndProc:= @DefMDICHildProc; WindowClass.cbClsExtra := 0; WindowClass.cbWndExtra := 0; WindowClass.hInstance := HInstance; WindowClass.hIcon := LoadIcon(0,IDI_APPLICATION); WindowClass.hCursor := LoadCursor(0,IDC_ARROW); WindowClass.hbrBackground := COLOR_WINDOW; WindowClass.lpszMenuName := nil; WindowClass.lpszClassName := 'ChildClass'; Result := windows.RegisterClass(WindowClass)<>0;end;//开始主程序begin if not RegisterFrameClass then begin MessageBox(0,'RegisterFrameClass faild',nil,MB_OK); Exit; end; FrameWindow := CreateWindowEx(0, 'FrameClass', 'Frame Window', WS_OVERLAPPEDWINDOW or WS_CLIPCHILDREN, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, 0, 0, HInstance, nil); if FrameWindow <> 0 then begin ShowWindow(FrameWindow,SW_SHOWNORMAL); UpdateWindow(FrameWindow); end else begin MessageBox(0,'CreateFrameWindow failed',nil,MB_OK); Exit; end; if not RegisterChildClass then begin MessageBox(0,'RegisterChildClass failed',nil,MB_OK); Exit; end; ChildWindow:= CreateMDIWindow('ChildClass', 'Child Window', WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, ClientWindow, HInstance, 0); if ChildWindow <> 0 then begin ShowWindow(ChildWindow,SW_SHOWNORMAL); UpdateWindow(ChildWindow); end else begin MessageBox(0,'CreateChildWindow falid',nil,MB_OK); Exit; end; while GetMessage(TheMessage,0,0,0) do begin TranslateMessage(TheMessage); DispatchMessage(TheMessage); end;end.

效果如下:

 

转载于:https://www.cnblogs.com/delphi2014/p/4064804.html

你可能感兴趣的文章
Chapter 4 Syntax Analysis
查看>>
Java3D实例应用-载入3ds 模型
查看>>
872. Leaf-Similar Trees
查看>>
PHPer未来路在何方...
查看>>
【转帖】浅析和介绍如何在delphi中定位要分析的函数
查看>>
二年级四则运算扩展
查看>>
lnmp编译安装
查看>>
版本控制:git
查看>>
4寸大屏智能手机超值购,更有千元话费等你拿
查看>>
windows配置Scrapy爬虫框架
查看>>
python - 代码缩进
查看>>
maven06-----maven生命周期和插件
查看>>
Java并发编程:并发容器之ConcurrentHashMap
查看>>
Linux中配置别名
查看>>
UIViewCotroller 的生命周期函数
查看>>
【安卓进阶】Scroller理解与应用
查看>>
iOS设备通知中心精品推荐消息删除
查看>>
Table排序
查看>>
K先生的博客
查看>>
intellij idea
查看>>