转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
在delphi中,如何把MDI工作区的粗边框去掉         ★★★★

在delphi中,如何把MDI工作区的粗边框去掉

作者:闵涛 文章来源:闵涛的学习笔记 点击数:940 更新时间:2009/4/23 18:26:31

最近在考虑MIS系统界面的整体框架,决定使用MDI Form+模块中的MDI Child,但是MDI form的工作区总有讨厌的粗边。

昨天下午从网上查到C++版本的解决方法,就花了点时间翻译成delphi的,呵呵,供大家参考。

在MDI Form中写入如下代码:

interface

TFmMain = class(TForm)

...
    procedure FormCreate(Sender: TObject);

...

private

...
    procedure CreateDefWndProc();
    PROCEDURE ClientWndProc(VAR Message: TMessage);

end;

implementation

...

procedure TFmMain.CreateDefWndProc;
var
  hWnd1 : HWND;
  ccs : TClientCreateStruct;
begin
    ccs.hWindowMenu := 0;
    ccs.idFirstChild := $FF00;
    hWnd1 := CreateWindowEx(WS_EX_CLIENTEDGE,
        ''''MDICLIENT'''', '''''''', WS_CHILD or WS_VISIBLE or WS_GROUP or
        WS_TABSTOP or WS_CLIPCHILDREN or WS_HSCROLL or WS_VSCROLL or
        WS_CLIPSIBLINGS or MDIS_ALLCHILDSTYLES, 0, 0, ClientWidth,
        ClientHeight, Handle, 0, HInstance, @ccs);
    FClientInstance := pointer(GetWindowLong(hWnd1,GWL_WNDPROC));
    DestroyWindow(hWnd1);
end;

procedure TFmMain.ClientWndProc(var Message: TMessage);
//VAR
//  MyDC : hDC;
begin
  if (Message.Msg = WM_ERASEBKGND)  then
  begin
    //这儿模拟VCL的源程序用主窗口的背景色填充客户区,
    //你也可以在客户区画一个图形。
    FillRect(HDC(Message.WParam), ClientRect,Brush.Handle);
  //  MyDC := TWMEraseBkGnd(Message).DC;
    //BitBlt(MyDC, (ClientWidth - imBack.Picture.Width)div 2,
     //  (ClientHeight - imBack.Picture.Height) div 2,
     // imBack.Picture.Width, imBack.Picture.Height,
    //  imBack.Picture.Bitmap.Canvas.Handle, 0, 0, SRCCOPY);

    Message.Result := 1;
  end
  else
      Message.Result := CallWindowProc(FClientInstance, ClientHandle,
          Message.Msg, Message.WParam, Message.LParam); 
end;

       
procedure TFmMain.FormCreate(Sender: TObject);
begin
//*******去除MDIchild粗边框**********
  CreateDefWndProc();
  SetWindowLong(ClientHandle, GWL_WNDPROC,
      LongInt(MakeObjectInstance(ClientWndProc)));
  SetWindowLong(ClientHandle,GWL_EXSTYLE,GetWindowLong(
      ClientHandle,GWL_EXSTYLE) and (not WS_EX_CLIENTEDGE));
  SetWindowPos(ClientHandle,0,0,0,0,0,SWP_FRAMECHANGED
      or SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE or SWP_NOZORDER);
//***********************************
end;


[VB.NET程序]vb.net 中MDI子窗体对其父窗体属性的获取与修改  [VB.NET程序][VB.NET]浅谈MDI窗体的多窗体编程2
[VB.NET程序]vb.net 防止MDI子窗体被多次实例化的四种方法  [VB.NET程序][初学VB.NET]如何防止重复打开MDI子窗体
[Delphi程序]Delpi在MDI窗口中显示图形控件及指定背景的解决方…  [Web开发][ASP.NET]如何把Popup特性从宝玉的论坛代码中拆分…
[Access]如何把access转换到mysql  
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台