Win32::GUIを使用してPerlプログラムに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 ****
最初にタイトルバーを非表示にしてから、元のタイトルバーがあった場所にラベルを追加してから、他のボタンを追加してオブジェクトを最小化して閉じることはできますか?
ここで問題となるのは、マウスがラベル上にあるときにWindowオブジェクトを移動するにはどうすればよいですか?
**** UPDATE2 ****
Perlで達成したい仕事をすることになっているVBコードスニペットをいくつか見つけました。誰かが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