• ベストアンサー

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

VB6を始めたばかりの超初心者です。すごいくだらない質問かもしれませんが、教えて下さい(^^;) デスクトップアクセサリを作りたいのですが、VBで作れますか? 具体的には、例えばりんごの絵を表示したい時に、実行するとりんごの絵の部分だけ表示されて、余白の部分は表示されない(余白の部分はデスクトップの壁紙が見える)というような物を作りたい時にどうすれば良いか教えて下さい!ほんと初心者の質問ですみませんm(__;)mお願いします! それから、VBでデスクトップアクセサリを作る時に参考にするのに、何か良いHPがあれば教えて下さい。お願いします。

noname#3887
noname#3887

質問者が選んだベストアンサー

  • ベストアンサー
  • 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について勉強していこうと思います。

その他の回答 (3)

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

どもども田吾作7です。 大丈夫ですよ。僕もAPIは最初は分からなかったでしたから・・・ ハンドル、デバイスコンテキスト、LONG型でデータを受信したのになぜ文字列がその中から抽出できるの?などなど・・・奥が深いですが、逃げていてはVBの枠から抜け出せなくなります。 >画像の透過転送は、自分の絵でもやってみたんですけど、あれはPictureBoxなどオブジェクトじゃないと駄目ですよね?デスクトップに直接、というのは無理ですか? またフォームの変形は、丸とか四角とかじゃなくて自分の絵と同じ形にしたい時は、多角形という事にしてザクザクやってくんでしょうか? たぶんなのですが。。。デスクトップに直接書くってできるのかな? 方法としてはフォームに書いて、フォームをその形に切り抜く方法しか思い浮かばないのですが・・・ 僕もはじめてリージョンに今触れましたけど、リージョンを作成する方法はいろいろあります。多角形の座標を指定する方法、楕円と外接する四角形の体格する2点を指定する方法と大きく二つがありますが、その2つの方法の中でもさらに細かく別れているようです。 図というのは円・多角形だけではないですよね?そのときは円・多角形を組み合わせて使うようです。その組み合わせ方にもいろいろあるようです。 >初心者は諦めてAPIを初めから勉強した方が良いんでしょうかね? >知識不足で本当にすみませんm(T-T)m (・_・三・_・)ウウン そんな事、絶対無い!! 僕が言語を覚えたのは、本と掲示板です。 とにかくしつこく質問。(嫌われない程度に・・・) そして自分で実験。関連する項目もチェック。 それの繰り返しが大事だと思いますよ。 初心者はAPIを避けがちですが、いずれは通る道です。VBだから避けることも出来ますが、C言語でやろうとした場合は最初から通る道なのです。ちょっとVBではなかった考え方が入り込むために、ちょっと厄介ですが、APIに触れるいい機会だと思いませんか? でわでわ

noname#3887
質問者

お礼

そうですよね、いずれは通る道ですもんね!APIって聞くと少し引いてたんですけど、なんかすごくやる気っていうか勇気っていうか出てきました!良い機会だと思って頑張りたいですp(^-^)q 教えて下さる方がいるだけでホントありがたいです(^^)ありがとうございます。

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

どもども田吾作7です。 APIとか使ったことありますか?WindowsディレクトリにはいってるDLLファイルを使用する命令です。画像の透過というのは、本来のVBの機能では実現できません。これは他の言語でも一緒です。先に述べたDLLファイルをどの言語でも呼び出すことになることでしょう。ただ記述方法が多少違うだけで、ほとんど一緒です。 でわでわ

noname#3887
質問者

お礼

画像の透過転送は、自分の絵でもやってみたんですけど、PictureBoxなどオブジェクトじゃないと駄目ですよね?デスクトップに直接、というのは無理ですか? またフォームの変形は、丸とか四角とかじゃなくて自分の絵と同じ形にしたい時は、多角形という事にしてザクザクやってくんでしょうか? 初心者は諦めてAPIを初めから勉強した方が良いんでしょうかね? 知識不足で本当にすみませんm(T-T)m

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

どもども田吾作7です。 画像の一部透過、切抜きですね。 VBでも何でも出来ます。 手順としては、画像をフォームに描画し、 フォームを変形させるリージョン(Region)って機能です。 でわでわ。

noname#3887
質問者

お礼

ご解答ありがとうございます。 自宅のパソコンはインターネット接続していなくて、いつも大学の図書館のパソコンを使っているので、返事が遅くなってしまいました。大学の図書館は土日は開いているけど5時で閉館なんです。すみませんでしたm(_ _)m フォームの変形が出来るのは知っていましたが、どうやるのか全然分からなくて…。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を使っている初心者です。サンプルテンプレートを使いページを作成しましたが、その周りの余白部分に任意の壁紙設定をしたいのです。が、余白部分は白色になっていて、いくら壁紙の設定をしてもその壁紙の色になりません。白のままです。ウインドウ表示を最大化するとその余白部分の白色領域がとても目立ちます。白色部分を自分の指定の壁紙に設定するにはどうしたらよいのでしょうか?ご教示下さい。よろしくお願いします。

専門家に質問してみよう