- 締切済み
(VB6)MDI親FormのPictureプロパティの設定方法
MDIの親フォームのPictureプロパティに、コードで画像を貼りつけて、表示領域に全画面表示させたいのですが、できません。 MDIの親フォームでなければ、PaintPictureを使えるというのは調べましたが、MDIの親フォームではどのようにすればいいのでしょうか。 public Declare Function RedrawWindow Lib "user32" (ByVal hWnd As Long, lprcUpdate As Any, ByVal hrgnUpdate As Long, ByVal fuRedraw As Long) As Long Public Const RDW_ALLCHILDREN = &H80 Public Const RDW_ERASE = &H4 Public Const RDW_INVALIDATE = &H1 Public Const RDW_UPDATENOW = &H100Private Sub Command1_Click() Me.Picture = LoadPicture("C:\pic\aa.jpg") Call RedrawWindow(Me.hWnd, ByVal 0&, 0&, RDW_ERASE Or _ RDW_INVALIDATE Or RDW_ALLCHILDREN Or RDW_UPDATENOW) End Sub
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- redfox63
- ベストアンサー率71% (1325/1856)
拡大または縮小してとなると VB側で用意されたイベントだけでは無理なように思います 普通のFormなら Paintイベントがあるのでここを細工すればいいのですが ・・・ やるとするならば MDIFromをサブクラス化して WndProc(ウィンドウプロシージャ)を自前で定義して WM_PAINTや WM_ERASEBKGRNDなどを捕まえて修理しないといけないのかも # 出来るかどうかは検証していません m(__)m ただ、サブクラス化を行うと VBのIDEでのデバッグが出来なくなる点を考慮すると 面倒になりそうです PictureBoxを貼り付けてしまうと PictureBoxの部分はクライアント領域から除外されてしまうので これも使えませんね 子フォームは このPictureBoxの下へ潜ってしみますし ・・・
- redfox63
- ベストアンサー率71% (1325/1856)
このボタンはどのように配置されているものでしょう? 親のMDIFormにツールバーなどを設置してその上に追加したボタンでしょうか? それとも 子Formに追加したボタンでしょうか? 前者ならばお示しのコードで 表示可能だと思いますよ 後者であるなら Me.Pictureや Me.hWndなどの Meを MDIFormを示すように MDIForm1.Picture や MDIForm1.hWndに変更しないといけません
補足
すみません。 上記のコードのSub Command1_Click()は適当につけてしまったので、 Me.Picture = LoadPicture("C:\pic\aa.jpg")の「Me」はMDIの親フォームです。 質問の意図としては、画像のサイズをMDIの親フォームの背景に、MDIの大きさに合わせて、画像の大きさを変えて貼りつけたいという意味です。 画像の大きさそのままなら、上のようなコードで可能なのですが・・・
補足
通常の方法では無理みたいですね。 時間も無いので、この処理を諦めます。 ありがとうございました。