无边框窗体,用鼠标改变大小,在VC下如何实现,delphi下很简单就实现了?

microchu 2005-09-28 10:44:28
给出Delhpi代码如下:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;

type
TForm1 = class(TForm)
procedure WmNcHitTest(var msg:TWmNcHitTest);message wm_NcHitTest;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.WmNcHitTest(var msg:TWmNcHitTest);

var

pt:tpoint;

begin

pt:=point(msg.xpos,msg.ypos);
pt:=ScreentoClient(pt);
if (pt.x>width-5) then
msg.Result:=htright
else
inherited;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
BorderStyle := bsNone;
end;

end.
求教高人,为什么在vc下ONHitTest函数下写类似功能的代码无效?
在VC下这样的功能又如何实现呢?
...全文
197 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
microchu 2005-09-28
  • 打赏
  • 举报
回复
LRESULT CScrollTextDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: 在此添加专用代码和/或调用基类
if (message == WM_NCHITTEST)
{
POINT pt;
pt.x = LOWORD(lParam);
pt.y = HIWORD(lParam);

ScreenToClient(& pt);
RECT rect;
GetClientRect(& rect);

if(rect.right /2 < pt.x)
{
return HTRIGHT;
}
else
{
return HTLEFT;
}
}
else
return CDialog::WindowProc(message, wParam, lParam);
}
这个是VC 下的代码,虽然鼠标的样子变了,但是不能拉动改变窗体大小
lovendII 2005-09-28
  • 打赏
  • 举报
回复
到vc版去问嘛
lextm 2005-09-28
  • 打赏
  • 举报
回复
不知道你在VC下面的代码如何。感觉VCL和MFC都是基于Win32 API的封装,应该是差不多的。

5,928

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧