Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


61492 / 76738 ←次へ | 前へ→

【19864】Re:背景の透明化(?)
回答  ちん  - 04/11/18(木) 9:46 -

引用なし
パスワード
   ▼ケン坊 さん:
>はじめまして。2つほど聞きたいことがあるのですが、
>
>サイクロトロンというソフトを見たのですが、
>あれはユーザーフォームの形を変えたり透過したりしているのですが
>あれはどのようにしたら、できるのですか????
>
>もう一つの質問は、PSET(x,y)というのを知ったのですが、
>何故か実行できませんでした。
>ちなみに線を引く、LINEというのも実行できませんでした・・・
>
>アドバイスお願いします!!
おはようございます。ちんといいます。
透過についてですが、丸くフォームを切り抜く関数と、四角くフォームを切り抜く
関数を掲載します。

(1)標準モジュールへの定義
Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Declare Function CreateRoundRectRgn Lib "gdi32" ( _
    ByVal X1 As Long, ByVal Y1 As Long, _
    ByVal X2 As Long, ByVal Y2 As Long, _
    ByVal X3 As Long, ByVal Y3 As Long) As Long

Private hRgn  As Long
Declare Function GetActiveWindow Lib "user32" () As Long
Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long

Public Function xGetActiveWindow() As Long
  xGetActiveWindow = GetActiveWindow
End Function

(2)ユーザーフォームの定義
 ユーザーフォームにボタンを2つ配置して下さい。
Private Sub CommandButton1_Click()
  Dim hwnd As Long
  hwnd = xGetActiveWindow
  hRgn = CreateRectRgn(0, 0, 300, 300)  '*** 四角形の大きさ
  
  SetWindowRgn hwnd, hRgn, True
End Sub

Private Sub CommandButton2_Click()
  Dim hwnd As Long
  hwnd = xGetActiveWindow

  hRgn = CreateRoundRectRgn(0, 0, _
          300, _
          300, _
          320, 320)       '*** 円形の大きさ
          
  
  SetWindowRgn hwnd, hRgn, True

End Sub

以上、参考までに・・・

1 hits

【19764】背景の透明化(?) ケン坊 04/11/16(火) 16:26 質問
【19768】Re:背景の透明化(?) 角田 04/11/16(火) 16:39 発言
【19842】Re:背景の透明化(?) ni 04/11/17(水) 19:03 発言
【19864】Re:背景の透明化(?) ちん 04/11/18(木) 9:46 回答
【19969】Re:背景の透明化(?) ケン坊 04/11/21(日) 0:57 質問
【19993】Re:背景の透明化(?) ちん 04/11/22(月) 18:06 回答

61492 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free