子dialog 随着鼠标移动了,希望父dialog同步移动,用下面方法不对,请指教

子dialog 随着鼠标移动了,希望父dialog同步移动,用下面方法不对,请指教,第1张

怎么会对呢,这个是按下鼠标左键时候产生的消息,这时候你m_pParent->SetWindowPos只是让父对话框移动了你指定的量

你可以在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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7345859.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-04
下一篇 2023-04-04

发表评论

登录后才能评论

评论列表(0条)

保存