[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/29 20:01 / Filesize : 273 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

VB.NET質問スレ (Part18)



1 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 18:41:18 ]
[前スレ]VB.NET質問スレ (Part17)
pc8.2ch.net/test/read.cgi/tech/1155292844/

744 名前:734 mailto:sage [2006/12/26(火) 14:23:53 ]
>>741
できません。。。
ぐぐると www.users.gr.jp/blogs/hidori/articles/5302.aspx
ツールボックスにWindows Media Player コンポーネントが
出てくるらしいのですが、出ません。

当方、
・WinXPSP2Pro
・Windows Media Player10
・VB2005Express
なんですが・・・orz

ちなみに上記からダウンロードしたソースをC#2005Expressで開くと実行できましたが、
やはりツールボックスにはWindows Media Player コンポーネントがありません・・・

もしかしてExpressEditionではダメなんですかね?

745 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 14:30:32 ]
>>744
homepage1.nifty.com/rucio/main/kiso/Kiso14AddControl.htm

746 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 14:51:59 ]
>>743
日本語下手ですんません、どう書くと整理できるか編集中にてにをはが狂いました。
実は Windowsアプリケーションに貼り付けるコントロールだったのですが、

>if DesignMode

これを書いてみたところデザイン時も、実行時も常に False のようで、どちらでも
実行されませんでした(継承元のクラスは TreeView)。

ヘルプによると、DesignMode は 
 名前空間: System.Web.UI
 アセンブリ: System.Web (system.web.dll 内)
とあったので Web部品用のものなのでしょうか?

747 名前:734 mailto:sage [2006/12/26(火) 14:52:47 ]
>>745
ありがとうございました。
できました(´∀`)

748 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 14:54:46 ]
>>746ですが、実際には System.Web.UI を Imports していなくても
使えていたので、「Web部品用」でなくても持ってるプロパティですよね
うーん、どうしてだろ。。。

749 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 15:21:12 ]
>>748
System.ComponentModel.Component.Designmodeだよ。
で、C#の記事だけどこれかな?
blogs.wankuma.com/mnow/archive/2006/11/08/44120.aspx

750 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 17:02:24 ]
>>749
どうもです、そうでした、System.ComponentModel.Component にも
DesignMode はありました。

Parent の DesignMode はその記事の通りやはり Protected だった
ようでエラーとなりました。

いまいろいろ調べてみましたがまだ解決していませんが、
さらに調べてみます。

751 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 20:25:20 ]
ttp://www.be-interactive.org/index.php?itemid=118&catid=10
これをVB2005で行いたいのですが、どのようにすれば良いのか分かりません。

Const WM_COPYDATA As Integer = &H4A
Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hWnd As Integer, ByVal MSG As Integer, ByVal wParam As Integer, ByVal lParam As COPYDATASTRUCT) As Integer

Sub main()
Dim sendMes As New COPYDATASTRUCT
sendMes.lpData = _
New System.Text.StringBuilder("TestAPP" + Chr(0).ToString + "Music" + Chr(0).ToString + "1" + Chr(0).ToString + "{0} - {1}" + Chr(0).ToString + "TEST" + Chr(0).ToString + "TEST")
sendMes.cbData = sendMes.lpData.Length + 2
SendMessage(132030, WM_COPYDATA, Nothing, sendMes)
End Sub

Public Structure COPYDATASTRUCT
Const dwData As Integer = 1351
Public cbData As Integer
Public lpData As System.Text.StringBuilder
End Structure

このようにしたところ、SendMessageのところでTypeLoadExceptionを吐いてしまいます。

よろしくお願いします。

752 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 20:48:53 ]
・文字コードはそれで大丈夫?
 ANSIだと
  sendMes.cbData = sendMes.lpData.Length + 1
 だと思うけど。
 SendMessageWにしてCharSet = CharSet.Unicodeにし、
 その場合
  sendMes.cbData = (sendMes.lpData.Length + 1 )*2

・シグネチャ
  ByVal lParam As COPYDATASTRUCT → ByRef lParam As COPYDATASTRUCT





753 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 20:55:40 ]
回答ありがとうございます。・・・しかし無理でした。COPYDATASTRUCTのlpDataが悪さしているようですが、、、

Const WM_COPYDATA As Integer = &H4A
Declare Ansi Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
Declare Unicode Function SendMessage Lib "user32.dll" Alias "SendMessageW" (ByVal hWnd As Integer, ByVal MSG As Integer, ByVal wParam As Integer, ByRef lParam As COPYDATASTRUCT) As Integer

Sub main()
Dim sendMes As New COPYDATASTRUCT
sendMes.lpData = _
New System.Text.StringBuilder("TestAPP" + ChrW(0).ToString + "Music" + ChrW(0).ToString + "1" + ChrW(0).ToString + "{0} - {1}" + ChrW(0).ToString + "TEST" + ChrW(0).ToString + "TEST")
sendMes.cbData = (sendMes.lpData.Length + 1) * 2
SendMessage(FindWindow("MsnMsgrUIManager", Nothing), WM_COPYDATA, Nothing, sendMes)
End Sub

Public Structure COPYDATASTRUCT
Const dwData As Integer = 1351
Public cbData As Integer
Public lpData As System.Text.StringBuilder
End Structure

754 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 21:04:56 ]
もうぶっちゃけちゃうと、

COPYDATASTRUCT.lpData をIntPtrにして文字列をMarshal.AllocHGlobal, Marshal.StringToHGlobalAutoで割り当てる
(あとでFreeHGlobal)
んで
sendMes.cbData = (sendMes.lpData.Length + 1) * 2

COPYDATASTRUCTそのものもMarshal.StructureToPtr, Marshal.StructureToPtrでメモリに割り当てて
(あとでFreeHGlobal)

そいで
SendMessageの第4引数をByVal IntPtrにする。

755 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 21:17:52 ]
もうこれはあきらめるしか無いのですかね、、、

Const WM_COPYDATA As Integer = &H4A
Declare Ansi Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
Declare Unicode Function SendMessage Lib "user32.dll" Alias "SendMessageW" (ByVal hWnd As Integer, ByVal MSG As Integer, ByVal wParam As Integer, ByRef lParam As System.IntPtr) As Integer

Sub main()
Dim sendMes As New COPYDATASTRUCT
Dim str As String = "TestAPP" + ChrW(0).ToString + "Music" + ChrW(0).ToString + "1" + ChrW(0).ToString + "{0} - {1}" + ChrW(0).ToString + "TEST" + ChrW(0).ToString + "TEST"
Dim ptr As IntPtr
sendMes.lpData = System.Runtime.InteropServices.Marshal.AllocHGlobal(System.Runtime.InteropServices.Marshal.StringToHGlobalAuto(str))
sendMes.cbData = (str.Length + 1) * 2
System.Runtime.InteropServices.Marshal.StructureToPtr(sendMes, ptr, True)
SendMessage(FindWindow("MsnMsgrUIManager", Nothing), WM_COPYDATA, Nothing, ptr)
System.Runtime.InteropServices.Marshal.FreeHGlobal(sendMes.lpData)
System.Runtime.InteropServices.Marshal.FreeHGlobal(ptr)
End Sub

Public Structure COPYDATASTRUCT
Const dwData As Integer = 1351
Public cbData As Integer
Public lpData As System.IntPtr
End Structure

756 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 21:20:51 ]
ミスしました。
Dim ptr As IntPtr = System.Runtime.InteropServices.Marshal.AllocHGlobal(System.Runtime.InteropServices.Marshal.SizeOf(sendMes))
これだとうまくいくっぽい、、、

757 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 21:25:48 ]
やっぱりダメでしたorz

758 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 21:31:25 ]
一度メッセージ受けるだけのアプリ作ってみれば?
とりあえずメッセージとその内容が正しく届いてるか確かめるためにさ。

文字列をマーシャリングするときに\0で終了と認識されてるのかも。
byte配列とかにする必要があるかもね〜


759 名前:デフォルトの名無しさん mailto:sage [2006/12/27(水) 02:51:36 ]
こいつの(Cで書かれた)ソースにもコメントに書かれているんだが。
途中の区切文字は"\0"であって、
chr(0)でもchrW(0)でもvbNullCharでもvbNullStringでもString.EmptyでもNothingでもない。

Structure COPYDATASTRUCT
Dim dwData As Int32
Dim cbData As Int32
Dim lpData As IntPtr
End Structure
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal data As IntPtr) As IntPtr
Private Declare Ansi Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr
Private Sub SongNameSendToMessenger()
Dim dtstrct As New COPYDATASTRUCT
Dim buf As String = Nothing
Const WM_COPYDATA As Integer = &H4A
buf = "OrgApp\0Music\01\0{0} - {1}\0曲名\0アーティスト名\0アルバム(シングル)名" & vbNullChar
dtstrct.dwData = 1351
dtstrct.cbData = buf.Length * 2
dtstrct.lpData = Marshal.StringToHGlobalUni(buf)
Dim MyPointer As IntPtr = Marshal.AllocHGlobal(Marshal.SizeOf(dtstrct))
Marshal.StructureToPtr(dtstrct, MyPointer, False)
Dim hWnd As IntPtr = FindWindow("MsnMsgrUIManager", Nothing)
Dim ret As IntPtr = SendMessage(hWnd, WM_COPYDATA, 0, MyPointer)
Marshal.FreeHGlobal(MyPointer)
End Sub

760 名前:デフォルトの名無しさん mailto:sage [2006/12/27(水) 09:04:32 ]
ネタだろといわんばかりだ。

761 名前:デフォルトの名無しさん mailto:sage [2006/12/27(水) 18:47:00 ]
>>755
たぶんこれでいけるんじゃないかな?
なんちゃらメッセンジャーなんてクソ鬱陶しいソフトは使ってないので試してないが、
とりあえずメッセージの送信はこれでできているはずと思う。
見ればわかると思うけど、Formのコマンドボタンのクリックで送信するようになってる。
あと、いろんなところに属性がくっつけてあるけど、あまり考えずテキトーに使っているので
たぶん冗長なものがあると思う。
  Const WM_COPYDATA As Integer = &H4A

  <DllImport("user32.dll", CharSet:=CharSet.Unicode)> _
  Private Shared Function FindWindow(ByVal lpClassName As String, ByVal lpWindowName As IntPtr) As IntPtr
  End Function

  <DllImport("user32.dll", CharSet:=CharSet.Unicode)> _
  Private Shared Function FindWindow(ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr
  End Function

  <DllImport("user32.dll", CharSet:=CharSet.Unicode)> _
  Private Shared Function SendMessage(ByVal hWnd As IntPtr, _
                  ByVal MSG As Integer, _
                  ByVal wParam As Integer, _
                  ByRef lParam As COPYDATASTRUCT) As IntPtr
  End Function

  <StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode, pack:=4)> _
  Public Structure COPYDATASTRUCT
    Public dwData As Integer
    Public cbData As Integer

    <MarshalAs(UnmanagedType.LPWStr)> _
    Public lpData As String
  End Structure

762 名前:デフォルトの名無しさん mailto:sage [2006/12/27(水) 18:47:39 ]
  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim sendMes As COPYDATASTRUCT
    Dim strArray As String() = {"TestAPP", "Music", "1", "{0} - {1}"}
    Const separator As String = "\0"
    Dim str As String = String.Join(separator, strArray)
    Dim byteCount As Integer = Encoding.Unicode.GetByteCount(str)

    With sendMes
      .dwData = 1351
      .lpData = str
      .cbData = byteCount + 2
    End With

    'メモ張のウィンドウハンドルを取得してみる。
    Dim hWnd As IntPtr = FindWindow("Notepad", IntPtr.Zero)
    Console.WriteLine("hWnd = " & hWnd.ToInt32.ToString("X8"))
    Dim ret As IntPtr = SendMessage(hWnd, WM_COPYDATA, 0, sendMes)
    Console.WriteLine("SendMessage = " & ret.ToInt32.ToString("X8"))
    '自分にも同じメッセージを送ってみる。
    ret = SendMessage(Me.Handle, WM_COPYDATA, 0, sendMes)
  End Sub

  Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
    MyBase.WndProc(m)
    Select Case m.Msg
      Case WM_COPYDATA
        Dim dat As COPYDATASTRUCT _
          = CType(Marshal.PtrToStructure(m.LParam, GetType(COPYDATASTRUCT)), COPYDATASTRUCT)
        Console.WriteLine("Received String = " & dat.lpData)
    End Select
  End Sub



763 名前:デフォルトの名無しさん mailto:sage [2006/12/27(水) 19:28:34 ]
>>759,>>761
ありがとうございます、出来ました。

764 名前:デフォルトの名無しさん mailto:sage [2006/12/27(水) 20:57:03 ]
Visual Basic 2005 Express Editionで手軽に使用できるフリーのグラフを描画できるライブラリってありませんかー

765 名前:デフォルトの名無しさん mailto:sage [2006/12/27(水) 23:29:30 ]
VB2005には、ExcelのScreenUpdateのように描画を後でまとめて処理する
ような関数は用意されているんでしょうか?

766 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 19:39:37 ]
VB2005で作成したDLLファイルなどのクラスライブラリを使用する
Windowsアプリケーションを構成すると、それらのDLLを含む形で
Releaseフォルダーが出来上がりますが、それらのDLLファイルを
初めから実行ファイル.exeに入れ込んでしまうようなビルドって
できましたっけ?

767 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 21:52:06 ]
ソリューションのプロパティのコンパイルのところの
ビルド出力パスの設定をすればOK

768 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 21:52:43 ]
じゃないな

769 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 21:54:26 ]
出力ディレクトリにコピーというところを する に設定
すればってことか?

770 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 22:25:51 ]
フォルダごと自己解凍形式のEXEにする

771 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 22:37:03 ]
>>766
むりぽ

772 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 23:24:37 ]
>>766
フルマネージドなアセンブリなら、ildasm/ilamsを使って統合できるよ。
バッチを組めば全自動でできる。



773 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 00:53:21 ]
ILMerge


774 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 01:00:58 ]
>>773
へーへーへー

775 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 13:44:25 ]
こんにちは
VB2005使ってPACMAN作りたいんですけど
どんな風に作ればいいですか?
正方形のPicBOXを並べて中の画像を入れ替えたりするのか
それともPicBOXを移動させるべきなんでしょうか・・
移動させるとなると、どこからどこまで移動できるのかなどは
どのように定義してやれば良いんでしょうか;;

アドバイスお願いします

776 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 13:51:19 ]
作りたいように作れば?
どんな風って、中華風のコピーでしょ?


777 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 14:09:14 ]
>>767-774
ご教授助かります、
>>772 ilasm
>>773 ILMerge
というのがあったんですね!

現在まだ明確に理解できていませんが、MSIL や JIT 等についても
調べつつありました

>>772 ilasm
で生成される実行可能ファイル.exe は、MSILファイルをポータブル実行可能
ファイル.exe にするためのアセンブラーで、統合する機能はあるかどうか
(参照) msdn2.microsoft.com/ja-jp/library/496e4ekx(VS.80).aspx
・・・単一のファイルのアセンブル用(つまり通常のVS環境で生成される
  exeと同等のアセンブル用)なのかもしれないかとも思われました

>>773 ILMerge
こちらですとDLLファイル等をexeファイルに統合するようでした(現状実施未確認)

これらと、JITコンパイルとの関係がまだよく理解できていませんでしたが、次のように
考えておいて良いでしょうか?

 1.通常VSによるコンパイル=ilasm → ソースからMSILを経て単一の exe や dll へ
 2.ILMerge → それら exe や dll を一つにまとめるまでを行い、JITコンパイル相当の
           アセンブルは行なわれない
 3.JITコンパイル → 1や2で作成されるファイルはすべて実行時に初めてマシン固有の
               機械語に落ちる

778 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 14:16:41 ]
>>777
これに関連してですが、一旦 ILMerge で作成された統合実行ファイル exe は、
もはや ildasm で 逆コンパイルすることはできないのでしょうか?

もし逆コンパイルできないようになってしまう場合は、リバースエンジニアリング不能に
なってソースのセニュリティ上は都合がいいかもしれませんが・・・

779 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 14:21:41 ]
なんかかわいいな、せにゅりてぃ

780 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 15:10:18 ]
単にILのコードを繋げるだけじゃないの

781 名前:777 mailto:sage [2006/12/29(金) 17:53:30 ]
ILMerge を使って試しに1本のファイルを作ってみたところ、確かにそれ1本だけで動作しました。

>>780
どうも’MSIL へのコンパイル ’
msdn2.microsoft.com/ja-jp/library/c5tkafs1(VS.80).aspx
によりますと、

-------
”MSIL とメタデータは、実行可能ファイルのファイル形式として使用されてきた従来の Microsoft PE と
COFF (Common Object File Format) に基づき、それらを拡張したポータブル実行可能 (PE) ファイル
に格納されます。

MSIL、ネイティブ コード、およびメタデータを保存できるこのファイル形式を使用すると、オペレーティング
    ~~~~~~~~~~~~~~~~~~
システムが共通言語ランタイムのイメージを認識できるようになります。MSIL と共にメタデータが
このファイルに格納されるため、コードは自己記述型になります”
-------

とあり、どうも VS開発環境 および ilasm が出力する exe ファイルそのものが、
 「ポータブル実行可能 (PE) ファイル」
であり、ということはその中にすでに ネイティブ コード が埋め込まれているかのような説明に読め
ましたが、現実にPE形式のファイルにはすでに JITコンパイルされた後にできるはずの ネイティブ コード 
が含まれてしまっているのでしょうか?

782 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 18:06:32 ]
C++/CLIとかで意図的にネイティブコードを混ぜることができることを指してるのかな



783 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 19:29:56 ]
>>781
あんまり俺解釈するな。


784 名前:777 mailto:sage [2006/12/29(金) 19:44:57 ]
>>782
あ、なるほど、そういうことか、であればJITコンパイルで出来上がるネイティブ・コードが
含まれていることはなさそうですよね

ということは、結局MSILレベルで複数のexeやdllがうまく結合されて1本にまとまっている
ということになり、逆にいえばコードの構造は ildasm (逆アセンブル)可能となって
>>778のリバース読み込みも不可能ではない、ということになるのかも

結局、「MSIL → *.exe」 を行なっている ilasm は 「実際にはアセンブルというほど
”コード変換” は行なっていない」 ということなのか・・・


785 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 19:57:55 ]
だから俺解釈するなと。

>「MSIL → *.exe」 を行なっている ilasm 
なんでそうなる。
ああ、それともMSILをMSILのソースコードの意味で書いてるのか?
ならまさにアセンブルだろうに。


786 名前:765 mailto:sage [2006/12/29(金) 20:37:23 ]
スルーされてますが、無いでFA?

787 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 20:39:02 ]
>>785
>ああ、それともMSILをMSILのソースコードの意味で書いてるのか?
>ならまさにアセンブルだろうに。

なるほど、そういわれてみれば・・・わかりました

788 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 20:51:23 ]
>>786
Bitmapオブジェクトに対して描画しといてあとでDrawImageする

789 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 21:14:23 ]
>>788
おいおいw
あのさあ、>>765は愚問なんだよ。
愚問というより、質問として成立してないだろ。
こういうエスパーでなければ理解できない質問書く奴も馬鹿だが、
エスパーでもないのに理解できたつもりになって回答する奴も同じぐらい馬鹿だと思うよ。

まあ俺もエスパーじゃないんだがあえて答えるとするなら、
エクセルのScreenUpdatingと同等のプロパティを持つコントロールはあるよ、って回答になるかな。

790 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 21:52:51 ]
>>789



791 名前:デフォルトの名無しさん mailto:sage [2006/12/30(土) 02:18:32 ]
>>765
コントロールの配置や再描画ならこの辺でいけたはず
つControl.Invalidate
つControl.Update
つControl.SuspendLayout
つControl.ResumeLayout

画像の話なら>>788でおkかと

>>789
エスパー向け質問ってのは"俺が理解できない質問"のことではないぞ
少なくとも俺は>>765の質問は簡潔で具体的だと思うが

792 名前:デフォルトの名無しさん [2006/12/30(土) 12:07:02 ]
>>791
お前さんも馬鹿だな。

偉そうに人に講釈たれたいなら、まずエクセルのScreenUpdate(正確にはScreenUpdatingだが)
の動作を調べてからにしたらどうだ。

ついでに言えば、具体的なのは妄想癖持ちのお前さんの脳が勝手に補完した妄想なのであって、
765の文章では決してないから。



793 名前:デフォルトの名無しさん mailto:sage [2006/12/30(土) 12:41:13 ]
>>792
わたしは>>791じゃないが、そこまで煽るほどの違いではないと思う






794 名前:791 mailto:sage [2006/12/30(土) 20:31:10 ]
>>792
すまん。確かにScreenUpdatingがどんなものか調べずに書いた。
ということで調べてみた

ttp://www.moug.net/tech/exvba/0010005.htm

SuspendLayoutでいいと思うんだけど問題ある?

ところでこの機会にエスパー向け質問の定義について教えてくれないか?
個人的には質問者が何をしたいのか文面からまったく読み取れないものだと思ってたんだけど。

795 名前:デフォルトの名無しさん mailto:sage [2006/12/30(土) 21:50:48 ]
>>794
>SuspendLayoutでいいと思うんだけど問題ある?
だからいいかどうかは質問者本人とエスパーにしかわからん。
たとえば次のコードのような場合はエクセルのScreenUpdatingに期待される機能と違う。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
With TextBox1
.SuspendLayout()
.AppendText("test" & vbCrLf)
End With
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
TextBox1.ResumeLayout()
End Sub

>ところでこの機会にエスパー向け質問の定義について教えてくれないか?
「自分自身の想像と妄想による勝手な補完」と、「文面に書いてあること」、
あるいは「相手が言わんとしていること」の区別が付かない君にそれを教えろって言われても
それは無理な相談だよ。

796 名前:デフォルトの名無しさん mailto:sage [2006/12/30(土) 22:13:48 ]
うるせー馬鹿

797 名前:デフォルトの名無しさん [2006/12/30(土) 23:11:47 ]
MenuSpritの区分線ってどうやって出すんだ・・・?

798 名前:デフォルトの名無しさん mailto:sage [2006/12/30(土) 23:46:30 ]
MenuStrip?
ならToolStripSeparatorをAddするだけっしょ

799 名前:デフォルトの名無しさん [2006/12/31(日) 00:01:31 ]
MenuStripでした・・。
選択項目の中にSeparatorは出せるんですけど、MenuStrip自体に下線を出したいんです。

800 名前:デフォルトの名無しさん mailto:sage [2006/12/31(日) 01:13:02 ]
「&」

801 名前:デフォルトの名無しさん mailto:sage [2006/12/31(日) 07:53:55 ]
くだらない質問かもしれませんが許してください

たとえば、TextBox1.textに変数を代入したいとして、この"1"の部分を
変数で指定することはできませんか?

802 名前:デフォルトの名無しさん [2006/12/31(日) 10:15:52 ]
>>801
formHOGE.Controls("TextBox" & Cstr(1)).Text

名前で呼ぶよりは、必要なコントロールの参照を別変数に抱えておけば?

dim textList as Dictionary(of String, TextBox)
textList.Add(TextBox1.name, TextBox1)
textList("TextBox1").text = "xxx"








803 名前:デフォルトの名無しさん mailto:sage [2006/12/31(日) 10:28:09 ]
>>802
説明ありがとうございます。助かりました。

804 名前:デフォルトの名無しさん mailto:sage [2006/12/31(日) 11:27:56 ]
>>802
結局名前をキーにしたら一緒だろ
配列使え

805 名前:デフォルトの名無しさん [2006/12/31(日) 11:41:27 ]
>>804
フォームだと、スプリットパネルなどを置いた場合に階層の上にコントロールがのるので。
最初の例はフォーム上においてるだけならOKだけど。
ディクショナリにしておけば、配列としても、名前アクセスも使えるし。

大体、入れるものが限定されてるのに普通の配列を使うメリットは?



806 名前:酔いちくれ ◆J0rwikii8c mailto:sage [2006/12/31(日) 11:50:34 ]
連想配列やHashMapやらわかってるのかね。

807 名前:デフォルトの名無しさん [2006/12/31(日) 11:58:27 ]
順序性を求めるならDictionaryを使わないよ、当然。
そこに引っかかってるの?いちいち。
どれつかったらいいなんて、ヘルプ見れば数分でしょ。
元質問に対してこんなんどう?って出しただけなのに。

808 名前:デフォルトの名無しさん mailto:sage [2006/12/31(日) 12:00:08 ]
>名前で呼ぶよりは、
>textList("TextBox1").text = "xxx"
ここだろ

809 名前:デフォルトの名無しさん mailto:sage [2006/12/31(日) 13:29:04 ]
>>806何が言いたい?

810 名前:最凶VB厨房 mailto:sage [2006/12/31(日) 17:09:02 ]
計算量じゃないか?

811 名前:酔いちくれ ◆J0rwikii8c mailto:sage [2006/12/31(日) 17:18:08 ]
>>809
非常に申し訳ない。

酔って寝てた。
自宅にフレームワークが1.1しかないから、検証もできない。

ただ、javaだと、HashTableとHashMapでは同期、非同期という
違いがある。

誰が見ても、可読性という意味で配列で
Private TextBoxes() As TextBox
とした方がいいと思う。

あと、メタ文字の使い方が変。

812 名前:デフォルトの名無しさん mailto:sage [2006/12/31(日) 17:38:25 ]
ますます意味がわからんな。

正直、この程度のこと実装にこだわるような類の問題とも思えないが。
機能的に等価であれば方法はなんでもいいだろ。
μSオーダーの周期でコントロールのプロパティ設定するわけでもなかろうにw

とはいえ、簡略的にとにかくインデックスでコントロールにアクセスできればいい、ってことなら
普通は配列使うだろうけどね。

コントロール名その他いろんな方法でもアクセスしたいとか、VB6のコントロール配列みたいに
イベントまでまとめて処理したいならクラスにまとめるだろうけど。



813 名前:デフォルトの名無しさん mailto:sage [2006/12/31(日) 17:40:58 ]
>>799
>>798

ただし自分でAddするコードを書く必要がある。
this.menuStrip1.Items.Add( new ToolStripSeparator() );

814 名前:デフォルトの名無しさん mailto:sage [2006/12/31(日) 18:23:24 ]
2005において、配列も集合クラスも大差ないのに、配列に拘る意味がわからん。

815 名前:デフォルトの名無しさん [2007/01/01(月) 13:05:16 ]
下のような変数宣言で型名を[]で囲んでいる、
ソースがあるのですが、どんな意味があるのですか?

Dim str As [String]



816 名前:デフォルトの名無しさん mailto:sage [2007/01/01(月) 14:23:07 ]
エスケープ識別子

っていうか、そんなレベルの質問してる時点であんたの才能知れたもの。
どうせ馬鹿なら正月ぐらいのんびりしてればいいのに。

817 名前:デフォルトの名無しさん mailto:sage [2007/01/01(月) 17:43:22 ]
でも、そこを囲む奴の考えも知れたものだね。
または超のつく偏屈野郎。

818 名前:デフォルトの名無しさん mailto:sage [2007/01/01(月) 18:43:33 ]
>>816
まだ生きてたの?
答えずに死ねよ。

819 名前:デフォルトの名無しさん mailto:sage [2007/01/01(月) 19:07:34 ]
正月なんだからVB厨同士仲よくしろよ


820 名前:デフォルトの名無しさん [2007/01/01(月) 20:11:45 ]
>>816
元旦早々、返信ありがとうございます。
こんな機能があったんですね。
>>817
MSDNのサンプルコードにあったもので。
Dns.Resolve メソッド

821 名前:デフォルトの名無しさん mailto:sage [2007/01/02(火) 02:03:21 ]
.focusを利用してテキストボックスのコントロール配列にフォーカスを
指定しても、実行後、設定されていません
テキストボックスではなくタブページにフォーカスが設定されてしまいます

考えられる原因としては何があるのでしょうか

822 名前:デフォルトの名無しさん mailto:sage [2007/01/02(火) 02:33:39 ]
日本語でおk



823 名前:デフォルトの名無しさん mailto:sage [2007/01/02(火) 02:37:23 ]
>>822
まだ生きてたの?
おまえは何も答えずに死ねよ。


824 名前:デフォルトの名無しさん mailto:sage [2007/01/02(火) 02:40:16 ]
821の追記ですが、
タブページ上にテキストボックスを貼り付けて、
そのテキストボックス配列にフォーカスを設定したいのです

825 名前:超初心者。 [2007/01/02(火) 05:59:23 ]
VB.NETの研修でオセロゲームを作成しました。
PLAYした感想を聞かせてください。
難易度は4段階。是非、超難しいを倒してみてください。

DLはこちらから↓
www.rupan.net/uploader/

NO 1102 Othello.exe オセロです。お借りします。

826 名前:デフォルトの名無しさん mailto:sage [2007/01/02(火) 06:21:29 ]
>>825
EXEだと?ふざけんな。ウィルスだったらどうする。
zipでソースを上げろ。コンパイルして走らせる。

827 名前:超初心者。 [2007/01/02(火) 06:44:09 ]
>>826
.zipにすることは全然可能ですけども、
ソースを晒すことは不可能です。

ウイルスじゃないのでご安心を。

828 名前:デフォルトの名無しさん mailto:sage [2007/01/02(火) 06:48:36 ]
(・∀・)カエレ!!

829 名前:超初心者。 [2007/01/02(火) 06:52:00 ]
>>826=828
しょぼいコードですが、ソースを晒す気は全くありません。
.exeとなっていますが、解凍が実行されるだけです。
その際も、解凍先を指定する際、一度止まります。
解凍した後は、オセロフォルダの中の
Othello.exeをダブルクリックして実行してください。

オープンソースではないというだけです。

830 名前:デフォルトの名無しさん mailto:sage [2007/01/02(火) 06:53:52 ]
つーかスレ違いだ
ほか池

831 名前:デフォルトの名無しさん mailto:sage [2007/01/02(火) 07:09:49 ]
>>829
ふざけんな死ね
スレ違いだ

832 名前:デフォルトの名無しさん mailto:sage [2007/01/02(火) 07:37:06 ]
それにしてもここまで醜悪なプログラムは見たことがないw

石の色を文字列でもってるとか、あまつさえHashtableに格納してるとか
ほとんど同じ処理の連番の関数が何個もあるわ、
盤の一枡ごとにPictureBoxつくって、おまけにHashtableで管理してるわ。



833 名前:最凶VB厨房 mailto:sage [2007/01/02(火) 11:24:34 ]
神にしてやられますた。
黒駒焼きは最悪だなw
まぁでも二回勝ったわ。
全部マス埋められてんのに、CPUがPASSしますってバグだろ。
ちょっとそのメソッド長いんじゃないか?w
なかなか楽しめたが、スレ違いだ。

834 名前:デフォルトの名無しさん mailto:sage [2007/01/02(火) 11:41:31 ]
MSDN のフォーラムでも聞いておりましたが、まだわかりませんでした。
こちらでもお聞きしますがよろしくお願いします。

実行時におけるコントロールのDragによるサイズ変更方法についてお尋ねします。
SplitContainerの場合は、同一コントロール内での間仕切り位置の変更という形、
またSplitterコントロールを利用する方法もDockingされたコントロール間の間仕切り
としての利用法はHelpにも書かれていました。

VB6.0では、例えばLabelコントロールなどを利用し、単独でサイズ変更したい
コントロールのBorderの一辺におき、それをDragすることでMouseの位置変更情報を
読み取り、その情報から該当のコントロールのサイズ変更を行なうといった方法を
使っておりました。

VB.NETまたはVB2005以降でもやはり上記のようにVB6.0で行なっていたような方法
による以外にはないでしょうか?

それとも、もっと楽にできる方法があればと思いました。
たとえばビルトインされているスマートな方法が実装されていたりするとだいぶ助かる
のですが、そういったものはすでにあるでしょうか。よろしくお願いします。


835 名前:デフォルトの名無しさん mailto:sage [2007/01/02(火) 21:12:09 ]
非常に手抜き
パネルの上にピクチャボックス乗せて
Private Sub PictureBox1_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles PictureBox1.MouseEnter
_OnCtrl = True
End Sub
Private Sub PictureBox1_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles PictureBox1.MouseLeave
_OnCtrl = False
End Sub
Private Sub Panel1_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles Panel1.MouseEnter
_OnPan = True
End Sub
Private Sub Panel1_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Panel1.MouseLeave
_OnPan = False
End Sub
Private Sub Panel1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseUp
_OnDrg = False
End Sub
Private Sub Panel1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseDown
If Not _OnDrg Then
_OnDrg = True
_PrvPnt = New Point(e.X, e.Y)
End If
End Sub


836 名前:デフォルトの名無しさん mailto:sage [2007/01/02(火) 21:14:04 ]
Private Sub Panel1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseMove
Dim _wk As Integer

If Not _OnCtrl AndAlso _OnPan AndAlso _OnDrg Then
_CurPnt = New Point(e.X, e.Y)
Console.WriteLine(_PrvPnt.ToString + " " + _CurPnt.ToString)

If _CurPnt.Y < PictureBox1.Top + PictureBox1.Height Then
_wk = Panel1.Width
_wk += _CurPnt.X - _PrvPnt.X
If _wk < 6 Then _wk = 6
If _wk > 480 Then _wk = 480
Panel1.Width = _wk
PictureBox1.Width = _wk - 5
Else
If _CurPnt.X < PictureBox1.Left + PictureBox1.Width Then
_wk = Panel1.Height
_wk += _CurPnt.Y - _PrvPnt.Y
If _wk < 6 Then _wk = 6
If _wk > 480 Then _wk = 480
Panel1.Height = _wk
PictureBox1.Height = _wk - 5
Else


837 名前:デフォルトの名無しさん mailto:sage [2007/01/02(火) 21:14:45 ]
_wk = Panel1.Width
_wk += _CurPnt.X - _PrvPnt.X
If _wk < 6 Then _wk = 6
If _wk > 480 Then _wk = 480
Panel1.Width = _wk
PictureBox1.Width = _wk - 5
_wk = Panel1.Height
_wk += _CurPnt.Y - _PrvPnt.Y
If _wk < 6 Then _wk = 6
If _wk > 480 Then _wk = 480
Panel1.Height = _wk
PictureBox1.Height = _wk - 5
End If
End If
_PrvPnt = _CurPnt
End If
End Sub


838 名前:デフォルトの名無しさん mailto:sage [2007/01/02(火) 21:17:53 ]
ってデバッグ用のコード抜き忘れたw
マウスカーソルの変更とかはどなたかよろしく

839 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 01:51:49 ]
>>835-838
ありがとうございます。これだけ書かれると大変でしたでしょうね。いろいろすみませんです。

しかし実際にやってみますとこれだけやってもまだ書き足してたくさん調整していかないと
いけないかと思いました。大変な量ですよね。

VB6のときはlabelのDragでやりましたが、あれでも最適化できるまで苦労しました。
VB2005になってもやっぱりこの辺の処理はまだ開発困難の部分かと思いました。

Microsoftが初めからControlクラスのメソッドに入れてくれていたらよかったのですが、
実際にそれはないわけですよね。

840 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 02:07:55 ]
必要になる事なんてまず無いしな

841 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 04:10:52 ]
コントロールを単独でサイズ変更するUIって何に使うの?

842 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 09:25:38 ]
フォームエディターみたいな画面を作るとか?
画面デザインをある程度カスタムできるとか?

まあ、企画壮大、実務未使用な画面のような・・・。




843 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 10:48:29 ]
Googleツールバーみたいにテキストボックスのサイズを変えるときとか。
まあそんなに悩むほどのコードじゃないがな

844 名前:839 mailto:sage [2007/01/03(水) 13:13:02 ]
大変どうもです。

>>840-843
こういう機能は確かにアプリケーションで使う使わないはありますね。

>>843
確かに一回でできてしまえばいいわけですが、いろんな調整も含めて
最適化するなどもあり数日以上掛かるとなると負担ではありました・・・







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<273KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef