你可以在OnLButtonDown中记录下按下时候的鼠标位置,然后在OnLButtonUp中根据鼠标移动的偏移量去移动父对话框
procedure CreateToolTips(hWnd: Cardinal)begin
hToolTip := CreateWindowEx(0, 'Tooltips_Class32', nil,
TTS_ALWAYSTIP or TTS_BALLOON,
Integer(CW_USEDEFAULT),
Integer(CW_USEDEFAULT),
Integer(CW_USEDEFAULT),
Integer(CW_USEDEFAULT),
hWnd, 0, hInstance, nil)
'以上为调用CreateWindowEx创建一个气泡窗口(气泡的类名就是Tooltips_Class32)。关于这个函数更详细的信息你可以搜索“MSDN CreateWindowEx”
if hToolTip <>0 then
begin
'如果创建成功了
SetWindowPos(hToolTip, HWND_TOPMOST, 0, 0, 0, 0,
SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE)
'将它设置为置顶的窗口
'ti为ToolInfo结构,用于专门处理气泡提示
'以下为初始化这个结构。气泡虽然窗口已创建但是什么都没设置 故要下面语句
ti.cbSize := SizeOf(TToolInfo)
'cbSize用于描述这个结构体大小多少 这个是固定的
ti.uFlags := TTF_SUBCLASS
ti.hInst := hInstance
end
end
'这个过程用于建立一个气泡提示
procedure AddToolTip(hwnd: dwordlpti: PToolInfoIconType: IntegerText, Title: PcharBackColor,TextColor:TColor)
var
Item: THandle
Rect: TRect
begin
Item := hWnd
if (Item <>0) and (GetClientRect(Item, Rect)) then
begin
lpti.hwnd := Item
lpti.Rect := Rect
lpti.lpszText := Text
SendMessage(hToolTip, TTM_ADDTOOL, 0, Integer(lpti))
'向一个控件增加Tooltip
FillChar(buffer, SizeOf(buffer), #0)
'缓冲区清空
lstrcpy(buffer, Title)
'复制标题到缓冲区
if (IconType >3) or (IconType <0) then IconType := 0
'如果IconType(气泡提示中的图标)是无效的则设置为0(无图标)
'IconType是为最后一句话做准备的。
if BackColor<>0 then
'如果指定了背景色 则下面语句用于设置气泡的背景颜色
SendMessage(hToolTip, TTM_SETTIPBKCOLOR, BackColor, 0)
if TextColor<>0 then
'类似地 指定了前景色则设置前景色
SendMessage(hToolTip, TTM_SETTIPTEXTCOLOR, TextColor, 0)
'这一句用于真正设定气泡的标题还有气泡的图标
SendMessage(hToolTip, TTM_SETTITLE, IconType, Integer(@buffer))
end
end
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)