|
みなさんこんにちは
又、検証なしの提案になりますが、
1.の問題ですが、
imageを貼り付ける方法ですと、UserFormにimageコントロール1個だけですと
Private Const FormClassName As String = "ThunderXFrame"
Private hImage As Long
Public Function findchild() As Long
Dim ret As Long
Dim hForm As Long
hImage = 0
hForm = FindWindow(FormClassName, UserForm1.Caption)
ret = EnumChildWindows(hForm, AddressOf EnumChildProc, &H0)
findchild = hImage
End Function
Public Function EnumChildProc(ByVal hwnd As Long, _
ByVal lParam As Long) As Long
hImage = hwnd
EnumChildProc = True
End Function
'子ウィンドウ取得(1個限定^ ^;;)
Private Sub CommandButton4_Click()
Debug.Print findchild
End Sub
ってな感じでImageのHWNDが取れますから、
最初の質問時のコード 「みそじのおじさん - 08/3/11(火) 14:51 」
のような方法は取れないんですかね?(そのままでは駄目かもしれない)
・・・今日は検証する根性がありません。
2.に関しては、マジックナンバーではなく出来るだけ定数化してやるとか
しか思い付きません。
前回のサンプルの補足:
(1)
>ret = LineTo(hComDC, img.Width * 10, img.Height * -10)
の10と-10ですが、
>ret = SetMapMode(hComDC, MM_TWIPS)
でMM_TWIPSを指定しているのでtwipsに戻すのなら本当は20なんですが、
大きさ調整で10にしただけです。(本来は20でtwips)
詳しくはMSDNでSetMapModeをお調べ下さい。
> hdc = GetDC(0) '<<<ここの引数が0なのが疑問です。
> '0にするとスクリーン全体のデバイスコンテキストのハンドルが取得できる
> 'とありましたが、ここでいうスクリーン全体というのは、Image1を
> '指しているのでしょうか?
今回はメモリ上に書いているので、「スクリーン全体のデバイスコンテキスト」で
いいと思います。
ごめんなさい。今日はなんか肩がつりそうで根性ありませんでした。
ちなみに私も描画関係は殆どやったことないんで勉強になります。^ ^;;
|
|