NSIS:实现无边框窗口的拖动

实现无边框窗口

在界面初始化函数中调用以下语句:

System::Call 'user32::SetWindowLong(i$HWNDPARENT,i${GWL_STYLE},0x9480084C)i.R0'

实现无边框窗口的拖动

步骤:
1.定义回调函数需要的信息变量;

;MSG变量必须定义并且放在最前面,否则回调函数不工作,可能是插件中需要这个消息变量,用于记录消息信息
Var MSG

2.添加使用回调函数所需的头文件;

;添加头文件所在路径,这个文件夹和.nsi文件在同一目录
!AddIncludeDir "include"
;这个头文件放在include文件夹下面
!include "WinCore.nsh"      ;回调函数用

3.添加使用回调函数所需的插件;

;添加插件所在路径,这个文件夹和.nsi文件在同一目录
!addplugindir  "plugins"

然后把WndProc.dll这个插件文件放到plugins文件夹下。
4.实现回调函数;

Function onGUICallback
  ${If} $MSG = ${WM_LBUTTONDOWN}
    SendMessage $HWNDPARENT ${WM_NCLBUTTONDOWN} ${HTCAPTION} $0
  ${EndIf}
FunctionEnd

5.在需要的地方调用回调函数;
类似:

;安装完成界面
Function installFinishPage
    nsDialogs::Create 1044
    Pop $0
    ${If} $0 == error
        Abort
    ${EndIf}
    ;背景图片-----------------------------------------
    ${NSD_CreateBitmap} 0 0 100% 100% ""
    Pop $m_currentBgImage
    ${NSD_SetImage} $m_currentBgImage $PLUGINSDIR\finishBg.bmp $m_currentBgImageHandle

    GetFunctionAddress $0 onGUICallback
    WndProc::onCallback $m_currentBgImage $0 ;处理无边框窗体移动
    nsDialogs::Show

    ${NSD_FreeImage} $m_currentBgImageHandle
FunctionEnd
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值