C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

TrackBarでクリックした位置に移動する方法 [1]

[トピック内 26 記事 (21 - 26 表示)]  << 0 | 1 >>

■93075 / inTopicNo.21)  Re[14]: TrackBarでクリックした位置に移動する方法
  
□投稿者/ 小次郎 (15回)-(2019/11/18(Mon) 17:13:58)
ありがとうございます。

負値になるとエラーになるのは気付いていたので以下のようにしていたのですが、
そちらのコードと結果は同じでしょうか?



        Public Function SignedHIWORD(ByVal n As IntPtr) As Integer
            Return SignedHIWORD(CInt(CLng(n)))
        End Function

        Public Function SignedHIWORD(ByVal n As Integer) As Integer
            Return CShort((Math.Max(0, n) >> 16 And 65535))
        End Function

        Public Function SignedLOWORD(ByVal n As IntPtr) As Integer
            Return SignedLOWORD(CInt(CLng(n)))
        End Function

        Public Function SignedLOWORD(ByVal n As Integer) As Integer
            Return CShort((Math.Max(0, n) And 65535))
        End Function

引用返信 編集キー/
■93076 / inTopicNo.22)  Re[14]: TrackBarでクリックした位置に移動する方法
□投稿者/ KOZ (39回)-(2019/11/18(Mon) 17:15:29)
NativeWindow についてですが、使うのであれば、特定のプロパティを変更したり、
メソッドを実行するとウインドウが再作成されるので、

http://kozhouse.homeip.net/JUNK/NativeWindowBase/

のように使ったほうが良いです。

Class TrackBarClickMove
    Inherits NativeWindowBase(Of TrackBar)

    Public Sub New(owner As TrackBar)
        MyBase.New(owner)
    End Sub

End Class

とすれば、Owner プロパティを通じて Public プロパティ/メソッドが呼び出せます。

ただ、こんなに複雑になってくるとカスタムコントロールを使ったほうが良いと思いますよ。

引用返信 編集キー/
■93077 / inTopicNo.23)  Re[15]: TrackBarでクリックした位置に移動する方法
□投稿者/ KOZ (40回)-(2019/11/18(Mon) 17:18:46)
No93075 (小次郎 さん) に返信
> 負値になるとエラーになるのは気付いていたので以下のようにしていたのですが、
> そちらのコードと結果は同じでしょうか?

違いますね。
引用返信 編集キー/
■93091 / inTopicNo.24)  Re[16]: TrackBarでクリックした位置に移動する方法
□投稿者/ 小次郎 (16回)-(2019/11/19(Tue) 15:59:25)
ありがとうございます。

つまみの位置を認識することでスライダーが付いてくる問題はかなり激減しました。
ただ、なぜかそれでもごくたまに付いてくることがあります。

そのため、

ElseIf m.Msg = WM_MOUSEMOVE Then


If (Control.MouseButtons And MouseButtons.Left) = MouseButtons.Left Then

Else

m.Result = IntPtr.Zero
Return

End If


を入れることで、今のところ、この問題は出ていません。

あと、

> NativeWindow についてですが、使うのであれば、特定のプロパティを変更したり、
> メソッドを実行するとウインドウが再作成されるので、

> http://kozhouse.homeip.net/JUNK/NativeWindowBase/

> のように使ったほうが良いです。

を試してみたのですが、以下のエラーが発生します。

エラー BC30284 基底クラスで sub をオーバーライドしないため、sub 'WndProc' を 'Overrides' として宣言することはできません。
エラー BC30002 型 'NativeWindowBase' は定義されていません。
エラー BC30512 Option Strict On では 'Control' から 'TrackBar' への暗黙的な変換は許可されていません。

更に、Me.Handleでハンドルを取得しようとすると以下のエラーが出ます。
エラー BC30456 'Handle' は 'Form1.TrackBarClickMove' のメンバーではありません。

どのようにすれば良いですか?


> NativeWindow についてですが、使うのであれば、特定のプロパティを変更したり、
> メソッドを実行するとウインドウが再作成されるので、

というのがどういう意味なのかよく分からないのですが・・・
ウインドウを再作成されるというのはどういう意味ですか?

引用返信 編集キー/
■93094 / inTopicNo.25)  Re[17]: TrackBarでクリックした位置に移動する方法
□投稿者/ KOZ (45回)-(2019/11/19(Tue) 18:12:03)
No93091 (小次郎 さん) に返信
> エラー BC30002 型 'NativeWindowBase' は定義されていません。

NativeWindowBase をプロジェクトにコピーしてください。

> ウインドウを再作成されるというのはどういう意味ですか?

ウインドウが破棄されて新しいウインドウが作成されます。
もっとも簡単な例をあげると、RecreateHandle メソッドを実行する前と後で、Handle プロパティが変わってしまいます。

引用返信 編集キー/
■93095 / inTopicNo.26)  Re[18]: TrackBarでクリックした位置に移動する方法
□投稿者/ KOZ (46回)-(2019/11/19(Tue) 18:18:28)
もうひとつのスレッド

http://bbs.wankuma.com/index.cgi?mode=al2&namber=93044

にサンプルを投下したので参考にしてください。
引用返信 編集キー/

このトピックをツリーで一括表示

<前の20件
トピック内ページ移動 / << 0 | 1 >>

このトピックに書きこむ