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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 >>
■9190  Re[7]: C#からVC6DLLに構造体のchar[]を渡す
□投稿者/ 渋木宏明(ひどり) -(2007/10/20(Sat) 22:34:29)
>
    > ポインタ返す場合には、PtrToStruct 使えるのですよね。

    は、まぁそうなんですけど、その前に new/malloc で確保した領域を .dll/.exe 境界を越えて引き渡すのはあまりよいことではありません。原則避けるべきです。

    new/malloc は C ランタイムが管理するヒープから領域確保を行うため、.dll/.exe 境界を越えて渡された側では一般に、その領域を正しく解放する術がありません。

    > とりあえず、MSDNは見るのはいいですが理解しにくい部分も多々あるので
    > ちゃんとした日本語に意訳してもらえるだけでもありがたく感じています。

    ん? .NET 関係は基本的にほとんど和訳されてますよね?

    和訳された文章が分かりにくいといことですか?
記事No.9091 のレス /過去ログ21より / 関連記事表示
削除チェック/

■38113  Re[5]: ClassViewのViewクラスが消えちゃうんですが・・・
□投稿者/ 774RR -(2009/07/07(Tue) 10:07:55)
    だから既に書いたとおり
    ・ ServicePack6 は当たっているかどうか確認 ( VC++6 サービスパックなしはバグバグ )
    ・ ClassWizard の信頼性は低いのであまり当てにしないこと

    たとえば
    http://yk.tea-nifty.com/netdev/2004/09/vc6classview.html
    一度 Visual Studio を終了させて *.ncb ファイルを消し、
    再度 Visual Studio 起動すると *.ncb を再作成できる。

    一番いいのは VisualStudio 200* の製品版を買い、そっちに乗り換えることだ。
    XP 上では VC++6 自体の動作保証がない(動くことは動くが、うまく動かないことが多発している)
    Vista 上では VC++6 は動作しない。

    VC++6 は、いかんせん古すぎる上に Microsoft のサポートも打ち切られている時代遅れの代物。
    使い続けることは推奨できない。
記事No.38070 のレス /過去ログ65より / 関連記事表示
削除チェック/

■56410  Re[10]: C#でSQLiteを接続
□投稿者/ える -(2011/01/13(Thu) 13:28:07)
    No56405 (shu さん) に返信
    > ■No56403 (える さん) に返信
    >
    >>テーブル定義をもう一度見返してみると
    >>Testtableというものがすでにできていたらしく
    > ないと思っていたのですか?そしたら最初に定義はどこで確認されたのでしょう?
    > テーブルがなければSelect出来ませんが?

    あとで気づいたのですが、
    Create文でテーブルを作ったつもりでいたのが、
    コードが消えてしまっていたみたいでした。
    なので、テーブルは作れてないものだと思い、
    新しくCreate文でテーブルを作りました。
    Create文は別の関数でやっていた為書きませんでした。
記事No.56373 のレス / END /過去ログ94より / 関連記事表示
削除チェック/

■81833  Re[2]: COMの登録(Component Object Model)
□投稿者/ jinjin -(2016/11/16(Wed) 18:33:15)
    No81829 (魔界の仮面弁士 さん) に返信

    魔界さん
    返信ありがとうございます。

    > ですね。それに、そもそも regasm は再頒布できなかったはず。
    先程、事務の方のPC(Win10 7からの無償アップ)に入っていました"RegAsm.exe"。
    C:Windows\Microsoft〜〜〜 の.NET4 的なフォルダの下にいました。
    SDKとか入れなくても、入っているのかもしれません。


    >
    >>Microsoft Development Environment 6.0 Visual Inter Dev 6.0
    >
    > InterDev を使っているというよりは、InterDev のインターフェイス上で動作する
    > 「Visual Studio Installer 1.1」(あるいは 1.0)を使っているものと理解しました。
    Visual Studioの6なのかな?
    ヘルプ - バージョン でみると

    Microsoft Development Environment 6.0
    で、セットアップさrている製品
    Visual Inter Dev 6.0

    となっています。
    VB6のプロジェクト ファイルを指定しておくと、
    〜.msi まで出力してくれます。

    > レジストリの登録設定を施しておけば動作するかと思います。

    これ(Microsoft Development Environment 6.0)に、
    インストール時のレジストリ操作機能がある。
    調べてみます。
    COMに関するレジストリの仕組みとか理解していないけど、
    レジストリ キー(?)のGuidの意味が分かれば、
    なんとかなりそうな気がします。



記事No.81826 のレス /過去ログ139より / 関連記事表示
削除チェック/

■85811  Re[4]: 指数表記する方法
□投稿者/ 魔界の仮面弁士 -(2017/11/26(Sun) 19:36:47)
    No85807 (ちゃんころ さん) に返信
    > Public Const diele As Single = 8.85418782E-12#
    > というのが
    > Public Const diele As Single = 0.00000000000885418782
    > というのに変わってしまいます。
    
    VB のエディタは、極力、小数表記で記述しようとするためです。
    その境目となるのは、おそらく指数部の桁数でしょう。
    
    Double 型リテラルの場合、E+14〜E-16 の範囲は小数表記、その範囲外が指数表記になり、
    Single 型リテラルの場合、E+6〜E-8 の範囲が小数表記、その範囲外が指数表記になります。
    Decimal 型リテラルはの場合は、すべて小数表記にフォーマットされます。
    
    
    > どうすれば良いですか?
    
    今回の「8.85418782E-12」という表現からして、有効桁数 9 桁の値を表現したいようですが、
    Hongliang さんから指摘のあるとおり、Single 型ではこの精度の値を扱うことはそもそも出来ません。
    どう修正すべきかは、求める要件によって変わりますが、有効桁数 9 桁が本当に必要なら、
    As Double にするか、As Decimal にする必要があるでしょう。
    
    より正確に言えば、
    Double 型の仮数部の幅は、53+1ビット≒15.95 桁分であるのに対し、
    Single 型の仮数部の幅は、23+1ビット≒7.225 桁分しかないということです。
    ちなみに Decimal 型の場合は 96 ビット幅なので、約 28.89888 桁です。
    
    有効桁数 9 桁の値を Single 型で管理するには有効桁数が不足してしまい、
    どうあっても、格納時には近似値に丸められることになるでしょう。
    
    確認のため、「8.85418782E-12」相当の近似値を Single 型で表現してみましょうか。
    先に言っておくと、誤差が最小になるのは 3 番です。
    
    《Single のバイナリ表現》
    1: 0b00101101000110111100001110110110
    2: 0b00101101000110111100001110110111
    3: 0b00101101000110111100001110111000
    4: 0b00101101000110111100001110111001
    5: 0b00101101000110111100001110111010
    
    《上記を 10進小数で表現した値》
    1: 0.00000000000885418648122193729932405403815209865570068359375
    2: 0.000000000008854187348583675287727601244114339351654052734375
    3: 0.000000000008854188215945413276131148450076580047607421875
    4: 0.000000000008854189083307151264534695656038820743560791015625
    5: 0.00000000000885418995066888925293824286200106143951416015625
    
    
    ちなみに上記を diele.ToString("R") でラウンドトリップ出力した場合、
    1: 8.85418648E-12
    2: 8.854187E-12
    3: 8.854188E-12
    4: 8.854189E-12
    5: 8.85419E-12
    となります。
    
    いずれも E-8 を下回る指数表現であるため、この場合は自動変換が起こりません。
     Public Const Sample1 As Single = 8.85418648E-12F
     Public Const Sample2 As Single = 8.854187E-12F
     Public Const Sample3 As Single = 8.854188E-12F
     Public Const Sample4 As Single = 8.854189E-12F
     Public Const Sample5 As Single = 8.85419E-12F
    
    もともと扱おうとしていた「8.85418782E-12F」という値は、
    2 番と 3 番の間になり、Single の精度では表現しきれません。
    そのため、より近い値である 3 番の表記に変換されたということです。
    (有効桁数ってそういうものですよね)
    
    
    > Doubleでも試してみたのですが
    
    同様に、「8.85418782E-12」の Double 値による近似値表現を見てみます。
    こちらの場合は、3 番が同一値となります。(格納誤差はありません)
    
    
    《Double のバイナリ表現》
    1: 0b0011110110100011011110000111011011110001011001000110011010111010
    2: 0b0011110110100011011110000111011011110001011001000110011010111011
    3: 0b0011110110100011011110000111011011110001011001000110011010111100
    4: 0b0011110110100011011110000111011011110001011001000110011010111101
    5: 0b0011110110100011011110000111011011110001011001000110011010111110
    
    《上記を 10進小数で表現した値》
    1: 0.0000000000088541878199999971451928483766392647021092887626991796423681080341339111328125
    2: 0.00000000000885418781999999876077998226927144218532939046184537801309488713741302490234375
    3: 0.000000000008854187820000000376367116161903619668549492160991576383821666240692138671875
    4: 0.00000000000885418782000000199195425005453579715176959386013777475454844534397125244140625
    5: 0.0000000000088541878200000036075413839471679746349896955592839731252752244472503662109375
    
    《R 書式によるラウンドトリップ出力》
    1: 8.8541878199999971E-12
    2: 8.8541878199999988E-12
    3: 8.85418782E-12
    4: 8.854187820000002E-12
    5: 8.8541878200000036E-12
    
    
    そして先述した通り、Double 型で E-12 の範囲は小数表記されるため、
     Public Const Sample1 As Double = 8.8541878199999971E-12R
     Public Const Sample2 As Double = 8.8541878199999988E-12R
     Public Const Sample3 As Double = 8.85418782E-12R
     Public Const Sample4 As Double = 8.854187820000002E-12R
     Public Const Sample5 As Double = 8.8541878200000036E-12R
    と書いても
     Public Const Sample1 As Double = 0.0000000000088541878199999971R
     Public Const Sample2 As Double = 0.0000000000088541878199999988R
     Public Const Sample3 As Double = 0.00000000000885418782R
     Public Const Sample4 As Double = 0.000000000008854187820000002R
     Public Const Sample5 As Double = 0.0000000000088541878200000036R
    に変換される結果になりますね。
記事No.85804 のレス /過去ログ147より / 関連記事表示
削除チェック/

■92415  Re[2]: 消えないフォーム
□投稿者/ 犬夜叉 -(2019/09/24(Tue) 10:32:59)
    No92414 (魔界の仮面弁士 さん) に返信

    > RawInput を捉えるとか。

    RawInput ってなんですか?
    どうやって使うのでしょうか?
記事No.92410 のレス /過去ログ159より / 関連記事表示
削除チェック/

■92887  マウスクリックとホイールを無効化する方法
□投稿者/ yapoo -(2019/11/05(Tue) 17:04:48)

    分類:[.NET 全般] 

    Cursor = Cursors.WaitCursor

    とすることで、マウスカーソルを待機状態に変更することができます。
    この状態の時に、
    マウスでコントロールをクリックやホイールを回しても
    コントロールの内容を変更できなくしたいのですが、
    どのようにすれば良いですか?

    一つ一つコントロール毎に、
    マウスクリックイベントとホイールイベントを書いていくのは
    非常に面倒なので
    一括で書きたいのですが
    どのようにすれば良いでしょうか?
親記事 /過去ログ160より / 関連記事表示
削除チェック/

■92888  Re[1]: マウスクリックとホイールを無効化する方法
□投稿者/ 魔界の仮面弁士 -(2019/11/05(Tue) 17:14:01)
    No92887 (yapoo さん) に返信
    > Cursor = Cursors.WaitCursor

    という事は、WPF や ASP.NET WebForms ではなく、WinForms での開発ですね。
    行末セミコロンも無いので VB かな。


    > マウスでコントロールをクリックやホイールを回しても
    > コントロールの内容を変更できなくしたいのですが、
    > どのようにすれば良いですか?

    マウス、タッチ、スタイラス、キーボード等々、
    すべての入力をブロックしてもよいのなら、
    親フォームまるごと使用不可にしてしまうとか。

    Me.Enabled = False
記事No.92887 のレス /過去ログ160より / 関連記事表示
削除チェック/

■92889  Re[2]: マウスクリックとホイールを無効化する方法
□投稿者/ yapoo -(2019/11/05(Tue) 17:22:02)
    ありがとうございます。

    確かにこの方法でもできるのですが、
    ウインドウフォームの外観を変えずに
    マウス(とキーボード)の操作を無効化したいのですが
    このようなことは可能でしょうか?
記事No.92887 のレス /過去ログ160より / 関連記事表示
削除チェック/

■92895  Re[3]: マウスクリックとホイールを無効化する方法
□投稿者/ 774RR -(2019/11/06(Wed) 08:28:14)
    > ウインドウフォームの外観を変えずにマウス(とキーボード)の操作を無効化
    すると通常のユーザーは大いに戸惑うと思うのだけど。

    あれ?このアプリ死んでる!しょうがない、タスクマネージャで抹消するか。はお望みの動作?
記事No.92887 のレス /過去ログ160より / 関連記事表示
削除チェック/

■92898  Re[3]: マウスクリックとホイールを無効化する方法
□投稿者/ 魔界の仮面弁士 -(2019/11/06(Wed) 10:22:33)
    No92889 (yapoo さん) に返信
    > ウインドウフォームの外観を変えずに
    > マウス(とキーボード)の操作を無効化したいのですが
    > このようなことは可能でしょうか?

    手抜きですが、それっぽい画像に差し替えてしまうのはどうでしょう?


    フォームの階層構成を
     Form1
     ├Panel1
     │├他のコントロール
     │└他のコントロール
     └PictureBox1
    ようにしておいて…。


    普段の状態:
     ・Panel1 は「最背面」「Visible = True」「Dock = Fill」
    ・PictureBox1 は「再前面」「Visible = False」「Dock = Fill」
    ロックする場合:
     ・Graphics.CopyFromScreen で撮影したフォーム画像を PictureBox1.Image に割り当て
     ・Cursors.WaitCursor を適用
     ・コンテナの Visible を反転させ、Panel1.Visible = False、PictureBox1.Visible = True に。
    とする感じで。


    それでも、考えるべき点はいろいろありますが…。

    複数のフォームがあったらその都度処理しなければいけないとか、
    無効化中の画面更新(時計やGIFアニメ等)に対応できないとか、
    AutoScroll なフォームをどうするかとか、
    半透明ウィンドウの場合はどうするのかとか、
    無効化中の親フォームの移動や終了を許可するか否かとか。
記事No.92887 のレス /過去ログ160より / 関連記事表示
削除チェック/

■92896  Re[4]: マウスクリックとホイールを無効化する方法
□投稿者/ yapoo -(2019/11/06(Wed) 09:58:27)
    No92895 (774RR さん) に返信
    >>ウインドウフォームの外観を変えずにマウス(とキーボード)の操作を無効化
    > すると通常のユーザーは大いに戸惑うと思うのだけど。
    >
    > あれ?このアプリ死んでる!しょうがない、タスクマネージャで抹消するか。はお望みの動作?
    >

    カーソルを待機状態に変えてあるのでそこは問題ありません。
    Cursor = Cursors.WaitCursor
記事No.92887 のレス /過去ログ160より / 関連記事表示
削除チェック/

■92901  Re[1]: マウスクリックとホイールを無効化する方法
□投稿者/ にゃるら -(2019/11/06(Wed) 15:16:49)
    No92887 (yapoo さん) に返信
    > Cursor = Cursors.WaitCursor
    >
    > とすることで、マウスカーソルを待機状態に変更することができます。
    > この状態の時に、
    > マウスでコントロールをクリックやホイールを回しても
    > コントロールの内容を変更できなくしたいのですが、
    > どのようにすれば良いですか?
    >
    > 一つ一つコントロール毎に、
    > マウスクリックイベントとホイールイベントを書いていくのは
    > 非常に面倒なので
    > 一括で書きたいのですが
    > どのようにすれば良いでしょうか?
    >

    SetWindowsHookExでWH_MOUSEを指定するとか?(キーボード以外は試してないのでうまくいくかはわかりませんが)
記事No.92887 のレス /過去ログ160より / 関連記事表示
削除チェック/

■92908  Re[1]: マウスクリックとホイールを無効化する方法
□投稿者/ KOZ -(2019/11/07(Thu) 10:44:14)
    2019/11/07(Thu) 10:45:05 編集(投稿者)
    2019/11/07(Thu) 10:44:39 編集(投稿者)

    No92887 (yapoo さん) に返信
    > 一つ一つコントロール毎に、
    > マウスクリックイベントとホイールイベントを書いていくのは
    > 非常に面倒なので
    > 一括で書きたいのですが
    > どのようにすれば良いでしょうか?

    メッセージフィルタを登録してマウスに関するメッセージを無視することができます。


    Private Class MouseMessageFilter
    Implements IMessageFilter

    Const WM_MOUSEFIRST As Integer = &H200
    Const WM_MOUSELAST As Integer = &H20E

    Public Function PreFilterMessage(ByRef m As System.Windows.Forms.Message) As Boolean _
    Implements IMessageFilter.PreFilterMessage
    Select Case m.Msg
    Case WM_MOUSEFIRST To WM_MOUSELAST
    Return True
    Case Else
    Return False
    End Select
    End Function
    End Class

    Dim mouseFilter As New MouseMessageFilter()

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Application.AddMessageFilter(mouseFilter)
    Me.Cursor = Cursors.WaitCursor
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    Application.RemoveMessageFilter(mouseFilter)
    Me.Cursor = Cursors.Default
    End Sub
記事No.92887 のレス /過去ログ160より / 関連記事表示
削除チェック/

■92912  Re[2]: マウスクリックとホイールを無効化する方法
□投稿者/ yapoo -(2019/11/07(Thu) 14:22:37)
    これでした
    素晴らしいです
    うまくいきました
    どうもありがとうございました。
記事No.92887 のレス / END /過去ログ160より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -