求:鼠标拖动调整窗口大小的完美实现(100分)

  • 主题发起人 主题发起人 leyon328
  • 开始时间 开始时间
L

leyon328

Unregistered / Unconfirmed
GUEST, unregistred user!
一个窗口,用鼠标拖动来调整窗口大小,现要求在把鼠标放到右、下边框及右下角位置时才能出现调整大小的鼠标(Cursor),其他边框和位置不出现也不能调整大小。在调整大小时要按宽高比为2:3的比例进行,拖动虚框也按此比例。

1:鼠标形状只在右、下及右下角改变;
2:拖动虚框也按比例;
我估计也没多少代码,各位不放试试,如何才能完美实现。
 
procedure TForm1.FormResize(Sender: TObject);
begin
Height := (Width * 2) div 3
end;
 
伪代码,楼主可试试

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam,LPARAM lParam)
// 窗口消息处理过程
{
case : WM_SIZE:
switch(lparam)
GetWindowOrg(cxWindow, cyWindow) // 获取当前窗口大小坐标
case : WM_NCHITTEST: // 鼠标处于非显示区消息
switch(lparam)
GetMouseOrg(cxPos, cyPos) // 获取当前鼠标位置
if cxPos == cxWindow
SendMessage(hwnd, WM_PAINT, ....) 发出窗口重绘消息
if cyPos == cyWindow
SendMessage(hwnd, WM_PAINT, ...); 发出窗口重绘消息

case WM_PAINT:
RedrawWindow():

return DefWindowProc (hwnd, message, wParam, lParam)
}
 
已解决:
WM_SIZING
WM_NCHITTEST
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部