2015ztlucky

导航

C++Builder设置完BorderStyle的值为none,以后如何实现窗口的移动和拉伸

在.h 文件中声明变量private: void __fastcall WndProc(TMessage &Msg);// User declarations

在.cpp中实现下面的函数

void __fastcall TForm1::WndProc(Messages::TMessage& Message) {
TForm::WndProc(Message); // Inherited implementation
if (Message.Msg == WM_NCHITTEST) {
TWMNCHitTest& oMsg = reinterpret_cast<TWMNCHitTest&>(Message);
TPoint oPoint(oMsg.XPos, oMsg.YPos); // Screen coordinates
oPoint = ScreenToClient(oPoint); // Now in form-local coordinates
// It's in the title bar (caption) if it's in a rectangle at the top of the form
if ((oPoint.x > 0 && oPoint.x < ClientWidth-300) &&
(oPoint.y >0 && oPoint.y < 100))
{
oMsg.Result = HTCAPTION;
} else{
// 分解当前鼠标的坐标
int nPosX = LOWORD(Message.LParam);
int nPosY = HIWORD(Message.LParam);
if(nPosX >= Left + Width - 2 && nPosY >= Top + Height - 2)
{
// 鼠标位置在窗体的右下角附近
Message.Result = HTBOTTOMRIGHT;
return;
}
else if(nPosX >= Left + Width -2)
{
// 鼠标位置在窗体右侧
Message. Result = HTRIGHT;
return;
}
else if(nPosY >= Top + Height - 2)
{
// 鼠标位置在窗体下方
// 本文转自 C++Builder研究 - http://www.ccrun.com/article.asp?i=990&d=70jx1b
Message.Result = HTBOTTOM;
return;
}
}
}
}

posted on 2016-08-16 14:56  2015ztlucky  阅读(225)  评论(0编辑  收藏  举报