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

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

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

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

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

■94491 / inTopicNo.1)  TrackBarでクリックした位置に移動する方法2
  
□投稿者/ 小次郎 (17回)-(2020/04/15(Wed) 12:23:01)

分類:[.NET 全般] 

http://bbs.wankuma.com/index.cgi?mode=al2&namber=93031&KLOG=161

この質問ページで
TrackBarでクリックした位置に移動する方法を教えていただいたのですが、
Win10 64-bitの場合には問題なく動作していたのですが、
Win10 32-bitにするとエラーが出ることが分かりました。

        Private Function GetRangeMax() As Integer
            Return CInt(SendMessage(Me.Handle, TBM_GETRANGEMAX, Nothing, Nothing))
        End Function

のところで、
SendMessageの返り値がIntegerに収まりきらないほど大きな値のために
エラーになっているようです。

        Private Function GetRangeMax() As Long
とすればここではエラーは出なくなりますが
数値が正常ではないため、後の処理でエラーになってしまいます。

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

引用返信 編集キー/
■94492 / inTopicNo.2)  Re[1]: TrackBarでクリックした位置に移動する方法2
□投稿者/ KOZ (108回)-(2020/04/15(Wed) 13:33:05)
No94491 (小次郎 さん) に返信
> http://bbs.wankuma.com/index.cgi?mode=al2&namber=93031&KLOG=161
> この質問ページで
> TrackBarでクリックした位置に移動する方法を教えていただいたのですが、

私が書いたコードにも mayo さんが書かれたコードにも

> Private Function GetRangeMax() As Integer
> Return CInt(SendMessage(Me.Handle, TBM_GETRANGEMAX, Nothing, Nothing))
> End Function

は出てこないのですが、最終的にどういうコードにしたのでしょうか?

64bit でオーバーフローするなら理解できないこともないですが、
32bit でオーバーフローするとは思えないです。

引用返信 編集キー/
■94493 / inTopicNo.3)  Re[2]: TrackBarでクリックした位置に移動する方法2
□投稿者/ 小次郎 (19回)-(2020/04/15(Wed) 13:56:08)
SendMessageの返り値がLongになっているのが原因でした
Integerにするとエラーは出なくなりました

解決済み
引用返信 編集キー/
■94494 / inTopicNo.4)  Re[3]: TrackBarでクリックした位置に移動する方法2
□投稿者/ 魔界の仮面弁士 (2688回)-(2020/04/15(Wed) 14:02:11)
No94493 (小次郎 さん) に返信
> SendMessageの返り値がLongになっているのが原因でした
> Integerにするとエラーは出なくなりました

SendMessage API の戻り値は LRESULT 型なので、本来は As IntPtr かと。

https://www.wdic.org/w/TECH/LRESULT
解決済み
引用返信 編集キー/
■94495 / inTopicNo.5)  Re[3]: TrackBarでクリックした位置に移動する方法2
□投稿者/ 774RR (784回)-(2020/04/15(Wed) 14:03:14)
> Integerにするとエラーは出なくなりました
これだと今度は x64 で問題が発生するはず。 IntPtr にするのが適切っぽいっす。

解決済み
引用返信 編集キー/
■94496 / inTopicNo.6)  Re[4]: TrackBarでクリックした位置に移動する方法2
□投稿者/ 小次郎 (20回)-(2020/04/15(Wed) 15:20:53)
Integerでもx64で、特にエラーは出ていないのですが
とりあえずIntPtrに修正しました
ありがとうございます。

解決済み
引用返信 編集キー/

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


トピック内ページ移動 / << 0 >>

このトピックに書きこむ