我正在学习使用Win32::GUI将 GUI 添加到我的 Perl 程序中。现在我可以使用类似的方式更改 Win32 标题栏的图标:
$myicon = new Win32::GUI::Icon('myicon.ico');
$myclass=new Win32::GUI::Class(
-name=>'myclass',
-icon=>$myicon,
);
$mydialogbox = new Win32::GUI::DialogBox(
-name => 'mydialogbox',
-class => $myclass,
);
但是其他的东西,比如背景颜色,最小化按钮的外观和感觉呢?
我用谷歌搜索了这个主题,发现了几篇可能相关的文章。他们谈论诸如非客户区绘画等之类的东西,但代码片段似乎都是用 C 编写的,我不太熟悉。
我想知道这里是否有人可以分享一些用 Perl 编写的处理类似情况的代码片段?或者,是否有一个 Perl 模块可以促进这项任务?
感谢您的任何指导:)
****更新1****
我可以先让标题栏消失,然后在原始标题栏所在的位置添加一个标签,然后添加一些其他按钮来最小化和关闭对象吗?
现在的问题是:当鼠标在标签上时,如何移动 Window 对象?
****更新2****
我找到了一些 VB 代码片段,它们应该可以完成我想在 Perl 中完成的工作。有人可以帮我在 Win32::GUI 中重写它们吗?以下 VB 代码来自这里:
Option Explicit
' API functions
Private Declare Function ReleaseCapture Lib "user32" () As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long
' Constants for above API calls
Private Const HTCAPTION = 2
Private Const WM_NCLBUTTONDOWN = &HA1
Private Sub Form_Load()
Dim retVal As Long
retVal = SetWindowText(Me.hwnd, Label1)
End Sub
Private Sub Label1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
ReleaseCapture
SendMessage hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&
End Sub