Я учусь добавлять GUI в мою программу на Perl, используя Win32 :: GUI . Теперь я могу изменить значок строки заголовка 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, который может облегчить задачу?
Спасибо за любые советы:)
**** ***** Update1 1014 *
Могу ли я сначала сделать так, чтобы строка заголовка исчезла, а затем добавить метку там, где была оригинальная строка заголовка, а затем добавить некоторые другие кнопки, чтобы свернуть и закрыть объект?
Теперь проблема в том, как я могу переместить объект Window, когда моя мышь находится на метке?
**** ***** UPDATE2 1020 *
Я нашел несколько фрагментов кода 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