• ベストアンサー

VBでデスクトップアクセサリを作りたい

TAGOSAKU7の回答

  • ベストアンサー
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.4

田吾作7です。 とりあえず、ぼくもいろいろやってみました。いやー勉強になりました。 いちばん簡単だと思った方法をとりあえずアップしておきます。 以下のソースをフォームに貼り付けてください。 Formのプロパティで、 BorderLine=なし ScaleMode=ピクセル に設定してください。 ドラッグできるようにしてますが、ドラッグルーチンをはずしたら、ドラッグ付加になります。ついでにShowInTaskbar=Falseにしてやれば、デスクトップに書いたようになりませんか? Option Explicit Private Type POINTAPI X As Long Y As Long End Type Private Const WM_NCLBUTTONDOWN = &HA1 Private Const HTCAPTION = 2 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 ReleaseCapture Lib "user32" () As Long Private Declare Function BeginPath Lib "gdi32" (ByVal hdc As Long) As Long Private Declare Function Polygon Lib "gdi32" (ByVal hdc As Long, lpPoint As POINTAPI, ByVal nCount As Long) As Long Private Declare Function Ellipse Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long Private Declare Function EndPath Lib "gdi32" (ByVal hdc As Long) As Long Private Declare Function PathToRegion Lib "gdi32" (ByVal hdc As Long) As Long Private Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long Private Sub Form_DblClick() 'フォームをダブルクリックしたら終了 Unload Me End Sub Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) 'エスケープキーを押されたら終了 Select Case KeyCode Case vbKeyEscape Unload Me End Select End Sub Private Sub Form_Load() Dim wkWnd As Long Dim wkPoint(3) As POINTAPI Dim wkRgn As Long With Me 'パスブラケットを開く Call BeginPath(.hdc) '三角形の描画 wkPoint(0).X = 100 wkPoint(0).Y = -10 wkPoint(1).X = 100 wkPoint(1).Y = 100 wkPoint(2).X = -10 wkPoint(2).Y = 100 Call Polygon(.hdc, wkPoint(0), 3) '楕円の描画 Call Ellipse(.hdc, 0, 0, .ScaleWidth, .ScaleHeight) 'パスブラケットを閉じる Call EndPath(.hdc) 'リージョンの作成 wkRgn = PathToRegion(.hdc) 'リージョンをウィンドウにセット Call SetWindowRgn(.hwnd, wkRgn, 1) End With End Sub Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) 'フォームのドラッグ Call SbDragStart(Me) End Sub 'ドラッグルーチン Public Sub SbDragStart(Frm As Form) 'フォームのドラッグルーチン ReleaseCapture Call SendMessage(Frm.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&) End Sub 実験方法としてはPolygonとEllipseによってリージョンを作成する座標が決定してますので、どちらかをコメントすると、よりそれぞれの機能を勉強することが出来ると思います。 でわでわ

noname#3887
質問者

お礼

親切に教えて下さって、どうもありがとうございました!!(^^) これから自分でもAPIについて勉強していこうと思います。

関連するQ&A

  • デスクトップでのアイコン

    デスクトップ画面上の壁紙の絵を損なわないようにするために、アイコンの下に表示される説明文字を囲む枠を透明にしたい。(壁紙の絵が枠で隠れないようにしたい) 方法があれば、教えて頂きたい。

  • 余白のあるgifを透明にするには(フリーソフトを探しています)

    お世話になっております。 よろしくお願いします。 四角のgifファイルの中に、星の絵があります。 余白の部分は白くなっています。 このgifファイルを、背景色が設定されているHPに表示すると余白の部分が白くなってしまいます。 この余白を透明にしたいと思っています。 OSに付属している、アクセサリ-ペイントでなんとかできないでしょうか? もしくは、何か良いフリーソフトはないでしょうか? 良い知恵を教えていただければと思います。 よろしくお願いします。

  • デスクトップの表示がおかしい

    この前から急にデスクトップがおかしくなりました。 今までは壁紙専用HPからダウンロードしたものを壁紙として使用していたのですが、パソコンを起動すると一瞬その壁紙が表示されたのち画面がパッと切り替わり、左上に「デスクトップ」という文字の出る白い画面(左上は水色)の画面になってしまうのです(アイコン等ほかの表示はそのままです。壁紙だけです)。 「プロパティ→アクティブデスクトップ→Webページで表示」を2回押すと元に戻ります。しかし毎度の事なので少々面倒なのです。 さらに、その状態の時にインターネットをすると、終わってブラウザを閉じた時に、ブラウザの画面表示の一部(デスクトップ一面のうちアイコンが並んでいない箇所にあたる部分すべて)が消えずに残ります。何をしても消えません。別に致命傷ではないのですが、どんどん画面が残ってしまって鬱陶しいのです。 これは何か設定に触ってしまったのでしょうか? それとも故障か何かでしょうか?(古い機種なので……。) わかりづらい文章ですみません。パソコンに疎いので解決策がわからず困っております。何か対策をご存知の方がいらしたら教えて下さい。よろしくお願いします。

  • デスクトップがおかしいです・・・

    windows起動時に表示される壁紙が出てきません。かわりに画面左上デスクトップと書かれた壁紙が表示されます。壁紙を設定し直しても表示されません。また、画面左3分の一程度はほかのプログラムやフォルダ表示を消せば、きれいに消えるのですが、残りの部分には消えずに残ってしまいます。 どうしたらこの状態を解決できますか?教えてください。 つかっているPCはFMV DESKPOWER ME4/535Pです。 OSはwindows98です

  • 「素材」をデスクトップに表示できますか?

    こんにちは。 お聞きしたいことがあります。 「素材」というものがありますよね。 クリスマスのツリーの素材を様々なHPでみかけて、 かわいいので手に入れたいのです。 そしてこの素材をデスクトップに表示させたいのですが、できますか?壁紙としてならできそうですが、 今の壁紙を変えないで、さらにデスクトップに 表示させたいのです。 よろしくお願いいたします。

  • デスクトップ内 壁紙変更出来ない!

    題名の通り、デスクトップで ある絵をネットから取り入れて それを、壁紙にして、次に、別の画像に変えようとしても、 以前の壁紙がそのままで、焼きつき?とでも言うのでしょうか? そのまま表示され、その周りに新しく壁紙にする画像が取り囲んでいる 状態であります。何回か、壁紙を変えてはみたものの、結局、その画像は、いまだかつて、デスクトップに表示されていまして、 この解除方法などあれば アドバイスをお願い致します。

  • デスクトップ項目として設定

    壁紙を設定したくて好きな絵の上で右クリックをしました。 「デスクトップ項目として設定」を選んでOKをしてしまいました。 すると画面の右端に一部分だけ絵がでてきてしまいました。 元に戻すにはどのようにしたらいいのでしょうか?

  • デスクトップの表示(WINDOWS XP)

    (1) デスクトップの壁紙を表示(選択)するとき、中央に表示する選択で設定したとき、そのサイズを変更することはできますでしょうか?デフォルトの位置よりも上下、左右とも一回り小さくして、回りの余白部分の面積を大きくすることが可能であればその方法を教えてください。(自分で撮影したデジカメ画像での取り込みではなく、WINDOWSに最初から入っている画像、たとえば、チューリップとか、草原などの中央表示の際のサイズを変更できるか?という質問です) (2) もう一つは、Dドライブなどに保存していたデジカメ画像などのファイルを、デスクトップの設定画面の参照から取り込んで壁紙として使用していたのですが、この壁紙用ファイルが不要になりました。 壁紙のリストからこのデジカメ画像のファイルを削除する方法をご存知でしたら、おしえてください。 選んだファイル名を右クリックしてもヘルプとしか出てこず、選択してデリートキーをおしても無反応です。 どうぞよろしくおねがいします。 

  • デスクトップの壁紙とアイコンについて

    デスクトップの壁紙を変えた後マイコンピューターのアイコンを消しました。 その後スタート→マイコンピュータを右クリック→デスクトップに表示と操作をしたらデスクトップの背景が真っ黒になり壁紙が消えてしまいました。 その後デスクトップで右クリック→アイコンの整列→デスクトップのWeb項目の固定にチェックを入れた所壁紙が表示されました。 しかし、アイコンの文字の部分とアイコンの隅っこが黒く表示されてしまいます。 下の画像では画面のプロパティから色を黒から白へ変えたため白になっています。 質問したいことは 1、文字の部分と隅っこが黒くなってるアイコンの表示を戻す方法 2、背景が消えた理由 この2つです。 よろしくお願いします。

  • ホームページビルダーでの壁紙設定

    ビルダー13を使っている初心者です。サンプルテンプレートを使いページを作成しましたが、その周りの余白部分に任意の壁紙設定をしたいのです。が、余白部分は白色になっていて、いくら壁紙の設定をしてもその壁紙の色になりません。白のままです。ウインドウ表示を最大化するとその余白部分の白色領域がとても目立ちます。白色部分を自分の指定の壁紙に設定するにはどうしたらよいのでしょうか?ご教示下さい。よろしくお願いします。