2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

C♯相談室 Part8

1 :名無しさん♯:02/09/20 11:27

   ∧_∧____
  /(#゚ー゚) ./\
/| ̄∪∪ ̄|\/    C#,.NET関連の話題はこちらでどうぞ。
  |____|/
   ,,,,∪∪,,, ,,


ソース置き場.NET
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1003826049&rm=10

過去スレは>>2-5あたり

2 :名無しさん♯:02/09/20 11:27
過去スレ
Part7 http://pc3.2ch.net/test/read.cgi/tech/1027531796/
Part6 http://pc3.2ch.net/test/read.cgi/tech/1022257078/
Part5 http://pc3.2ch.net/test/read.cgi/tech/1019533942/
Part4 http://pc.2ch.net/tech/kako/1016/10165/1016597767.html
Part3 http://pc.2ch.net/tech/kako/1009/10094/1009473982.html
Part2 http://pc.2ch.net/tech/kako/1002/10024/1002468050.html
Part1 http://pc.2ch.net/tech/kako/977/977112364.html

3 :デフォルトの名無しさん:02/09/20 11:31
関連スレ

VisualStudio.NET (MSDN Dexlue) part6
http://pc3.2ch.net/test/read.cgi/tech/1024746501/l50

くだスレC#
http://pc3.2ch.net/test/read.cgi/tech/1023766485/l50

【老若】VB.net質問スレ【男女】
http://pc3.2ch.net/test/read.cgi/tech/1025848458/l50

managed C++ やろうぜ!!
http://pc3.2ch.net/test/read.cgi/tech/1014486422/l50

【Terrarium】4世代目 最終局面 決戦は金曜日♪
http://pc3.2ch.net/test/read.cgi/tech/1024319607/l50

フリーの.NET統合開発環境「SharpDevelop」
http://pc3.2ch.net/test/read.cgi/tech/1023727377/l50

消しゴムじゃない方のMONOを使ってみるスレ
http://pc3.2ch.net/test/read.cgi/tech/1020215602/l50

♯♯♯Shared Source CLI ♯♯♯
http://pc3.2ch.net/test/read.cgi/tech/1024222901/l50

4 :デフォルトの名無しさん:02/09/20 11:31
関連リンク

MSDN Online Japan
http://www.microsoft.com/japan/msdn/default.asp

Insider.NET
http://www.atmarkit.co.jp/fdotnet/

5 :デフォルトの名無しさん:02/09/20 11:57
C#でInt32やInt16をbyte型の配列に直すには
どうしたらよいでしょうか?



6 :デフォルトの名無しさん:02/09/20 12:10
>>5
System.BitConverterクラスを見てちょ。

7 :デフォルトの名無しさん:02/09/20 13:07
>>1
#タン おつかれ。サンスコ(・∀・)

8 :デフォルトの名無しさん:02/09/21 00:25
最近思うんだけど、
もしかしてC#ってすっげえマイナー言語?
けっこう勉強してるんだけど、
なんかVB.NETのほうがぜんぜん情報多い気が・・・

9 :デフォルトの名無しさん:02/09/21 00:27
>>8
すっげぇかどうかは知らないけど、今までVB使ってた企業はVB.NETを選択する傾向がある

10 :デフォルトの名無しさん:02/09/21 01:37
>>8
んー,今のところあんまり興味の対象になってないね。
次期Windowsが一般に知れ渡ってからじゃないと何とも言えんねぇ。

11 :デフォルトの名無しさん:02/09/21 10:36
1.1手に入れた人いる?
24時間経っても音沙汰なし・・・。(´・ω・`)

12 :デフォルトの名無しさん:02/09/21 10:43
>>8
C#によるWindowsPrograming

13 :デフォルトの名無しさん:02/09/21 11:08

C#.NETに出来て、VB.NETに出来ない事ってあるの?


14 :デフォルトの名無しさん:02/09/21 13:48
VBではポインタが使えないよ。

15 :デフォルトの名無しさん:02/09/21 13:50
もう少し正確に書くとunsafeがありません。

16 :デフォルトの名無しさん:02/09/21 14:56
>>14
>>15
大したアドバンテージじゃないんだね。


17 :デフォルトの名無しさん:02/09/21 15:12
正直、VB.NETがどうだとかは興味ないな。

18 :デフォルトの名無しさん:02/09/22 16:05
VBは.NETになってからやたらとコードが冗長な感じで見づらいなぁ。
VB.NETの情報でも、固有の言語というより.NET共通の情報って感じだから、
読み替えればC#で情報不足になるということはないかも。。。

19 :デフォルトの名無しさん:02/09/23 03:19
  ∧_∧∩
  ( ´∀`)/
___∧__________
先生!
この3冊の中で一番の良書はどれですか?
http://www.amazon.co.jp/exec/obidos/ASIN/0735613702/qid=1032718065/sr=1-1/ref=sr_1_2_1/249-5069299-9164317
http://www.amazon.co.jp/exec/obidos/ASIN/0735615845/qid=1032718065/sr=1-3/ref=sr_1_2_3/249-5069299-9164317
http://www.amazon.co.jp/exec/obidos/ASIN/0130461334/qid=1032718065/sr=1-4/ref=sr_1_2_4/249-5069299-9164317

20 :19:02/09/23 04:07
一番下のを注文しちゃいました・・・

21 :デフォルトの名無しさん:02/09/23 04:39
>>19

一番上のは持ってるが、極めて良書であると思う

22 :21:02/09/23 04:44

3番目のも良さそうだね。オレも注文しようかな

23 :デフォルトの名無しさん:02/09/23 10:08
VB.NETで出来るような仕事ばかりじゃなくてC++やJAVAやらCも
あるから書き方の特異なVB.NETは避けてC#にしてます。


24 :デフォルトの名無しさん:02/09/24 12:32
>>19-22
みんな、スゲー
厨な漏れはこれ
http://www.amazon.co.jp/exec/obidos/ASIN/4891002921/qid=1032838252/sr=1-3/ref=sr_1_2_3/249-2191874-2379561

25 :デフォルトの名無しさん:02/09/24 21:03
ん〜俺としては
http://www.amazon.co.jp/exec/obidos/ASIN/4891003030/ref=pd_bxgy_text_2/249-5241675-3211568
がやっぱお勧め。

26 :デフォルトの名無しさん:02/09/25 00:19
こういうのも出てるんだね。
http://www.amazon.co.jp/exec/obidos/ASIN/4774115533/

27 :デフォルトの名無しさん:02/09/25 01:38
http://www.microsoft.com/japan/msdn/columns/csharp/csharp04192001.asp
にある「起動順序をより厳密に制御する場合、・・・・」
みたいなことがたっぷり書いてある本が欲しいなぁ。

28 :デフォルトの名無しさん:02/09/25 15:27
質問です。
StreamWriterのClose時(Flush時)時にディスクの容量が
いっぱいだった場合に例外が発生ししますが、Catchしたあとに
OpenしっぱなしのStreamWriterはどのように処理すればよいのでしょうか?
コードは以下のような感じです。

FileStream fs = null;
StreamWriter sw = null;
try
{
fs = new FileStream("a:/nanashi.txt", FileMode.Create);
sw = new StreamWriter(fs);
for (int i = 0; i < 100; i++)
sw.Write("nanashi");
}
catch (Exception er)
{
//とりあえずなにもしない
}
finally
{
if (sw != null)
sw.Close(); //ここで例外発生

if (fs != null)
fs.Close();
}

29 :デフォルトの名無しさん:02/09/25 17:16
SqlCommandBuilderなるものを今日はじめて知った。これは便利だね・・・。

30 :デフォルトの名無しさん:02/09/25 18:46
>>29
DataSetの自動生成とSqlCommandBuilderを使えばEntityBeanみたいな感じで扱えるね。

31 :デフォルトの名無しさん:02/09/25 19:52
>>28
漏れもそれで困って色々と調べたんだが、、
フラッシュしないでオブジェクトを破棄したいができないよね。
ワーカースレッドでの処理でそんな状態が起こった時、
気づかずにアプリケーション終了してプロセスが残ったりする危険なことになっちゃう。
結局、HDD開けくれって警告出すしかないのかなぁ。

32 :デフォルトの名無しさん:02/09/25 20:19
.NET Framework 1.1βキタ━━(゚∀゚)━━ !!!!





33 :デフォルトの名無しさん:02/09/25 20:58
>>32
漏れはZip Codeも書いてくれっていうメールが来た。(´・ω・`)ショボーン

34 :デフォルトの名無しさん:02/09/26 03:42
1.1でライブラリはどれくらい変わったの?

35 :デフォルトの名無しさん:02/09/26 08:09
> finally
> {
> if (sw != null)
> sw.Close(); //ここで例外発生
>
> if (fs != null)
> fs.Close();
> }

これってさあ、fs.Close()する意味あるの?
sw.Close() って元になるストリームを閉じるためのものじゃないの?

「現在の StreamWriter と基になるストリームをクローズします。」
と書いてあるんだけど。俺はだまされてるのか?

36 :デフォルトの名無しさん:02/09/26 08:48
>>35
あなたが正しい。

37 :28:02/09/26 08:50
>>31
>>35
31さんのおっしゃっているように、
「フラッシュしないでオブジェクトを破棄したい」ってことが結局やりたい
んですよね。(Closeする時にFlushしてしまう。)
Closeしないでそのまま放っておくと、プロセスが開いたままなので何かと
やばいとおもうんで。

破棄するなんか良い方法ないですかね?


38 :デフォルトの名無しさん:02/09/26 12:39
IEコンポーネントを使うと下の2つのDLLが生成されます。

AxInterop.SHDocVw.dll
Interop.SHDocVw.dll

当然のようにこいつらがないとEXEファイル単体では動きません。
正直EXEファイルと同じディレクトリにDLLが散らばってるのは
気に入らないので何とかしたいんですが。

理想としてはEXEファイル1ヶでアプリを完結させたいです。
環境はVisual C#.NETです。


39 :デフォルトの名無しさん:02/09/26 12:45
>>38
aximp.exe には /source オプションがあるからソースだけ取り出せるけど、
tlbimp.exe にはないからどうしても Interop.SHDocVw.dll だけは別にするしかないみたいね。

40 :デフォルトの名無しさん:02/09/26 12:50
>>38
namespace MyApp
{
[ComImport]
[Guid("64AB4BB7-111E-11D1-8F79-00C04FC2FBE1")]
public class ShellUIHelper{}

[ComImport]
[InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)]
[Guid("729FE2F8-1EA8-11D1-8F85-00C04FC2FBE1")]
public interface IShellUIHelper
{
void AddFavorite( [In, MarshalAs(UnmanagedType.BStr)] string URL, object Title);
}
}
とか?

41 :38:02/09/26 12:54
>40
うわ、さっぱり分からん。
決定的に勉強不足のようです。
週末にでもペゾルト本買いに逝ってきます。

42 :デフォルトの名無しさん:02/09/26 13:20
>>37
ん〜 どうしても見つかんないね。なんでないんだろうね。
Finalize はprotectedだし、、、
結局HDDが一杯でCloseできないとき、それをエラーとしてフラグたてといて
エラーがある時にアプリ終了する場合
System.Diagnostics.Process process = System.Diagnostics.Process.GetCurrentProcess();
process.Kill();
とかしてアプリ強制終了とかするしかないかもね。
それか、HDD空けてくれるまでアプリの終了を拒否するとか、、、・゚・(ノД`)・゚・


43 :デフォルトの名無しさん:02/09/27 00:26
ここで何回か紹介されている黄色本をネットで注文して、今日
本が来たんだけど、カバーがオレンジ色になってた。
色が変わったのかな。
カバーの色なんてどうでもいいんだけど、荷物を開けた瞬間違
う本が間違って送られてきたのかと思ったよ。

44 :デフォルトの名無しさん:02/09/27 01:46
プロファイリングしてて気づいたんだけど、
ArrayList(ほかのも?)の foreach って結構オーバーヘッドが大きいんだね。
頻繁に呼ばれるところだと for でぐるぐる回したほうがよさそうなんだけど、どうなの?

45 :デフォルトの名無しさん:02/09/27 02:09
>>44
ILコード見て比較してみれ。forの方が単純で速い。

46 :デフォルトの名無しさん:02/09/27 02:33
寝ようと思ったら1.1βのメールキタ━━━━━━(゚∀゚)━━━━━━ !!!!!
でも明日にするか・・・。(´・ω・`)

47 :デフォルトの名無しさん:02/09/27 02:39
>>46
俺んとこにもメール来た
キター!!と思って見たらKlezだったよ・・・・(´д`;)

48 :デフォルトの名無しさん:02/09/27 03:11
>>47
落差にワラタ。すまん。

49 :デフォルトの名無しさん:02/09/27 13:53
1.1入れてみたけど、変わり具合は地味ですな・・・。

50 :デフォルトの名無しさん:02/09/27 14:38
1.1でWebBrowser(shdocvw.dll)のBeforeNavigate2イベントちゃんと直ってる。
キタ━━━━━━(゚∀゚)━━━━━━ !!!!!

51 :デフォルトの名無しさん:02/09/27 15:08
ListViewコントロールの詳細表示で特定の列だけサイズ変更を禁止するには
どうすりゃええんじゃろか。

関係ありそうなイベントに引っ掛けてサイズを再設定すりゃいいかと思ったが
どうにもうまくいかんのじゃよ。


52 :デフォルトの名無しさん:02/09/27 15:19
>>51
MinSize、MaxSize、Sizeを同じ値にすればいいんじゃないの?

53 :デフォルトの名無しさん:02/09/27 15:33
>52
ところがどっこいColumnHeaderクラスにはそれらのプロパティがないのじゃよ。
サイズ関連であるのはWidthだけでな。

54 :デフォルトの名無しさん:02/09/27 20:09
>>28 
ガイシュツならスマソ。

その手のリソースの明示的な開放が必要クラスは、
大概System.IDisposableインターフェースをサポートしているよ。
だから、こんな感じでいいんじゃない?(動作確認してない。スマソ)

try
{
using (FileStream fs = new FileStream("a:/nanashi.txt", FileMode.Create))
{
  using (StreamWriter sw = new StreamWriter(fs))
{
sw = new StreamWriter(fs);
for (int i = 0; i < 100; i++)
sw.Write("nanashi");
}
}
}
catch (Exception er)
{
//必要に応じて例外処理
}

usingブロックからスコープから外れたら(例外発生を含む)、
オブジェクトのDisposeメソッドが自動で呼ばれて、
マネージドリソース、アンマネージドリソース両方開放されるはずだよ。

usingステートメントは地味だけど、とても便利なステートメントだ。
http://www.microsoft.com/japan/msdn/library/ja/csref/html/vclrfusingstatement.asp?frame=true

55 :54:02/09/27 20:12
アレー 
ソースの字下げが消えてる。
なんでた?
もいっっちょ。(今度は全角スペースで字下)
try
{
 using (FileStream fs = new FileStream("a:/nanashi.txt", FileMode.Create))
 {
  using (StreamWriter sw = new StreamWriter(fs))
  {
   sw = new StreamWriter(fs);
   for (int i = 0; i < 100; i++)
   sw.Write("nanashi");
  }
 } 
}
catch (Exception er)
{
 //必要に応じて例外処理
}


56 :デフォルトの名無しさん:02/09/27 20:39
ドットNet用のグラフコンポーネントのトライアル版を見つけたの
ですが、SDKでの使い方が全く分かりせん(涙)
ttp://www.softwarefx.com/GetChartFXLite/
でトライアル版をダウンロードしてセットアップ?したのですが
説明では(Windows Formで使う場合)
Deploying Chart FX with your Windows Forms applications

Chart FX consists of several compiled assemblies that must be redistributed along with your application. This assembly (DLL) does not require registry entries and can be copied to the application's directory.

登録とか必要ないと読み取れるのですが、
ドットNet専用のコンポーネントの使い方の基本が理解出来ていません
どなたかこのグラフコンポーネントはSDKから使用している方いません
でしょうか?


57 :デフォルトの名無しさん:02/09/27 20:40
>>56
コンパイルオプションに r:DLL名 とかでないの?

58 :デフォルトの名無しさん:02/09/27 20:41
そのDLLを参照に追加してみるのが最初の一歩だと思った

59 :デフォルトの名無しさん:02/09/27 20:51
アセンブリってexeにスタティックリンクに出来ないのかな?
既出かな。。

60 :デフォルトの名無しさん:02/09/27 21:14
>>54
28じゃないけど同じことで困ってた者です。
using忘れてました。鬱。
確かにDisposeが呼ばれるのでワーカースレッドでその状態が起こった時に
アプリを終了してプロセスが残るといったことは無くなりました。
ありがとう(・∀・)

でもやっぱりその場でファイル閉じてないのでアプリ終了するまで
ファイルをロックしっぱなし、、鬱。


61 :デフォルトの名無しさん:02/09/27 22:16
56です。
57,58,59さんどうもありがとうございます。
/r:****.dll指定で取りあえず使えそうです。
ドットNet専用コンポとCOMなどの違いがまだ
よく分かってないから頭ん中ごちゃごちゃです。(汗)

62 :59:02/09/27 22:48
59のは56へのレスではなくて新規の質問なのでした。
紛らわしくてすみませぬ。

SDKではなくてVS.NETを使っているけれど、ライブラリ アセンブリ
をexeに含める方法がわからないです。最初からDLLになっているし
無理なのですかね…。

63 :59:02/09/27 22:59
マルチファイル アセンブリというのがそれなんでしょうか?
C#の場合はコマンドラインでしか出来ないんですね。
っておそらく既出なんだろうなぁ…。

64 :デフォルトの名無しさん:02/09/27 23:06
オレも >>59 と同じように1つのexeにしたいと思ってたけど
ずっと方法がわからず…。

65 :デフォルトの名無しさん:02/09/27 23:08
>>63-64
残念ながら、ソースがない限り1つの.exeにまとめることはできません。

66 :デフォルトの名無しさん:02/09/27 23:18
>>65
あ,やっぱりそうなの?
俺もそうかなーって思ってたけど自信無かったから言わなかった。

67 :デフォルトの名無しさん:02/09/27 23:29
>>65
そうなんだ、どうもありがとう。
dllにした自作コントロールでツールボックスからD&Dして、
このdllを参照設定からはずして、dllのソースを追加で
exeのみになるようだからこれでガマンします。

68 :デフォルトの名無しさん:02/09/27 23:29
原理的に出来ないわけじゃないけどね(出来ない場合もあるが)
そういうツールって需要あるのかな?

69 :デフォルトの名無しさん:02/09/27 23:31
リリースするときにひとつにまとめたい、とかいう需要はあるかも

70 :デフォルトの名無しさん:02/09/28 03:25
別のスレッドでも質問したのですが、
はかばかしい回答が得られなかったので、
こちらに書かせていただきます。

C#とCOM(C++)の相互運用の問題です。

void SomeClass::AAA(VARIANT FAR* var);
という関数をVS.netにインポートしたところ
SomeClass {
void AAA(ref Object obj){}
}
となりました。

これを以下の通り使用すると「種類が一致しません」
という例外が発生してプログラムが中断してしまいます。

Byte b; // 上記のVARIANT型はcharとしてつかわれているので、
Object obj = b;
AAA(ref obj); // ここで例外が発生します。

この関数はVARIANT型のポインタを渡して
値を取得するものです。同じような関数が複数あり
大変困っています。どうかよろしくお願いします。



71 :デフォルトの名無しさん:02/09/28 05:17
>>67
お、こうすれば出来ますね。ありがとう。
でもそのソースが使っている参照の追加は当然必要…。
参照を右ドラッグでコピー出来たらいいなぁ。

自作コントロールのDLLは参照設定から消さなくても、
ローカルコピーのプロパティをFalseにするだけでよさそう。
知ってたらスマソ。

72 :デフォルトの名無しさん:02/09/28 13:25
外の比較的マイナーな文学作品を翻訳出版する
小さな出版社がある。そして文学ファンはこういった出版社を
潰さないため、今後も翻訳を続けてもらうために
1人で同じ本を2・3冊買うことが良くある。

我々もこういう時だからこそDelphi7を買って
ボーランドを支えるべきなんじゃないだろうか。
Delphi7の売り上げはDelphi8以降の開発資金となるし、
ボーランドジャパンの今後に大きな影響をもたらすだろう。

Delphi7の出来のみを云々するのは
あまりにも近視眼的ではないだろうか?


73 :デフォルトの名無しさん:02/09/28 13:26
>>72
このスレにまで貼り付けんな。(ワラ

74 :デフォルトの名無しさん:02/09/28 13:46
なぜ72はこんなスレをつけるのか。

その謎は以下のスレに...
http://pc3.2ch.net/test/read.cgi/tech/1031668744/536-538

ここにかかれている内容を信じるかどうかはあなた次第。
Delphi7 を注文してしまった人は、すぐに答えが出るでしょう。



75 :デフォルトの名無しさん:02/09/28 16:47
以上、Del厨の自爆テロでした。

76 :デフォルトの名無しさん:02/09/28 17:19
>>72
72の書き込みによりDelphiの人気がさらに下がりました。

77 :デフォルトの名無しさん:02/09/29 13:11
.NETテクノロジー発売あげ

78 :デフォルトの名無しさん:02/09/29 13:44
Version 1.0 to Version 1.1 API Changes Document (ZIP File)
http://www.gotdotnet.com/team/upgrade/v1.1/v1.0tov1.1changes.zip

79 :デフォルトの名無しさん:02/09/29 14:16
コントロールを配列化するにはどうすればいいのですか?
VB6.0ではコントロールをコピぺすると配列にしますか?
って聞いてきた気がするのですが。



80 :デフォルトの名無しさん:02/09/29 14:17
質問ですが、
Cを大体マスターしたのですが、あまりにも生産性が低いため次の言語へ
いきたいと思います。
C#なんかよさそうだと思ったのですが、C++を1秒もやらずにC#を習得することは
現実的でしょうか。
C#はC++を改良したものだそうなので、どうしてもC++をやるのが無駄に見えてしまうのですが、
C++をやっておいたほうがよいのでしょうか。それとも、まったくの無駄足になるのでしょうか。

81 :デフォルトの名無しさん:02/09/29 14:23
○○をやるのは無駄でしょうか?とか言うやつにプログラム上達は無理。
C#にそのまま行っていいと思うけど、多分君はCをマスターはしていない。

82 :デフォルトの名無しさん:02/09/29 14:45
>>79
手作業でControl[]型の変数に代入

83 :デフォルトの名無しさん:02/09/29 14:46
(・∀・)カコイイ!
http://www.shuwasystem.co.jp/cgi-bin/detail.cgi?isbn=4-7980-0397-2

84 :デフォルトの名無しさん:02/09/29 15:26
>>83
どこがw

85 :デフォルトの名無しさん:02/09/29 15:37
>>83
おお。(w
日本的ですなあ。

86 :デフォルトの名無しさん:02/09/29 16:33
プロパティの値を設定、または取得するデリゲートって作れないんでしょうか。

delegate bool GetBooleanValue();
GetBooleanValue m = new GetBooleanValue( obj.get_BooleanProperty );

なんて直接 get アクセサを呼んでもコンパイルとおりませんし。

メソッドを一枚かませればすみますが、使用するオブジェクトとプロパティの数だけ必要になるし、
リフレクションでは実行時まで問題が見つけにくくなってしまいます。

87 :デフォルトの名無しさん:02/09/29 16:52
>>86
C#・VB.NETではダメで、VJ#ではできるみたいね。

88 :デフォルトの名無しさん:02/09/29 17:02
>>87
JScript.NETでもできますた

89 :86:02/09/29 21:06
無理っぽいですかねぇ。
何とかなりません?>MSさん

そういえばMC++だと任意の名前のインデックス付きプロパティがサポートされてるっぽいのに C# では this[] だけ
C# って .NET 最強じゃなかったの(;д; )

90 :デフォルトの名無しさん:02/09/29 22:56
>>78
おぉ〜1.1でフォルダ用ダイアログが用意されたねー。
System.Windows.Forms.FolderBrowserDialog


91 :デフォルトの名無しさん:02/09/29 23:07
System.Windows.Forms.ApplicationクラスのEnableVisualStyles()も気になる。

92 :デフォルトの名無しさん:02/09/29 23:17
>>91
.manifestがなくてもXPスタイルになっていい感じ。
ただし、FlatStyle.Systemは必要。

93 :デフォルトの名無しさん:02/09/30 00:10
1.1で盛り上がっているところ申しわけないのですが質問です。
親ウィンドウと子ウィンドウがあって、両方表示している時、
どんな時でも、子ウィンドウの上に親ウィンドウを表示しておきたいのですが
どうすればいいでしょう?
TopMostは他のアプリケーションの邪魔になるので避けたいのですが、、、
よろしくお願いします。

94 :デフォルトの名無しさん:02/09/30 02:42
> どんな時でも、子ウィンドウの上に親ウィンドウを表示しておきたいのですが
> どうすればいいでしょう?

親子関係と所有関係を混同してる。とりあえず、君の言う親と子の関係を
反対にしたら

95 :デフォルトの名無しさん:02/09/30 03:04
>>94
そうですね。混同してました。すいません。逝ってきます、、、
所有関係逆にすると今度はフォーム操作の連動(最小化など、、)が、
逆になってしまい、希望する動作になりません。
メインで使用するフォームを常に上に表示しながら、フォーム操作の連動も
メインで使用しているフォームに、たまにしか使わないフォームを連動させたいんですが、、
無理なんでしょうか。やっぱり。

96 :デフォルトの名無しさん:02/09/30 03:10
>>93
BringToFront()、SendToBack()は?
どんな時でもってことで工夫、常にこのメソッドを意識する必要があるが。

97 :デフォルトの名無しさん:02/09/30 09:25
>>93
後ろにあるFormのOnActivate(EventArgs e)で
前に出したいFormをActivate()してやれば?

98 :デフォルトの名無しさん:02/09/30 10:05
.NET1.1でSystem.EnterpriseServicesの変更が多いけど、これってCOM+1.5対応なのかな?

99 :デフォルトの名無しさん:02/09/30 17:57
>>98
Right. SWC is gonna be great!

100 :デフォルトの名無しさん:02/09/30 19:09
Services Without Components でつか?

101 :デフォルトの名無しさん:02/09/30 23:53
WindowsFormアプリの配布に関して詳しく解説しているページって知りませぬか?
イントラ限定で、小物配布するのに、exeをIISの仮想フォルダに置いてみたら、
クライアント側のセキュリティ設定触る必要あったりで色々試行錯誤中です。

MS謹製のオートアップデータコンポーネントなんか良さげだけど、
英語読むのタリーから和訳欲しい (゜д゜)

102 :デフォルトの名無しさん:02/10/01 00:36
>>101
がんばれ、このスレ及び、VB.NETすれのみんなが応援してる。
よい結果報告をすれば君は英雄だ。

103 :デフォルトの名無しさん:02/10/01 15:08
長いループ中にボタン等が押せなくなったりするのを防止
する為にDelphiにはApplication.ProcessMessagesがあり
ますがC#ではどのようにするのでしょうか?





104 :デフォルトの名無しさん:02/10/01 16:32
STLのVectorに似ているのはArrayListだと思うのですが、
ArrayList使いの詳しい方で分かる人いたらお願いします。
SDKのみなので間違っているかもしれませんが、
このクラスにはSizeとかResizeというプロパティやメソッド
がないようなのですが、要素数をサッと変えるプロパティ
やメソッドはないのでしょうか?Countはリードオンリーで
すし、Addメソッドでぐるぐるやるしかないでしょうか?
初心者向けなのでくだスレかどちらか迷ったけどこちらに
書きました。

105 :デフォルトの名無しさん:02/10/01 16:56
>>104
RemoveRange,AddRange ぐらいしか思いつかん。



106 :デフォルトの名無しさん:02/10/01 17:13
>105
104です。最初自分もAddRangeとか使うのかなとか
いろいろ試したのですが、AddRangeはちょっと意味
が違うようですね。TrimToSizeはCapacityを合わせる
だけみたいですし・・やっぱりないみたい。
STLは極楽だったんですね。

107 :デフォルトの名無しさん:02/10/01 20:07
>>103
Application.DoEvent()では?

108 :デフォルトの名無しさん:02/10/01 20:11
>>106
Resize は欲しいけど、ないみたいだから
減らすなら RemoveRange、
増やすなら AddRange( new type[ newSize-arrayList.Length ] )
で我慢

109 :デフォルトの名無しさん:02/10/01 23:04
>>104
STLを知らないのではずしまくってるかもしれないけど、
Capacityプロパティじゃだめ?
#Size、Resizeを調べてみて容量の変更と思ったんですが

110 :デフォルトの名無しさん:02/10/01 23:53
>>109

いや、capacityはstlにもあるだろ
そうじゃなくて ようは一気に要素を追加してなんかの値で初期化したいって
ことだろ

addでぐるぐるするのが一番じゃねーの? そんな手間でもないと思うけどなぁ。
俺はそんなに頻繁に使うようなシチュエーションがないので、ありゃ便利程度
にしか思えないが、必要ならarryalist継承してsize resizeを実装すりゃいいんじゃ
ないの?

111 :デフォルトの名無しさん:02/10/02 00:03
>108さんレスありがとう
AddRange( new type[newSize-arrayList.Length])
うう、いまいち分からない。
んんん?もしかしてnew double[10]とかにして
配列を入れるって事?
なんかこれで行けるみたい。でもこのやり方
すぐに思いつくなんて凄いなぁ

でもやっぱりResizeなりSizeなりのプロパティは
欲しいっすよね。
しかもArrayListってコンストラクタではCapacityの
設定しか出来ないっすよね?
ArrayListを継承してClearAndResize(int _size)などの
メソッド付け足して拡張型ArrayList作るってのも
ありでしょうかね。

>109
Capacityは要素数ではなくて可能容量の決定だから
ちょっと違いますね。
STLはホントによく出来たライブラリで感動ものです。
まぁ逆に使いすぎでバグたくさんってパターンもあり
えますが。



112 :デフォルトの名無しさん:02/10/02 00:23
>110
そうです。よく分かっていらっしゃる(笑)
> addでぐるぐるするのが一番じゃねーの? そんな手間でもないと思うけどなぁ。
そうです。手間じゃないからこそResizeやコンストラクタ(サイズ)とか
付けておいて欲しかったって事です。Resizeは普通あるはずだーとか思い込んで
探したりしてれば時間かかるし(^^;)

> にしか思えないが、必要ならarryalist継承してsize resizeを実装すりゃいいんじゃ
> ないの?
う、アップする前に書かれてしまった。
Delphiやってた時は配列本体まで独自で作ってていろんなメソッド付けて
工夫してやった後にC++へ行ったらSTL見つけて「ガーン。これりゃ独自に作っ
たのでは勝てんわー楽チン楽チン」なんて喜んでました。
どーせalgorithmみたいなものも欲しくなるから
継承しないでArrayListToolクラスとか作ってメソッドで対処するって手もありますね。


113 :[]:02/10/02 12:09
>>107
助かりました。ありがとう。

114 :デフォルトの名無しさん:02/10/02 13:56
マネージドコードで書かれたプログラムはフレームワークに
バグが無い限り、バッファオーバーフローしないって聞いたの
ですが、本当でしょうか?



115 :デフォルトの名無しさん:02/10/02 15:57
>>114
別にマネージドで無くても、ポインタ演算が無くて、配列のアクセス時にチェックしてくれる環境なら
バッファオーバーフローは無いと思いますが…とりあえず回答はTrue

116 :デフォルトの名無しさん:02/10/02 16:43
C#でjavaのJtableクラスみたいなものはないでしょうか?
ListViewクラスは使いづらいのでいやなのです。



117 :デフォルトの名無しさん:02/10/02 22:05
DLLを動的にリンクするにはどうすればいいのでしょうか?
下記のようなイメージでプログラムの状態によって2つのdll
を使い分けたいのですができますでしょうか?
if (a == 1) {
dllimports("hoge1.dll");
} else {
dllimports("hoge2.dll");
}


118 :デフォルトの名無しさん:02/10/02 22:10
そのdllはOnCLR?普通の?

119 :117:02/10/02 22:20
C#で作ったDLLを使い分けたいと考えています。

120 :無知:02/10/02 22:33
じゃあReflectionでやってくだちぃ

121 :デフォルトの名無しさん:02/10/02 23:32
利用者の言語は何?

122 :デフォルトの名無しさん:02/10/03 02:59

●●●●●●●●「オセロさえ納期内に作れない=OO役立たず 」祭り●●●●●●●
/|         |  |_____ΦΦΦΦΦΦΦΦΦΦΦ||ΦΦΦ
  |         |  | ̄ ̄ ̄ /|                    ||
  |         |  |   / /|TTTTTT   TTTTTTTTTT||TTTTT
  |        /\ |  /|/|/|^^^^^^ |三三| ^^^^^^^^^^^||^^^^^^^
  |      /  / |// / /|
  |   /  / |_|/|/|/|/|
  |  /  /  |文|/ // /
  |/  /.  _.| ̄|/|/|/         Λ_Λ
/|\/  / /  |/ /           (___)
/|    / /  /ヽ            /〔 非OO 〕〕つ
  |   | ̄|  | |ヽ/l            `/二二ヽ
  |   |  |/| |__|/   Λ_Λ     / /(_)
  |   |/|  |/      ( ´∀`)   (_)    Λ_Λ
  |   |  |/      // /  ^ ̄]゚        (`   )
  |   |/        ゚/ ̄ ̄_ヽ         ⊂〔〔 非OO 〕


123 :デフォルトの名無しさん:02/10/03 03:08
>>96
遅レスごめんなさい。
試してみましたが、所有関係があるとダメみたいでした。


124 :デフォルトの名無しさん:02/10/03 10:06
>>123

所有関係や親子関係は z-order を決めているので臨時に変更するのは
できるのかね?

125 :デフォルトの名無しさん:02/10/03 18:23
http://www.shoeisha.com/mag/vbm/info2.asp
Dotnetマガジンに変わったんだってね(既出?)

見てみたけどVBマガジンのままで良かったような内容でした。
もしくはVB.netマガジンかな。

ここのスレの人は何か雑誌かってんの?

126 :デフォルトの名無しさん:02/10/03 18:34
第三者認証機関によるサーバー認証でHTTPS(SSL)を使用して
通信を行う方法についてサンプルソースなどありましたら
教えてください。
ついでに第三者機関を使用しない独自のものについても
お願いします。

127 :デフォルトの名無しさん:02/10/03 18:59
http://www.nait.org/jit/jit.html

128 :デフォルトの名無しさん:02/10/03 19:00
マチガイタ

129 :デフォルトの名無しさん:02/10/03 20:58
C#.NETでソリューションとかプロジェクト開くのに恐ろしく時間がかかることが
あるんだけど何でかな。つーか今まさにこれまでになく時間がかかってて
タスクマネージャで見ても応答なしで困ってるところ。
バックアップからソリューション丸ごとバックアップしたりするとこの現象に
遭遇するような気がする。

130 :デフォルトの名無しさん:02/10/03 20:58
質問なのにsageちまったよ。


131 :デフォルトの名無しさん:02/10/03 22:56
.sln に対応する .suo と .ncb を消してみるというのはどうか

132 :デフォルトの名無しさん:02/10/04 00:23
Refrectionを使って生成したオブジェクトをUnboxingできないのですが
どうしてでしょうか?なんか技があるんですか?
object o = t.InvokeMember("", System.Reflection.BindingFlags.CreateInstance, null, null, new Object[0]);
hoge = (Hoge)o;

コンパイルは通るのですが、指定されたキャストは有効ではありません。
という例外が発生します。
デバッガで見る限りoはHogeクラスのオブジェクトのようです。


133 :デフォルトの名無しさん:02/10/04 00:32
C#からたとえば
unsigned long foo(char* bar);
のようなCの関数を持ったdllで、barにNULLが入りうる場合
(NULLを与えるか、通常の文字列を与えるかで処理内容が変わる関数
を呼び出したい場合)にはどうしたらいいのでしょうか。

public static extern ulong foo(
[MarshalAs("unmanagedType.PTStr")]
string barString);
として、
foo(null);
とかしても、大丈夫なんでしょうか。
stringのnull -> (char*)NULL
にマーシャリングしてくれるもんなんですか?

134 :デフォルトの名無しさん:02/10/04 01:05
>>132
o.GetClass(だっけ?)は何を返す?

135 :132:02/10/04 07:17
System.Console.WriteLine(o.GetType().ToString());
からはHogeを返します。

136 :132:02/10/04 07:48
すいません。間違いました。
System.Console.WriteLine(o.GetType().ToString());
からはHogeHogeを返します。
HogeHogeとHogeは継承関係にあり、Hogeが基底クラスになっています。

137 :デフォルトの名無しさん:02/10/04 08:06
http://www.microsoft.com/downloads/release.asp?ReleaseID=43360
http://www.microsoft.com/downloads/release.asp?ReleaseID=43361
http://www.microsoft.com/downloads/release.asp?ReleaseID=43363

138 :デフォルトの名無しさん:02/10/04 18:32
アゲ

139 :Yos:02/10/04 20:02
C#製プログラムを.NetFrameworkの適用なしに、
インストールせずに、
ファイルのコピーで、
実行ファイルを動かすことはできるのですか?

普通はできないと思いますが、何か解決策はあるでしょうか。

140 :デフォルトの名無しさん:02/10/04 20:09
>>139

ありません。って、某MLで回答もらったでしょ?

141 :デフォルトの名無しさん:02/10/04 20:50
C#でアクティブなアプリケーションの切替え実行したい
(Alt+Tabでできる操作を実行したい)のですが
どうやってやればよいのでしょうか?

142 :デフォルトの名無しさん:02/10/04 21:35
>>136
つまらないことだけど、それはUnboxingじゃなくてDownCastだね。

143 :デフォルトの名無しさん:02/10/04 22:20
>>139 大久保陽司 さん

> あるサードパーティのコンポーネントを使ったプログラムを、
> そのラインタイムをインストールせずに、
> ファイルのコピーで、
> 実行ファイルを動かすことはできるのですか?
>
> 普通はできないと思いますが、何か解決策はあるでしょうか。

と同じです。

144 :デフォルトの名無しさん:02/10/04 23:55
NUnit V2.0
http://sourceforge.net/project/showfiles.php?group_id=10749&release_id=114369

145 :デフォルトの名無しさん:02/10/05 01:07
>>1

146 :デフォルトの名無しさん:02/10/05 01:41
/|         |  |_____ΦΦΦΦΦΦΦΦΦΦΦ||ΦΦΦ
  |         |  | ̄ ̄ ̄ /|                    ||
  |         |  |   / /|TTTTTT   TTTTTTTTTT||TTTTT
  |        /\ |  /|/|/|^^^^^^ |三三| ^^^^^^^^^^^||^^^^^^^
  |      /  / |// / /|
  |   /  / |_|/|/|/|/|
  |  /  /  |文|/ // /
  |/  /.  _.| ̄|/|/|/         Λ_Λ
/|\/  / /  |/ /           (___)
/|    / /  /ヽ            /〔 非OO 〕〕つ
  |   | ̄|  | |ヽ/l            `/二二ヽ
  |   |  |/| |__|/   Λ_Λ     / /(_)
  |   |/|  |/      ( ´∀`)   (_)    Λ_Λ
  |   |  |/      // /  ^ ̄]゚        (`   )
  |   |/        ゚/ ̄ ̄_ヽ         ⊂〔〔 非OO 〕

147 :デフォルトの名無しさん:02/10/05 12:52
>142
基底 <- 派生 の代入なんだから Up Castでそ。

>136
>132の代入先の hoge が Hoge型ではないと見た。


148 :デフォルトの名無しさん:02/10/05 15:01
>147
(゚Д゚)ハァ?

149 :デフォルトの名無しさん:02/10/06 10:30
SDK + コマンドラインで開発してるんですが、
スタックトレースを出力したときに、ソースの行番号を出すにはどうしたらいいんですか?
なんか、出ないので・・・。
VisualStudio使うと出るんだけどさ

150 :デフォルトの名無しさん:02/10/06 10:34
コンパイルオプションに行番号を埋め込むというのがない?

151 :デフォルトの名無しさん:02/10/06 10:54
>>149
/debug+ でコンパイルすれば出てくるよ。

152 :デフォルトの名無しさん:02/10/06 12:20
>>151

ありがとうございます!

153 :デフォルトの名無しさん:02/10/06 13:33
BinaryFormatterでシリアライズしたファイルをデシリアライズする時
以下のような例外吐いて失敗してしまいます。どうしたらいんでしょう?

System.Runtime.Serialization.SerializationException: 解析が完了する前に、ストリームの終わりに達しました。
例外吐く個所のコードは以下のような感じです。
(SortedList)formatter.Deserialize(stream);

154 :デフォルトの名無しさん:02/10/06 13:34
>>153 あ、すいません。SortedListをシリアライズした時です。


155 :デフォルトの名無しさん:02/10/06 13:35
ファイルでなくメモリにシリアライズしてもダメッスか?

156 :デフォルトの名無しさん:02/10/06 13:49
>>155
streamにMemoryStreamを使用してみましたが、シリアライズはできますが、
デシリアライズする時に同じj例外がでてしまいます。
Hashtableではうまくいってたのですが。

157 :デフォルトの名無しさん:02/10/06 14:06
>>153
こちらの環境では問題ないっす。
何か別のところに原因があるのでは?

158 :デフォルトの名無しさん:02/10/06 14:25
>>157
ありがと〜 そうですか。ちょっとまた調べてみます。

159 :132:02/10/06 15:35
キャストの件は解決しました。
DLL内のクラスをEXE内のクラスにキャストしようとしてました。
同じソースから一部をDLL化し、それを含んだEXE作成していました。
同一ソースから作成されたクラスでも別クラスと判断されるようです。
ご迷惑をおかけしました。

160 :デフォルトの名無しさん:02/10/06 15:39
ひょえー、アセンブリが違うと同名でも別クラスなのか・・・

161 :デフォルトの名無しさん:02/10/06 15:44
>>159-160
そりゃそうだろ

162 :デフォルトの名無しさん:02/10/06 16:33
.NETFrameworkって、Javaで言うByteArray*Stream見たいなのってないんですか。
byte配列を溜め込むのにどうやりゃいいか悩んでるんですけど。
あんだけ高級なAPIが揃ってるのに、これだけ自前でつくれって?


163 :デフォルトの名無しさん:02/10/06 16:35
>>160
アセンブリが違うのに名前が同じってだけで同じクラスになったら困るって。

164 :デフォルトの名無しさん:02/10/06 16:36
>>162
MemoryStream とかいうのなかったっけ

165 :デフォルトの名無しさん:02/10/06 17:01
>>162 は直前のやりとりすら見てないアフォ

166 :デフォルトの名無しさん:02/10/06 17:45
DLLのセキュリティチェックを行うことはできますか?
誰が作ったかわからないDLLを読み込む場合に
ローカルディスクのファイル操作等を禁止できますか?

167 :デフォルトの名無しさん:02/10/06 17:51
できます。

168 :162:02/10/06 17:54
>>164,165
ありがとう。

169 :166:02/10/06 17:54
どうすればいいの?
または、どこ調べればいいの?

170 :デフォルトの名無しさん:02/10/06 18:23
http://www.atmarkit.co.jp/fdotnet/technology/framework09/framework09_01.html

171 :166:02/10/06 18:43
Internetのパーミッションセットを設定したいのですが、
どうやって設定するのですか?

172 :デフォルトの名無しさん:02/10/06 19:03
A Primer to the Office XP Primary Interop Assemblies
http://msdn.microsoft.com/library/en-us/dnofftalk/html/office10032002.asp

173 :デフォルトの名無しさん:02/10/06 21:21
あげ

174 :デフォルトの名無しさん:02/10/06 22:34
ListBoxの最後のItemを表示するにはどうするの?

175 :デフォルトの名無しさん:02/10/06 23:26
>>174
ItemsのCountプロパティ見ればいいでしょ。

176 :デフォルトの名無しさん:02/10/07 01:28
アプリケーションが終了する時に,あるクラスのメソッドが必ず呼ばれるようにしたいんですけど,
何を使えばいいのでしょうか?
Finalize()は呼ばれないことがあるし,普通のメソッドだと明示的に呼ばなきゃならぬのですが。

177 :デフォルトの名無しさん:02/10/07 01:38
いささか古い本からの引用だけど、
「C# 実践プログラミング(インプレスの赤本)」には
>クリーンアップ処理用のメソッドをClose()で呼び出し、
>またオブジェクトを二度と利用しないのであればDispose()で
>呼び出すように推奨している
ってあるよー

178 :デフォルトの名無しさん:02/10/07 01:42
>>177
サンクス。
ってことはアプリケーション側からClose()やDispose()を明示的に呼び出すということですよね?
(Dispose()はusingステートメント使えば勝手に呼ばれるけど)

179 :デフォルトの名無しさん:02/10/07 01:46
>>178
そーです。
>クリーンアップ処理を特定の個所で必ず実行させる必要があれば、
>プログラマが明示的に呼び出せるメソッドを用意しておくべきだ
で、MSが推奨する方法としてClose()/Dispose()が挙げられてました。

180 :デフォルトの名無しさん:02/10/07 10:49
>>174
> ListBoxの最後のItemを表示するにはどうするの?

int lastItemIndex = listBox1.Items.Count -1;
listBox1.SelectedIndex = lastItemIndex;


181 :デフォルトの名無しさん:02/10/07 18:12
Javaで言うところのSystem.arraycopyってありますか?

182 :181:02/10/07 18:15
System.Array.Copyだった・・・。

183 :デフォルトの名無しさん:02/10/07 20:21
WinCVでアセンブリの中身を見ようと思ったのですが,

$ WinCV /r:アセンブリ

で見ることができません。

$ WinCV /h

を見るとできそうなのですが。


184 :183:02/10/07 20:24
ひょっとして勘違いしてる?
ildasmで一応目的のもの見られました。
WinCVは何者?

185 :デフォルトの名無しさん:02/10/07 22:53
>>184
WinCVはWindows Forms関連クラス専用のビューア。

186 :183:02/10/07 22:55
>>185
ああ,そういうことですか。ありがとう。

187 :デフォルトの名無しさん:02/10/08 03:56
C#で実行中の自分のファイル名(アプリケーション名)を取得
するにはどうすればよいでしょうか。

ここで言う、ファイル名というのは、例えば、
hogepage.exe というexeを実行していたならば、
hogepage.exe という名前をプログラム中で取得
したいということなのですが、、、

どうやればいいでしょうか?

188 :デフォルトの名無しさん:02/10/08 04:44
>>187
Application.ExecutablePath
フルパスだけど。
ちなみに Application.StartupPath はそのフォルダ名。

189 :デフォルトの名無しさん:02/10/08 07:35
コーディングスタイルの質問なんですけど,
みなさんthisってどういう時につけてます?
1. 常に
2. 曖昧さをなくす必要がある時
3. そのクラスに記述されているものだけ
4. そのクラスに記述されていないものだけ(記述されているものは明示的に書かない)
  baseだろって突っ込まれそうだけど
5. その他

ぼくは今不定でふらふらしてます

190 :デフォルトの名無しさん:02/10/08 08:24
>>189
コード補完が楽なように 1.

191 :デフォルトの名無しさん:02/10/08 08:42
VS.NET 2003に標準装備されるとの噂。
http://www.preemptive.com/dotfuscator/DotfuscatorFAQ.html

192 :デフォルトの名無しさん:02/10/08 09:44
>>190
ああなるほど。
俺はEmacs使ってるんでそもそもコード補完ができない…(ただの文字列補完ならできるけど)
で,話ずれますがMeadowでC#(.NET)のコード補完やってる人います?

193 :192:02/10/08 09:46
コード補完はJDEE(JAVA)ぐらいしか知らないのですが。
http://jdee.sunsite.dk/


194 :デフォルトの名無しさん:02/10/08 11:17
>>188
Thanks!!

ところで、ConfigurationSettings.AppSettingsを使って、設定ファイル
を読み込む時に、設定ファイルがあるかどうかを判定する方法ってある
でしょうか?File.Exists()とか使うしかないのでしょうか?

それから、ConfigurationSettings.AppSettingsを使って設定ファイルを
いじるれますが、このファイル名や保存場所を任意に変えることはできる
のでしょうか?なんか無理っぽいですが。。。



195 :デフォルトの名無しさん:02/10/08 14:09
>>143
だれ?それ?

196 :デフォルトの名無しさん:02/10/08 16:23
http://qb.2ch.net/test/read.cgi/saku2ch/1033032078/4

197 :デフォルトの名無しさん:02/10/08 19:47
>191

そっかー標準装備か。。じゃ待ちだな。
ところで皆さんは現在、ildasm対策?とかしてますか?


198 :デフォルトの名無しさん:02/10/08 21:03
RichTextBoxのTextプロパティにURLらしき文字列を設定し、
そのURLをクリックすると、LinkClickedイベントが発生しますが、
これをURLではなく、任意の文字列でできるようにする方法は
ないのでしょうか?


199 :デフォルトの名無しさん:02/10/09 06:55
Formを最大化するにはどうすればよい?

200 :デフォルトの名無しさん:02/10/09 07:06
>>199
Form.WindowState = FormWindowState.Maximized;

201 :デフォルトの名無しさん:02/10/09 08:09
>>200
ありがd!

202 :デフォルトの名無しさん:02/10/09 11:50
RTFコードの一覧表ってどこで見れますか?

203 :デフォルトの名無しさん:02/10/09 12:24
>>202

ほれ
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnrtfspec/html/rtfspec.asp

ただ、何に使うのかはしらんが、リッチテキストボックスのRTFプロパティを自分で
書いて、書式付き文字を表示されるなんて考えはおこさん方がいいぞ。


204 :202:02/10/09 12:46
>>203
ありがとうございます。

>ただ、何に使うのかはしらんが、リッチテキストボックスのRTFプロパティを自分で
>書いて、書式付き文字を表示されるなんて考えはおこさん方がいいぞ。

なんでですか?

205 :デフォルトの名無しさん:02/10/09 13:45
>>204

・RTFの仕様自体が糞。とても使う気になれない。
・リッチテキストボックスはRTF1.0相当なので、メソッド、プロパティを通じて
操作できる以上のことは RTFを生で書いてもほとんど無理。

表とかリンクとか画像を入れたいというだけなら、webbrowserコントロールを
使った方が気楽だよ。

206 :デフォルトの名無しさん:02/10/09 13:51
時代はリッチテキストよりHTMLだと思ってみたり?

そういえば.NETでHTMLダイアログを簡単に扱えたりするの?
System.Windows.FormsやSystem.Web.UIと同じように扱えたら
すごーくハッピーなんだけど、無理?

207 :202:02/10/09 13:59
>>205
>表とかリンクとか画像を入れたいというだけなら、webbrowserコントロールを
>使った方が気楽だよ。

タグの色分けができるHTMLエディタを作ろうと思ってます。
コントロールを自作しようと思ってSharpDevelopのソースも見たんですが無理っぽいので
RichTextBoxを使ったらどうかな?と思ったんです。
やっぱり厳しいですか。。。

208 :デフォルトの名無しさん:02/10/09 17:31
UDPサービスの使用のところにあるサンプルって動きますか?
ms-help://MS.VSCC/MS.MSDNVS.1041/cpguide/html/cpconusingudpservices.htm

UDPMulticastListener の方で、まったくメッセージが出てきません。
動いた方がいたら動かし方を教えてください。

209 :デフォルトの名無しさん:02/10/09 23:33
> SharpDevelopのソースも見たんですが無理っぽいので

無理っぽい?あんな読みやすいソースもそうそうないぞ。
少なくとも漏れはあのソースをかなり参考にしてC#のカラ
ーリングエディタを作った。(あれはGraphics.DrawString
を素で使ってるから日本語表示したり単語が多くなるとも
う速度的にボロボロだから本当に参考にしただけだが)
もっとがんがれ〜!

210 :デフォルトの名無しさん:02/10/10 00:01
>>209
役に立ちそうなソースは公開キボンと書いてみたり。(w


211 :209:02/10/10 01:06
スマンがソースは公開できない。代わりにもう一つ参考に
したサイトを置いとく。バグがあるまま公開されてるから、
改造しながら自分で直すと良いと思う。BitBltの方はもっ
と速くなるが、その辺はWindowsの描画関係をあたってくれい。

http://www.codeguru.com/cs_graphics/flicker_free.html

212 :デフォルトの名無しさん:02/10/10 09:24
十進BASICで連立一次方程式を説く、プログラムを教えてください!!

213 :デフォルトの名無しさん:02/10/10 12:57
>>212
とりあえず、すれ違い

214 :デフォルトの名無しさん:02/10/10 18:59
2つのbyte配列を結合した1つのbyte配列を作るには
どうしたらよいのでしょうか?

こんなやり方しか思い浮かばないのですが、、、

byte[] hoge = {1, 2, 3};
byte[] page = {4, 5};

byte[] total = new byte[hoge.Length + page.Length];
hoge.CopyTo(total, 0);
page.CopyTo(total, hoge.Length);

なんか、もっといい方法はないでしょうか?
例えば

byte[] total = {hoge, page};

とかができるとうれしいのですが。。。



215 :デフォルトの名無しさん:02/10/10 20:21
>>208

その URL の先読む気はないので適当に言うけど、Winsock の場合
multicast group に join するには、事前に適当に bind しておく
必要がある。その辺どうなってますか?

 あと送出側が同じ PC で動いてるなら、loopback できるように
setsockopt だかなんだかで設定しとく必要がある。

216 :デフォルトの名無しさん:02/10/10 20:57
Linux用の.NET Freamworksはいつ頃出る予定なんでしょうか?
GNUとM$でゴタゴタが起きていてなんちゃらかんちゃらという記事を読んだことがあります。
その辺のことご存じの方いらっしゃれば教えてください。

自分もグーグル等で検索してみましたが、分かりませんでした。

217 :デフォルトの名無しさん:02/10/10 21:05
>>216
monoを使ってみるスレとかで聞いて見れば?
http://pc3.2ch.net/test/read.cgi/tech/1020215602/l50

218 :デフォルトの名無しさん:02/10/10 21:36
NetworkStream.Writeというメソッドは戻り値を
返さないのですが、このメソッドで指定したbyte[]
は、きちんと全て送信するまで、ブロッキングして
くれるのでしょうか?

socketとかだと、100byte送信ってやっても、50byte
しか送信できないことがあったりして、結局何byte
送信できましたっていう感じで、送信できたbyte数が
戻り値として戻ってきていましたが、どうなのでしょう?

NetworkStream.Writeで100byte送信ってやった場合は、
100byte送れるまで、ブロッキングするの?



219 :デフォルトの名無しさん:02/10/10 21:39
>>218
する。Readはしない。以上。

220 :デフォルトの名無しさん:02/10/10 21:53
>>216
Mono、Portable.NET以外にBorlandから出るよ。
Kylix .NETからだし、まだ先だけど。

221 :デフォルトの名無しさん:02/10/10 21:59
>>219
>Readはしない

http://impress.tv/msec/event/te2002/

「7-411 .NET Framework におけるスレッディング」
(の「非同期プログラミング モデルの実装」)
だと
Begin〜-End〜系じゃないメソッドは
実行が完了するまで処理がブロックされるって説明が
あるんだけど、実際の挙動はそうなってないってこと?

222 :デフォルトの名無しさん:02/10/10 22:00
完了の定義によると思われ

223 :デフォルトの名無しさん:02/10/10 22:06
なるほど、了解。

224 :218:02/10/10 22:16
>>219
なるほど。よくわかりました。

>>221
どうも、実験してみると、1byteも受信できないうちは、
ブロッキングするようですが、1byte以上、何らかのデータを
受信した時には、何バイト読み取れって指定したデータ全部を
受信しなくても、処理が次に移ってしまうようです。

その代わり、何バイトだけ受信しましたよ。っていう戻り値が
帰ってくるようです。

なんで、こんな実装なんでしょうね?



225 :デフォルトの名無しさん:02/10/10 22:25
>>224
いわゆるbsdソケットのrecvと同じ挙動に見えるがどうか。
だったらsendも同じにしてもいいのに、とは思うけど・・・

226 :デフォルトの名無しさん:02/10/10 22:29
と思ったらSocket.Sendがあるやんけー

227 :デフォルトの名無しさん:02/10/10 23:52
どこで聞けばいいのかよく分からないんですが,
.NET Framework SDKについてくるドキュメントブラウザで
たとえば
http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/webbrowser/browser_control_node_entry.asp
のようなページをFrameworkSDKドキュメントのように表示することはできないですか?
目次のところに該当ページの目次が出て欲すぃ

228 :デフォルトの名無しさん:02/10/10 23:52
>>221

この映像の喋ってる奴の喋り方ムカツク。
なんでだろ。

229 :デフォルトの名無しさん:02/10/10 23:57
>>227
Microsoft Document Explorer 7.0なら
ヘルプ(H)-目次の同期(Y)
かと。

違ったらスマソ。

230 :デフォルトの名無しさん:02/10/11 00:01
>>229
ああ,Microsoft Document Explorer 7.0ですた。

で,http//〜 は目次の同期はできないのです。


231 :デフォルトの名無しさん:02/10/11 00:10
>>230
もしかしてURL欄に「http://以下略」を直接入れて・・・って話?
それなら無理かと。。。

232 :デフォルトの名無しさん:02/10/11 00:12
>>231
そういうことです。
そんで,ms-help://〜形式にできないものかなーと思いまして。

233 :デフォルトの名無しさん:02/10/11 02:16
>>209
FSFに通報しますた

234 :デフォルトの名無しさん:02/10/11 19:07
タブブラウザ作ってるんですが、AxWebBrowserの初期化方法がよく分かりません。
一応よくわからないままに下のようにやってるんですが、表示してみるとフォントサイズが
IEの設定(小)と一致しません(たぶん中)。最初のうちはちゃんと表示されていたような
気もするんですが、明示的に設定する方法ってありますか?

> page = new TabPage(title);
> browser = new AxSHDocVw.AxWebBrowser();
> browser.BeginInit();
> browser.Dock = DockStyle.Fill;
> page.Controls.Add(browser);
> this.TabPages.Add(page);
> browser.EndInit();



235 :デフォルトの名無しさん:02/10/11 19:07
sageちゃった。

236 :デフォルトの名無しさん:02/10/11 19:24
>>234
http://www.k-nextage.co.jp/ame/soft/wfc/
WebBrowserコントロールを利用してブラウザーを作るための方法

これで出来ると思う。

237 :デフォルトの名無しさん:02/10/11 19:44
>236
ありがたふ。見てみます。

238 :デフォルトの名無しさん:02/10/11 21:16
オブジェクトをコピーするにはどうすればいいですか?
Memcpyみたいなものでつかってコピーするのでしょうか?

239 :デフォルトの名無しさん:02/10/11 21:23
>>238
まずは
Object.MemberwiseClone メソッドと
ICloneable インターフェイス
について調べてみてちょうらい

240 :デフォルトの名無しさん:02/10/11 23:19
厳密名つきアセンブリのレイトバインドってヘルプのどこら辺りみたらいいんでしょうか。
Assembly.Loadメソッド辺りかと思ったのですが、具体的にどうやればいいのかわかりません・゚・(ノД`)・゚・
よろしくお願いします。


241 :デフォルトの名無しさん:02/10/11 23:40
System.IO.File.Exit(strPath);
みたいにクラスインスタンスを作らなくても値を返せるようなメゾットって
どうやって作ってるんでしょうか?

242 :デフォルトの名無しさん:02/10/11 23:43
>>241
staticメソッド

243 :デフォルトの名無しさん:02/10/11 23:57
>>241
間違いが多い質問はネタ率高し。

244 :241:02/10/12 00:37
>>242
ありがとうございます。解決しました。

245 :デフォルトの名無しさん:02/10/12 04:56
>>240
解決しますた。

246 :デフォルトの名無しさん:02/10/12 10:19
>>245
教えて。情報へのリンクだけでも・・・

247 :デフォルトの名無しさん:02/10/12 11:27
The .NET Show: The Developer Roadmap
http://msdn.microsoft.com/theshow/Episode028/default.asp

248 :デフォルトの名無しさん:02/10/12 11:51
例外処理で、ある特定の例外に関してだけ、同じ処理をしたい
場合は、特定の処理をしたいcatch句のところに同じ処理を繰り
返しかかなければならないのでしょうか?なんか、AとBとCの例外
の場合は、この処理を実行してください。ってな感じで一度に指定
することは可能なのでしょうか?

単純にcatch(Exception e)でキャッチしてしまうと、全部ひっかかって
しまうのでダメなのですが。。。

249 :デフォルトの名無しさん:02/10/12 12:09
アプリで作った例外?
それとも規定の例外?

250 :デフォルトの名無しさん:02/10/12 12:40
>>249
規定の例外です。

251 :デフォルトの名無しさん:02/10/12 12:51
少しは頭使えよ

252 :デフォルトの名無しさん:02/10/12 12:51
>>250
その二つの例外が継承関係に無い以上同じコードで扱うのは無理っぽい。

catch( Exception ) で全部捕らえて、if/else で我慢するしかないかな?

253 :デフォルトの名無しさん:02/10/12 12:51
バーカ

254 :デフォルトの名無しさん:02/10/12 12:52
ヴヮーカ

255 :デフォルトの名無しさん:02/10/12 12:53
ブノレヮーカ

256 :デフォルトの名無しさん:02/10/12 12:53
キリヴァーン

257 :デフォルトの名無しさん:02/10/12 12:55
>>252
やっぱりそうなってしまうのでしょうか?
なんか、コードが例外処理だらけになりそうです。

みなさんも、やっぱりそういう風に書いてるの?

258 :デフォルトの名無しさん:02/10/12 12:56
バーカ

259 :デフォルトの名無しさん:02/10/12 13:16
>>257
catch使おうがif/elseだろうが、コード量はほとんど変わらない気がするんだけど

260 :デフォルトの名無しさん:02/10/12 13:25
あと、例外に関して、もう一つ質問があるのですが、
catch(Exception e)はなるべく使わない方がいいと
言われたのですが、なぜ?

同じ例外処理をするなら、catch(Exception e)で問題
無いですよね?

261 :ネタだけど:02/10/12 13:31

  catch (Exception x) {
    switch (x.GetType().Name) {
      case "FileNotFoundException":
        ...
        break;
    }
  }

262 :デフォルトの名無しさん:02/10/12 13:34
>>261
caseは羅列できるね。

  case "FileNotFoundException":
  case "IOException":
    break;

263 :デフォルトの名無しさん:02/10/12 13:35
>>260
真意は言った本人にしかワカランけど
catch( Exception e )はご存知の通り全ての例外を補足するから、
すごく便利なことに即刻プログラムをアボーンしなければならないようなちょー重大な
例外も漏れなくキャッチして何事も無かったかのようにプログラムを継続してくれるうれしい機能だ。

264 :デフォルトの名無しさん:02/10/12 13:37
catch (Exception e) ならともかく、catch (Exception) は確かに問題だ。
           ↑                  ↑

265 :デフォルトの名無しさん:02/10/12 13:50
>>264
そういう書き方をしたいときもあるんじゃん。

266 :248:02/10/12 13:51
>>262
そうそう、そういうのがやりたいんですよ。
でも、try catchじゃできないみたいなので、みんなどうしてるの
かなって思ってた分けです。

わざわざ例外用の関数つくって、同じ例外処理の場合はそれを
読み出したりするようにしてるのでしょうか?

267 :デフォルトの名無しさん:02/10/12 14:42
>>265
んで、ログには「エラーが起きますた」と一言だけ・・・。

268 :デフォルトの名無しさん:02/10/12 14:44
>>266
try〜catchのスコープを小分けにして、そんなにcatchの羅列にならないようにする。

269 :デフォルトの名無しさん:02/10/12 14:49
ファイルを読み込むさいのEOFはどうやって判断するんですか?
Whileかなんかでループしながらsr.ReadLine()で一行づつ読み込み
たいのですが。

270 :デフォルトの名無しさん:02/10/12 14:53
>>269
TextReaderでできるじゃん。ReadLineの戻り値がnullだったら終了。

271 :デフォルトの名無しさん:02/10/12 14:54
MSのC#言語、ISO標準獲得へ
http://www.zdnet.co.jp/news/0210/12/nebt_12.html

272 :269:02/10/12 14:55
>>270
Thank you

273 :デフォルトの名無しさん:02/10/12 15:16
>>246
ms-help://MS.NETFrameworkSDK.JA/cpguidenf/html/cpconreferencingstrongly-namedassembly.htmms-help://MS.NETFrameworkSDK.JA/cpguidenf/html/cpconreferencingstrongly-namedassembly.htm

274 :デフォルトの名無しさん:02/10/12 15:17
>>273 間違えた。
ms-help://MS.NETFrameworkSDK.JA/cpguidenf/html/cpconreferencingstrongly-namedassembly.htm

275 :デフォルトの名無しさん:02/10/12 15:21
>>269
NULLで。

276 :デフォルトの名無しさん:02/10/12 15:27
標準化すると利便性が高まるからじゃなくて、標準化すると売りやすくなるから、
ISOに出すのね。まあいいけど、時代は変わったのね。

277 :デフォルトの名無しさん:02/10/12 15:30
byte[]をstringに変換したいんですが、
よい方法ありますか?

278 :デフォルトの名無しさん:02/10/12 15:32
>>277
MSDN・・・読もうぜ・・・

279 :ヘルプを見ずにカキコ:02/10/12 15:32
>>277
System.Text.Encoding.GetString

280 :デフォルトの名無しさん:02/10/12 15:40
>>278-279
ありがとうございます。まさにこれです。
ぜんぜん違う方向探してました。

281 :デフォルトの名無しさん:02/10/12 16:41
>>276
どっちみち標準化すると利便性が高まるからいいだろ。

282 :デフォルトの名無しさん:02/10/12 16:41
超ド級の低レベルの質問でもうしわけないです。
今win95 C でプログラミングしてます
そこでsleep関数を使うとエラーがでてしまうのですが、使えないのでしょうか?

283 :デフォルトの名無しさん:02/10/12 16:42
使えません。

284 :デフォルトの名無しさん:02/10/12 16:42
使えます。

285 :デフォルトの名無しさん:02/10/12 16:46
使える。
たぶん使えると思う。
使えるんじゃないかな。
ま、ちょと覚悟はしておけ。

286 :デフォルトの名無しさん:02/10/12 16:47
使えない。
たぶん使えないと思う。
使えないんじゃないかな。
ま、ちょと覚悟はしておけ。

287 :デフォルトの名無しさん:02/10/12 17:56
あれ?、ここC#相談室だよね?

288 :デフォルトの名無しさん:02/10/12 18:05
そうだよ。
たぶんそうだと思う。
そうなんじゃないかな。
ま、ちょと覚悟はしておけ。

289 :デフォルトの名無しさん:02/10/12 18:11
みつけたぞ288!
親の仇じゃ、覚悟!

290 :デフォルトの名無しさん:02/10/12 18:43
なんなんだ・・・

291 :デフォルトの名無しさん:02/10/12 23:49
http://www.microsoft.com/japan/msdn/vstudio/device/eVC4SP1.asp

292 :デフォルトの名無しさん:02/10/12 23:55
過去すれ全部HTML化された。

293 :デフォルトの名無しさん:02/10/13 15:56
ファイルを読み込もうと思いfilestreamを使ってみたのですが
ブラウザが「[セキュリティ]タブの設定がよくありません。」
といってきます。

わたしのWinXPにはファイルのプロパティに
セキュリティタブが見つからないのですが
どうしたらよいのでしょうか?

294 :デフォルトの名無しさん:02/10/13 16:03
ブラウザって何...

295 :デフォルトの名無しさん:02/10/13 16:09
ASP.NETです。
会社のWin2000にはファイルのプロパティに
セキュリティタブというのがあるのですが
WinXP(Pro)にはないのです。

296 :デフォルトの名無しさん:02/10/13 18:23
>>295
フォルダ・オプションの
「簡易ファイルの共有を使用する(推奨)」のチェックを外せ

297 :デフォルトの名無しさん:02/10/13 20:29
>>296
俺もこれにはさんざん悩まされたよ
どこが推奨なんだか激しく問い詰めたかった

298 :デフォルトの名無しさん:02/10/13 22:52
Multilineのテキストボックスで、指定した位置に表示を
スクロールすることは可能なのでしょうか?

例えば、テキストファイルを読み込んで表示した後に、一番
最後に表示したいような場合があるのですが。

どうでしょうか?

299 :デフォルトの名無しさん:02/10/13 22:53
>>298
そのものズバリの質問がこのスレにあったと思う

300 :デフォルトの名無しさん:02/10/13 23:02
>>299
このスレにはないようですが、、
過去ログの方でしょうか?

301 :デフォルトの名無しさん:02/10/14 04:22
webブラウザコントロールのBeforeNavigate2っていうのは、リンクをクリック
して、新しいページを読み込む直前に呼ばれると思うのですが、なぜか、
呼ばれないのです。
VS.NET上からイベントを追加したのですが、何か足りないのでしょうか?

追加されたメソッドは次のようなものなのですが、、、
axWebBrowser1_BeforeNavigate2(object sender, AxSHDocVw.DWebBrowserEvents2_BeforeNavigate2Event e)
}


302 :C ◆dq2PerGLN. :02/10/14 04:34
CFileのMFCにあるファイルを開くダイアログはC#だとどのクラスでどのメソッドにあたるのですか?

303 :デフォルトの名無しさん:02/10/14 04:39
>>302
OpenFileDialogクラス
ShowDialogメソッドで呼び出す

304 :デフォルトの名無しさん:02/10/14 06:01
>>301
>>50 .NET 1.1に。

305 :デフォルトの名無しさん:02/10/14 11:48
>>301
現時点で暫定的に対処したいなら、
ttp://www.syncfusion.com/FAQ/WinForms/FAQ_c100c.asp#q842q
これがよろしいかと。

306 :301:02/10/14 13:20
げげげっ、バグなのですか!?
どうりで動かないわけですよ。。。

でも、これじゃぁ、2ちゃんブラウザをC#で作ることはできないじゃ
ないですか、、、せっかくC#で作ろうと思ってたのに。
なんで、 .NET Framework Service Pack 2 までだしているのに、直して
ないのでしょうか??
ホントにC#普及させようと思ってるのか???>MS

>>304
ちなみに .NET 1.1 って、まだ、ベータ版ですよね。そうすると、これで
ソフト作っても配布できないですよね。。。
ちなみに、.NET 1.1 の正式版リリースはいつごろを予定しているのでし
ょうか?なんか、MSのページみても情報無いのですが。。

>>305
この方法ってのはイベント部分だけ古いコントロールのやつを使うという
ことになるのでしょうか?なんかIE3コンパチブルというのがいやな予感が
するのですが、この方法を使った場合の弊害ってなんかあります?


307 :デフォルトの名無しさん:02/10/14 13:27
>>296-297さん
激しく感謝m(・w・)m

308 :301:02/10/14 13:33
>>305
とりあえず、この方法できちんと動くようですので、
.NET Framework 1.1 の正式版が出るまでは、これで対応
したいと思います。

MSのアホ!!ボケ!!カス!!

ところで、みなさんはこういう情報をどうやって仕入れるのでしょうか?
2ちゃんの過去ログや@ITとか、某UGMLとか、MSDN日本語版とか、一通り
あたってみたのですが、こんな解決策は載ってなかったです。

やっぱり、アメリカとかの情報サイトとかMLを読んだ方がいいのでしょうか?
海外のC#系の情報でお勧めの場所があったら教えてもらいたいのですが、
どこら辺がいいでのしょうか?

309 :デフォルトの名無しさん:02/10/14 14:01
>303
サンキューです。さっそくやってみまーす

310 :デフォルトの名無しさん:02/10/14 14:19
>ところで、みなさんはこういう情報をどうやって仕入れるのでしょうか?
>2ちゃんの過去ログや@ITとか、某UGMLとか、MSDN日本語版とか、一通り
>あたってみたのですが、こんな解決策は載ってなかったです。

C#相談室 Part xxでは激しくガイシュツだけど・・・
最低でも3度以上はでてる。MSのサポート情報にもでてるし。
海外サイトにもでてる。

311 :デフォルトの名無しさん:02/10/14 14:19
>>308
漏れはひたすら google で検索。
関係ありそうなサイトがヒットしたら、そこからリンクを辿るとかね。

312 :310:02/10/14 14:21
>>308 へのレスね。

で、MSのサポート情報のURL
http://support.microsoft.com/default.aspx?scid=kb;JA;JP311298
こっちはまぁ回避法は載っていないが、
ttp://www.syncfusion.com/FAQ/WinForms/FAQ_c100c.asp#q842q
このページはかなり早い時点からあったしな。

313 :310:02/10/14 14:23
ちなみに漏れが最初にこの情報を知ったのはここだよ。
beta2のころはサイトもあんましなかったし。(海外別にして)

314 :301:02/10/14 14:52
>>310-313
あらら、結構情報載ってますね。。
スンマソ。

ところで、.NET Framework 1.1の正式版はVisual Studio .Net(Everett)
と同時になるようですね。果たしていつになることやら。。。

315 :デフォルトの名無しさん:02/10/15 00:45
>>262
C♯でそんなことできたっけ・・
switch は no fall-through じゃなかったっけ?
(つまりすべての case に break を書かなければ文法エラーになる)

316 :デフォルトの名無しさん:02/10/15 01:29
>>315
羅列ができるだけ。
1行でもコードを書くと compile error になりますよん。

317 :C ◆Iei1i2BWho :02/10/15 01:58
パラメータとしてPaintEventArgs fをメソッド button1_Click(object, System.EventArgs)に追加するには、デリゲートを作成して追加するらしいのですが、どのようにするのでしょうか?
よろしかったらだれか教えてください。


318 :デフォルトの名無しさん:02/10/15 06:32
>>317
基本的には不可能(例外的にどうなのか知らないけれど)。
名前から察するにbutton1_Click(object, System.EventArgs)はボタンコントロールのClickイベントのメソッドだと思うけれど、
Graphicsクラスを取得したいならControl.CreateGraphics()やGraphics.FromHwnd()を使ったほうがいい(使い終わったらDispose()も忘れずに)。


319 :デフォルトの名無しさん:02/10/15 09:47
Cは知ってるがC++やJava知らないんで
いまいちクラスの概念が理解できないんだが
クラスって、構造体と全く同じと考えていいの?

320 :C ◆Iei1i2BWho :02/10/15 10:58
>317
迅速なレスありがとうございまーす、さっそくトライするっす


321 :C ◆Iei1i2BWho :02/10/15 10:59
あっ
×>317
○>318
鬱だ(゚д゚)

322 :デフォルトの名無しさん:02/10/15 16:00
2ch専用ブラウザ作成についての質問です(厨質問なのでsage)。

WebBrowserコントロールにHTMLを書き出して表示するところまでは
なんとか漕ぎ着けたんですが、表示したHTML中のリンク(「>>1」など)
をクリックしたときに該当するレスに飛ぶ方法がわかりません。

バグってるというBeforeNavigate2イベントが何か関係するんでしょうか。


323 :デフォルトの名無しさん:02/10/15 16:13
>>322
その質問は、次のうちのどれが聞きたいの?

・リンクをクリックしたイベントをどうやって取るかわからない。
・BeforeNavigate2を実装したがきちんとうごかない。
・イベントは取れたが、画面のスクロールの仕方がわからない。



324 :デフォルトの名無しさん:02/10/15 16:25
>323
> ・イベントは取れたが、画面のスクロールの仕方がわからない。

です。


325 :デフォルトの名無しさん:02/10/15 17:04
>322

>>1」 に単純に飛びたいなら、レス番号にアンカー仕掛けて、ドキュメント内で
飛べば?

htmlのソースに細工して、ジャンプ先を<a name="menu:1></a>、
リンクは <a href="#menu:1> >>1</a> みたいにしておけばわざわざイベント取ら
なくてもブラウザが勝手に飛んでくれるんでは?

どうしてもイベント使いたいなら、document.all.itemで飛び先のIHTMLElement
取って、IHTMLElement.ScrollIntoView()あたりでいけるとおもうが。

webborwserコントロールはnavigate2に限らずいろいろバグがあって、aximpで
自動的にラッパ作ったやつはまともに動かんぞ、と警告してみる。

326 :322:02/10/15 17:22
>325
ありがとうございます。もう少し調べてみます。

327 :デフォルトの名無しさん:02/10/15 18:56
最小化されたフォームを再び表示させようとする場合は
this.Show();
で表示するんでしょうか?

this.FormWindowState = FormWindowState.Normal;
じゃ表示されないみたいなんす・・・。

328 :322:02/10/15 19:40
結局下のようにしました。
まだイベントに絡めては動かしてないんですが、クリックイベントを横取りして
やればいけるかなと思ってます。

string label = "Res1";  // リンク先
IHTMLElement element = this.hdoc2.anchors.item(label, 0) as IHTMLElement;
element.parentElement.scrollIntoView(true);

※hdoc2はIHTMLDocument2型でAxWebBrowserから取得してます。

最初に末端のレスにスクロールしてから上の処理をやるとちょうどリンク先が
表示領域の上端にくるので具合がいいです。

ただ、横スクロールバーが出ていると微妙に右にスクロールしてしまうのが
気持ち悪いですね。hdoc2.parentWindowは型がサポートされてない旨の例外が
飛ぶのでscroll()は使えないようです・・・。

329 :デフォルトの名無しさん:02/10/15 21:07
>>327
そのフォームのプロパティみたらわかるけど
最小化したらフォームのLocationがX=-1、Y=-1ってなってるはず。
だからWindowStateをそのままNormal にしてもフォームの位置が
画面外だから表示されないように見えるの。
Normalにする前にLocationを元に戻してすれば表示されるはず。


330 :デフォルトの名無しさん:02/10/15 21:49
>>329
ほんとじゃん!!
最小化って画面なくすんじゃなくて、見えないところに移動する機能だったんか?
ありがとう。

331 :デフォルトの名無しさん:02/10/15 21:51
>>330
Win95からそうなったのよ・・・
一応Closeというのはあるんだけどね・・・

332 :デフォルトの名無しさん:02/10/16 02:37
質問ですが、NetworkStreamクラスだけから、接続の切断(向こう側がShutdownしたなど)を検知する方法というものはありますか?

333 :デフォルトの名無しさん:02/10/16 02:50
>>332
タイムアウトを設定しておけばいい。

334 :デフォルトの名無しさん:02/10/16 04:00
>>332
接続中に切断されたなら、そこで例外が発生するからそれをキャッチすればいい。
接続しているか常にチェックしたいならちょっと無理かも。
TcpClient使ってるならTcpClientを継承したクラス作って
SocketもらってConnectedプロパティをチェックするしかない。


335 :デフォルトの名無しさん:02/10/16 08:42
メソッドの呼び出し元を特定できますか。
コールスタックみたいに。

336 :デフォルトの名無しさん:02/10/16 13:08
BeforeNavigate2関係の質問です。

http://www.syncfusion.com/FAQ/WinForms/FAQ_c100c.asp#q842q

ここ↑にある方法に従って普通のリンクのクリックは拾えるようになったんですが、
例えば

<a href="about:blank../test/read.cgi/tech/1032488831/1 target="_blank">>>1</a>

をクリックしてもイベントが発生せず問答無用でIEが起動してしまいます。
何か対処方法はあるのでしょうか。

337 :デフォルトの名無しさん:02/10/16 13:24
>>335
StackTraceクラスからMethodInfoが引けたはず。

338 :デフォルトの名無しさん:02/10/16 14:14
>328

> ただ、横スクロールバーが出ていると微妙に右にスクロールしてしまうのが
> 気持ち悪いですね。hdoc2.parentWindowは型がサポートされてない旨の例外が

場当たり的だが、scrollintoviewのあとに
document.parentWindow.scrollBy(-1000,0);
ってやって、左に戻しておけばどうかと

339 :デフォルトの名無しさん:02/10/16 14:30
>338
残念ながら型がサポートされていないという例外が飛んでしまうので
document.parentWindowが評価された時点で落ちます。トホホ。


340 :デフォルトの名無しさん:02/10/16 14:32
>>339
キャッチすれば良いじゃん。

341 :デフォルトの名無しさん:02/10/16 14:33
>339
> >338
> 残念ながら型がサポートされていないという例外が飛んでしまうので
> document.parentWindowが評価された時点で落ちます。トホホ。

俺はdocument.parentWindow.scrollBy(-1000,0); で普通に使えて
いるが。WebBrowser_V1 を使っているせいかな?

342 :336:02/10/16 16:15
自力で解決できそうかな? つーわけでメモ。

■ IHTMLDocument2のリンククリックイベントを横取りする方法(一部未確認)

1.write()で必要なものは全部書き出す

2.こんな↓感じでリンクエレメントにイベントハンドラを設定する
  Close()の前にやったほうがいいような気がするけど細かいところは未確認
foreach (HTMLLinkElement le in this.hdoc2.links)
{
  ((HTMLAnchorEvents2_Event)le).onclick += new TMLAnchorEvents2_onclickEventHandler(OnClickTest);
}

3.イベントハンドラ
private bool OnClickTest(IHTMLEventObj o)
{
  //o.srcElement.innerTextなりを見て好きに処理する
  return false;// trueだとイベントが生きたまま
}


もしかしてこの方法だったらBeforeNavigate2は要らないのかな。
なんか問題があるようだったら誰か指摘してください。


343 :C ◆Iei1i2BWho :02/10/16 17:03
Graphics formGraphicsをクラスのコントロールのメンバとしてグローバル変数(いろいろなメソッドで共通に使えるように)宣言したいのです。
しかしあるメソッドの中では
Graphics formGraphics = this.CreateGraphics();
としてますので、これを利用して"this"を抜かし、
Graphics formGraphics = CreateGraphics();
と宣言するとエラーが出ます。
どのように宣言をすればよいのでしょうか?
わかる方お願いします



344 :デフォルトの名無しさん:02/10/16 17:14
全角と半角が混ざっている可能性のある数字文字列を半角のみに変換する
簡単な方法はありますか? 具体的には下のようなイメージです。

"0123456789" -> "0123456789"

今のところひたすらReplace()で変換してます・・・(効率悪〜)


345 :336:02/10/16 17:35
>342
自分で問題点発見。
細かいことは分かりませんが、HTMLを部分出しにしている場合、
全文が完全に出力される前にリンクをクリックされるとイベントを
横取りできないみたいです。

当然といえば当然だけど回避策はないのかなー。


346 :デフォルトの名無しさん:02/10/16 17:56
>>343
フィールドでGraphics formGraphics;としといて、
コンストラクタで formGraphics = this.CreateGraphics(); とするのは
だめなのかい?

347 :デフォルトの名無しさん:02/10/16 19:12
>342
「HTMLを部分出し」 っていうのがよく意味わからんけど、
document.close()の前にイベントハンドラの処理をやってるなら
本来はちゃんとイベントが接続されるはず。

anchorElementのonclickを捕まえる方法は俺もやったことがあるが
挙動が不審なんだよ。

interopかmshtmlのPIAのバグのせいなのか、わからんのだが、
ちゃんとイベントハンドラ接続しているのに、ランダムに全く原因不明で
イベントがファイアしないことがあってあきらめたことがある。

document.HTMLDocumentEvents2_Event_onclickを捕まえて、
IHMTLEventObjのfromelementをみてやる方法もあるが、こっちも
なんか挙動がおかしかったように記憶している。


348 :デフォルトの名無しさん:02/10/16 22:09
DelphiとC#ってC#の方が速いんですか?

349 :デフォルトの名無しさん:02/10/16 22:36
JITはCLR持ちだから、同等になりそうな気がするが、試してくれ。

350 :デフォルトの名無しさん:02/10/16 23:20
>347
> document.HTMLDocumentEvents2_Event_onclickを捕まえて、
> IHMTLEventObjのfromelementをみてやる方法もあるが、こっちも
> なんか挙動がおかしかったように記憶している。

この方法ではたしかホイールが利かなくなったような記憶が。。。
あとこれは想像だけどイベントハンドラの不発はmshtmlのHTMLパーシングが
非同期(多分)で遅いことが原因じゃないかな。foreachで回す時までにlinkに
すべてのアンカーが入っていないような気がする。ケツから後方一致でやってる
みたいでハンドラ不発はランダムじゃなくてある個所から手前(ファイルの先頭)
までが全滅している。
writeで書き込んだ後、何らかの方法でmshtmlのパーシングが完了したことを
確認する手段があればいいんだけど。。。


351 :デフォルトの名無しさん:02/10/16 23:27
READYSTATEとかかなあ

352 :デフォルトの名無しさん:02/10/16 23:51
>>344
VB.netのStrConvを使うとか。

353 :デフォルトの名無しさん:02/10/17 01:04
GetPixel()メソッドで取得したRGB値をR,G,Bの各値を取得する関数はありますか?
それとも自分で作らないといけないのでしょうか?
わかる方お願いします

354 :デフォルトの名無しさん:02/10/17 01:26
>>352 のStrConvなどここに書いてある。
http://www.atmarkit.co.jp/fdotnet/csharptips/013vb/013vb_02.html

355 :デフォルトの名無しさん:02/10/17 01:50
>>353
Color構造体で返って来るので、
普通に各プロパティ(R,G,B)を見ればいいのでは?

356 :デフォルトの名無しさん:02/10/17 03:26
>346
サンクスです。コンストラクタでthisが使えるのですね。

357 :350:02/10/17 09:58
すんませんあやふやな記憶だけで大嘘ぶっこいてました。
ちゃんとコードを書いて確認してみましたが、mshtmlのlinksを参照したときに
アンカーの漏れが発生するという事実は確認できませんでした。

イベント不発の原因は接続のタイミングを計ればどうにかなるというものでは
なさそうです。。。


358 :デフォルトの名無しさん:02/10/17 10:52
>350

> この方法ではたしかホイールが利かなくなったような記憶が。。。

あ、たしかにそうだったかもしれない。

> あとこれは想像だけどイベントハンドラの不発はmshtmlのHTMLパーシングが
> 非同期(多分)で遅いことが原因じゃないかな。foreachで回す時までにlinkに

これはありうるな。俺も同じ経験ある。
ただ、単に非同期処理が追いついていないだけなら、writeで書き込んだ後、thread.sleepで
逃げられそうなもんだが…。
たとえばリンク1〜リンク100まであって、リンク100→OK リンク99→OK…
……と試していって リンク16あたりで挙動がおかしくなると、さっきまでOKだった筈の
リンクまで挙動がおかしくなったりしてたから、それだけが原因なのかどうか
今ひとつはっきりしない。

ちなみにwriteの直後にMessageBox.Show(wb.ReadyState.ToString())を入れて
チェックしてみても俺んとこではreadystate_completeになってた。

ほかにイベント接続先のメソッドでIHTMLEventObjの特定メンバにアクセスすると
なんのエラーも出ずにそこでメソッドがリターンしてしまい、勝手にリンク先に飛んで
いってしまうとか、妙ちきりんなことが多い。
(x だかoffsetXだかclientXだか、マウス関係のメンバだったと思うが…。)

359 :デフォルトの名無しさん:02/10/17 11:11
S.W.Forms.Control の OnImeModeChanged ってどういうときに使うの?


360 :デフォルトの名無しさん:02/10/17 15:29
>>359
ImeModeプロパティが変更された場合に発生します。

361 :デフォルトの名無しさん:02/10/17 16:33
WebBrowserコントロールでリンクにマウスポインタを合わせたときに
ツールチップを表示させたいんですが、ToolTipクラスはコントロール
依存みたいでアンカーエレメントに対応付ける方法がわかりません。
仕方がないので今はtitleプロパティを代用にしてますが、これだと
マウスポインタの座標を基点に右下方向に表示されてしまいます。
出来れば右上方向に表示したいのですが方法が分かりません。
ご存知の方がいたらぜひご教示ください。


362 :デフォルトの名無しさん:02/10/17 18:01
>>361
消極的で悪いけど、一般的に知られている方法以外で情報を提示するとユーザは混乱するよ。
Webサイト見てて急に広告が落下してくるとビビるだろ?あれと一緒。
広告は貼り付けてあるもので降ってくるものではない、と言うブラウザの常識を越えた方法だから。

363 :デフォルトの名無しさん:02/10/17 18:57
>361

title属性ででティップが表示されるのはブラウザの機能だから、
いじるのは無理じゃないかな? とりあえずDHTMLのなかでは
それらしい物は見つからないけれど

あえてやるなら、
・textboxをwebbrowserの前面においてvisible=false readonly=true
borderStyle=none、backcolor=好きな色 multiline=true scrollbars=noneにする

・各リンクエレメントのmouseoverイベントでtextbox.visibleをtrueに。
表示位置はIHTMLEventObjでマウス座標をとって 好きな位置にする
textboxの大きさは表示する文字列に合わせて調整。

・mouseoutイベントでtextbox.visibleをfalseに

てな具合にすればtoolTipライクなものをマウスの右上に出すこともできると思うが…。
(ダサダサな方法だが…。)

>>362
???急に落下してくるもんってなに?
タグにタイトル属性付ければなんでもティップが表示されると思うが。

364 :デフォルトの名無しさん:02/10/17 19:06
C#からのwebブラウザコントロールの使い方なら、このソースを見ると、参考になるよ。http://www.geocities.co.jp/SiliconValley-Sunnyvale/5386/ちなみに、2ちゃんブラウザ作ってるの?

365 :デフォルトの名無しさん:02/10/17 19:25
新しいThreadを作る時に引数をもった関数でThreadStartできますか?

366 :デフォルトの名無しさん:02/10/17 19:31
>>365
ThreadStart デリゲート見るとダメっぽいね。

367 :デフォルトの名無しさん:02/10/17 21:24
>>385
アドホックinvokeを使えばできるよ。クラスライブラリではなく、C#のデリゲート
自動生成機能なんで探すのはめんどうだが。

368 :デフォルトの名無しさん:02/10/17 21:26
threadプール使えと言わんばかりの仕様に見えるのよねー

369 :デフォルトの名無しさん:02/10/17 21:30
>>367
アドホックinvokeって初耳ですがなんですか?
別に引数なくても困りませんが。スレッドクラス作るし。

370 :367:02/10/17 21:32
ms-help://MS.VSCC/MS.MSDNQTR.2002JUL.1041/cpguide/html/cpconcompilersupplieddelegatebegininvokeendinvokemethods.htm
これだけど、書けば勝手に作られてスレッドプール使われるからアドホック。
でも、本当は、アドホックデリゲートとおいらは書きたかったんだが、書き間違えたスマソ。

371 :367:02/10/17 21:37
>>369
こんなのもあるが、おいらは、Threadクラスから派生するほうが良いと思う。
・データの局所化(クラスのフィールドにパッケージング)
・テンプレートメソッドパターンが使える
とか、そんな理由から。
1ショットならアドホックデリゲートでも良いかも。

372 :デフォルトの名無しさん:02/10/17 21:40
>>367
詳しそうだから聞いてみちゃうけど、スレッド間のメッセージのやりとり
はどうやるのがいいですかね?
メッセージキューで調べるとシステムワイドのメッセージキューサービス
なんてのがでてきやがる・・・

373 :デフォルトの名無しさん:02/10/17 21:48
>>370
なるほど、それアドホックデリゲートって言ってたのね。
知らずに使ってたよ。
>>371
Threadクラスから派生かぁ。考えてもみなかったけど、
あまり必要に迫られていなかったなぁ。
でも考えてみれば、派生したほうが便利な場面あるね。
ありがとう。

374 :デフォルトの名無しさん:02/10/17 21:50
>>373
と思ったがヘルプみてみると、Threadクラスはsealedだわ。
継承できんがな・・・
漏れが意図を汲み取れなかったのだな・・

375 :デフォルトの名無しさん:02/10/17 22:07
>>372
非同期デリゲートつかうんじゃなかったっけ?
まあ場面によって色々あるけど、
ヘルプで「スレッド化チュートリアル」で引けば基本はわかるかと。

376 :デフォルトの名無しさん:02/10/17 22:16
うーん、一応スレッド関連は眺めてみたんですが、スレッド間通信という
のはありませんですた。

377 :デフォルトの名無しさん:02/10/18 00:25
>376

単にデータのやりとりをするなら非同期デリゲートでIAsyncResultのasyncStateん
中に放り込むとか?

単純なThread.Startに比べると、非同期デリゲートは なんかいちいち面倒で、
気軽に使えん。


378 :デフォルトの名無しさん:02/10/18 01:40
C#のツールバーってなんか退化してません?
ReBarとか、ドッキング可能なツールバーってなくなっちゃったの
でしょうか?

379 :367:02/10/18 02:41
>>374
ごめん。JavaのThreadとごっちゃになってた。.NETのThreadは継承できないね。逝ってきます

380 :359:02/10/18 04:52
>>360
>ImeModeプロパティが変更された場合に発生します。

いや、発生要因は Help は見ているからわかっているんだけど。
いつ呼ばれるのか、では無くて、どういうときに使うことを想定しているのか。
という質問なの。

IME 自身のモードを切り替えても呼ばれないし。


381 :デフォルトの名無しさん:02/10/18 09:32
俺が常用しているThreadの小技。使い方は MyThread.GetThread(スレッドに渡したい引数※).Start();
(※サンプルではstring strとint a)

一種のSingletonなんでstatic areaに生成したスレッドを格納するフィールドを用意したり適切な静的
メソッドを追加すればスレッドの多重生成禁止とかアボートとか自由自在で便利。

public class MyThread
{
  // static area ------------------------------------------
  public static Thread GetThread(string str, int a)
  {
    MyThread mythread = new MyThread(str, a);
    return mythread.GetThread();
  }
  // instance area ----------------------------------------
  private string str;
  private int a;
  private MyThread(string str, int a)
  {
    this.str = str;
    this.a = a;
  }
  private Thread GetThread(string str, int a)
  {
    return new Thread(new ThreadStart(MyMethod));
  }
  private void MyMethod()
  {
    // this.strとthis.aを使って何かする
  }
}


382 :381:02/10/18 09:44
今気付いたけどスレッド間通信も簡単に出来ると思う。
送信側は MyThread.SendMessage(受信側スレッド名 送りたいデータ) とかするだけで
受信側スレッドの状態管理なり排他制御なりは MyThreadクラスに任せてしまえる。

もしかしてデザインパターンとしてとっくに名前ついてる?


383 :381:02/10/18 11:37
すまん、間違い発見。
インスタンスメソッドの方のGetThreadだけど、引数要らんわな。


384 :デフォルトの名無しさん:02/10/18 12:55
#と♯って何が違うの?

385 :デフォルトの名無しさん:02/10/18 13:20
スレッドの話が出ているので便乗質問なのですが、
lock(this) {
  ....
  ....
}
って書いた場合、lockの{}で囲まれた処理だけが
排他的にスレッドによって実行されるってことなの?
それとも、(this)って書いてあるから、{}の中の処理
を実行中は、thisで示されたインスタンス自体がロック
されるってこと?



386 :デフォルトの名無しさん:02/10/18 13:25
>>380
コントロール表示時のIMEモードをどうするか設定しておくプロパティじゃないの?

つまり、ユーザが「半角/全角」キーを押すことは関係なく

387 :デフォルトの名無しさん:02/10/18 13:46
>>386
>>359-360読むと
そのプロパティが変更された時に発生するイベントが
何の役にたつのだと、言いたいわけだろう。

全部のプロパティにChangeイベントがいるか?

388 :デフォルトの名無しさん:02/10/18 14:19
>>387
ないよりはいいかと思う漏れは逝ってよし?
誰が何に使うかわからんわけだし、放置でいいでしょ。

389 :デフォルトの名無しさん:02/10/18 16:17
>>388
同意。

390 :デフォルトの名無しさん:02/10/18 20:41
>>385
thisがロックされるのではなく、(厳密な言い方ではないが)thisがさしている
オブジェクトにロック済みのマークが付けられる。そのため、
lock(this) {
を実行しようとするすべてのスレッドは、マークを付けたスレッド自身を除き、
そこでブロックされます。つまり、lockブロック抜きで
this.setxxx(xx);
する、スレッドを止める手段は無しです。
したがって、「インスタンス自体がロック」のほうに近いかな。lock(this)な
ブロックであれば、どこであっても影響を受けるから。

391 :デフォルトの名無しさん:02/10/18 21:02
>>390
つまりcooperative lockであってmandatory lockではないということですか

392 :385:02/10/18 21:24
大変よく分かりますた。

393 :デフォルトの名無しさん:02/10/18 21:41
うわ〜ん。IHTMLDocument2のイベントは onclickに限らず不発が多いよ〜。
これってC#特有の問題?バージョンがあがれば解決の望みあり?


394 :デフォルトの名無しさん:02/10/19 14:07
>>384
#は電話のボタンの右下のマーク
♯は音楽記号のシャープ


395 :デフォルトの名無しさん:02/10/19 22:37
>>393
ちなみに、どんなイベントがダメなの?

うわさによると、次期VS.NETに付属する.NET Framework1.1では直って
いるらしいが。

396 :デフォルトの名無しさん:02/10/20 00:02
>>395
どこで聞いた噂ですか?

397 :デフォルトの名無しさん:02/10/20 01:14
>>395
過去ログみてみ。β版でちゃんと治ってるって報告あり。

398 :デフォルトの名無しさん:02/10/20 02:59
>#は電話のボタンの右下のマーク
読み方は?

399 :デフォルトの名無しさん:02/10/20 06:54
>>398
たてたてよこよこ

400 :デフォルトの名無しさん:02/10/20 07:45
ま〜るかいてちょん

401 :デフォルトの名無しさん:02/10/20 07:48
(+。+)アチャー。

402 :デフォルトの名無しさん:02/10/20 08:52
>>398 い!

403 :ネットワーク試験遅刻しそう:02/10/20 09:06
BitmapメンバのSetPixelメソッドははPaintEventArgs eを取得して処理しないといけないのでしょうか?単独で使うとエラーがでます。
これはあるBitmapにピクセルをセットするとVC++のOnPaint()などの処理を呼び出さないといけないのでしょうか?
わかる方宜しくお願いします

404 :デフォルトの名無しさん:02/10/20 09:07
>>403
いや、早く行けよ。がんばれよ。

405 :デフォルトの名無しさん:02/10/20 09:48
>>398
いげた。

そういえば大学でC教えてた教授が「いげた」って言ってた。「いげたインクルード」とか。
今、C#のことを「シーいげた」って言ってんのか確かめたい!

406 :デフォルトの名無しさん:02/10/20 10:30
>>405
その理屈でいくと、「C++」は「シーくさかんむり」にでもなりそうなものだが。

407 :405:02/10/20 10:43
ちゃんと「ぷらぷら」って言ってた。「シー」は言わずに。

408 :デフォルトの名無しさん:02/10/20 12:57
.<見えるかな?のことを、うちの会社ではみんなポツと呼ぶ。
unknownはアンノンと呼ぶ。
C++はシーププラだし、うちの会社変な奴ばっか(´д`;)

409 :デフォルトの名無しさん:02/10/20 14:07
>>403
ちゃんと、サイズを指定してビットマップ作ってる?

410 :デフォルトの名無しさん:02/10/20 18:30
C#で使えるデリゲートというものがありますが、
このデリゲートとイベントの違いは何でしょうか?

イベント機能はデリゲートを使って作られているそうですが、
何が、普通のデリゲートと違うのでしょうか?

何かあったら登録されているメソッドを呼び出すというのは
デリゲートとまったく同じだとおもうのですが、

411 :デフォルトの名無しさん:02/10/20 18:36
フォームのボタンを押すと、別スレッドで重たい処理をやって、
その結果が出たら、フォームにあるテキストボックスに結果を
表示しようと思っているのですが、別スレッドから、フォームの
コントロールに直接アクセスしてはいけないそうです。

じゃぁ、いったいどうやったらいいのでしょうか?

すぐ上のレスでイベントの話が出ていますが、イベントを使っても、
やっぱりだめなんですよね?イベントとか実行しても、フォーム側の
スレッドで実行されないんですよね?

なんか、ここら辺がよく分かってないのですが、C#のイベントというの
はMFCとかのWindowsのメッセージによるイベント駆動のイベントとは違うのでしょうか?
あの昔のイベントなら、メッセージをキューに入れておけば、フォームのスレッド
が暇になったときに勝手に実行してくれたりしたのですが、、、



412 :デフォルトの名無しさん:02/10/20 19:30
C++の

int x;
unsigned char buf[100];
int* p=(int*)&buf[x];

をC#で書きたいのですがどうすればいいのですか。
int buf[100];
int* p=buf;
ならばうまくいくのですが。
char*からint*への変換はできないのでしょうか。
なお、「fixed」「/unsafe」を使うことは分かっています。

413 :411:02/10/20 21:14
調べてみたら、なんとなく分かりました。
どうやらこの方法を使うようです。

ms-help://MS.VSCC/MS.MSDNVS.1041/cpguide/html/cpcondevelopingmultithreadedwindowsformscontrol.htm

414 :デフォルトの名無しさん:02/10/20 21:41
>>413
というかカコスレに超既出なんだが、、

415 :デフォルトの名無しさん:02/10/21 00:45
>>410
激しく既出。

フィールドとプロパティの関係と似たようなもの。

class Hoge
{
 int n; // フィールド
 int N { get { return n;} } // プロパティ

 HogeDelegate f; // 普通のデリゲート型のフィールド
 event HogeDelegate OnXXX; // イベント
}


416 :410:02/10/21 02:36
>>415
過去ログの方も読んでみました。大変参考になりました。

でも、>>415 ということは、なるべく、eventを使って隠蔽化した
方がいいということなんでしょうかね。


417 :デフォルトの名無しさん:02/10/21 08:30
>>411
Control.Invoke

418 :デフォルトの名無しさん:02/10/21 10:29
>>415
今まで何となくしか理解してなかったけど、
簡潔かつ分かりやすくて目の前が開けますた。
サンクス!

419 :デフォルトの名無しさん:02/10/21 12:11
textBoxにWriteLineするにはどうしたらよいですか?

420 :デフォルトの名無しさん:02/10/21 12:35
改行するってこと?MultiLineにして\r\nでいいのでは?

421 :デフォルトの名無しさん:02/10/21 14:17
他には、Environment.NewLineとかあるけど、\r\nで良さそうだね。
MessageBoxの場合、\nでも大丈夫だった。

422 :デフォルトの名無しさん:02/10/21 15:08
>421

\rが必要だっていうのには俺もかなり悩んだなあ。
windows名前空間だから\r\nなわけぇ? とおもいきやmessageboxは
言われてみれば\nでもいけるし。なんかここら辺の不統一が気持ち悪いね。

宇宙仮面も怒ってたな

423 :デフォルトの名無しさん:02/10/21 15:11
private void button1_Click(object sender, System.EventArgs e)
{
  textBox1.Text = textBox1.Text.Insert(textBox1.Text.Length, "\r\n");
  textBox1.Text = textBox1.Text.Insert(textBox1.Text.Length, "AAA" );
  textBox1.Text = textBox1.Text.Insert(textBox1.Text.Length, "\r\n");
  textBox1.Text = textBox1.Text.Insert(textBox1.Text.Length, "BBB" );
}
こんな感じ?
with 使うほうがよさそうですね。

>>422 Windowsの仕様依存なんでしょうね。

424 :デフォルトの名無しさん:02/10/21 15:12
おれも 怒ってる ゴラァ!

425 :デフォルトの名無しさん:02/10/21 15:28
>>423
textBox1.Text += "\r\nAAA\r\nBBB";
じゃダメなのか? (;´Д`)

426 :デフォルトの名無しさん:02/10/21 16:04
>423

なぜにこんな回りくどいことを……????
425かtextBox1.AppendText("\r\nAAA\r\nBBB"); のどっちかっしょ。


427 :デフォルトの名無しさん:02/10/21 19:23
(;´Д`)

428 :デフォルトの名無しさん:02/10/21 19:38
(;´Д`) <書くのもメンドくさい

429 :デフォルトの名無しさん:02/10/21 19:39
くだスレの方が質問レベル高いような気がする。

430 :デフォルトの名無しさん:02/10/21 20:36
C#カンファレンス 2002
http://www.shoeisha.com/event/cs/

431 :デフォルトの名無しさん:02/10/22 00:19
たまにゃ土日に大阪でやってくれ。。。

432 :デフォルトの名無しさん:02/10/22 10:18
Microsoft .NET Pet Shop 2.0
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/bdasamppet.asp

433 :デフォルトの名無しさん:02/10/22 11:05
>>432
インストール時にWindows認証も選べるようになったので、MSDE使いも楽に動かせるね。

434 :デフォルトの名無しさん:02/10/22 12:54
「Panel」だと「OnMouseWheel()」って駄目なんでしょうか。

435 :433:02/10/22 14:19
と思ったら、やっぱり混合モードにしないと動かないみたいね。
ということで、ここを参照。
http://www.sqlpassj.org/bunkakai/begin/series/s01/0113.aspx

436 :デフォルトの名無しさん:02/10/22 16:08
今月号は買いづらいなあ。(;´Д`)
http://dotnet.impress.co.jp/index_b.htm

437 :デフォルトの名無しさん:02/10/22 16:14
>>435
そんなしちめんどくさいことを。。。レジストリいじればすぐになおるっしょ。
やり方は今月のDBマガジンの付録に書いてあった。

438 :デフォルトの名無しさん:02/10/22 16:23
>>430
セッションを投票で決めるらしい。もうネタがないのか?(w

439 :433:02/10/22 16:29
>>437
ほんとだ。レジストリのLoginMode変えてDB再起動するだけでできた。ありがと。

440 :デフォルトの名無しさん:02/10/22 16:37
>>438
マイナーなネタでもふるか。メッセージキューとか。

441 :デフォルトの名無しさん:02/10/22 16:48
>>440
選択肢は3つらしい。
http://www.shoeisha.com/event/cs/vote/

442 :デフォルトの名無しさん:02/10/22 16:49
出来レースだな、こりゃ。

443 :デフォルトの名無しさん:02/10/22 17:14
ほんとにどれがきてもしゃべるのか?しゃべれるのか?

444 :デフォルトの名無しさん:02/10/22 22:26
XmlObjectSpaceを使ったIBuySpy実装。なかなか面白そう。
http://www.gotdotnet.com/Community/Workspaces/Workspace.aspx?id=b706dc79-415d-45de-8a6c-eb518adb0075

445 :デフォルトの名無しさん:02/10/22 23:52
やっぱりObjectSpacesでリレーション設定したオブジェクトは
XMLに出来ないのかなぁ・・・

446 :デフォルトの名無しさん:02/10/23 05:09
http://www.daimi.au.dk/~vedel/microsoft/ms-pub/VS.NET/program%20files/microsoft%20visual%20studio.net/vc7/vcpackages/
ここに置いてあるdllって安全?

447 :デフォルトの名無しさん:02/10/23 07:14
>>446
日付を見る限り、ベータっぽくない?

448 :デフォルトの名無しさん:02/10/23 08:11
MSDNどころかC#Standard買う金ないんで
60日の体験版で勉強したいんですが
あれって、60日過ぎても
また再インストールして使えないですか?
SharpDevelopは何故かうちの環境じゃ動かないんです。

449 :デフォルトの名無しさん:02/10/23 11:05
デザイン時に、コントロールのプロパティにデータソースを指定する際、
TypeConverter("System.Windows.Forms.Design.DataSourceConverter")
っていう属性を付けると、一覧から選ぶことが出来るけれど、標準のComboBoxや
ListBoxのDisplayMemberのように、列を一覧から選ぶことが出来るように
するには、どの属性を付ければいいんだろう?
Editor("System.Windows.Forms.Design.DataMemberFieldEditor", typeof(UITypeEditor)
とか
TypeConverter("System.Windows.Forms.Design.DataMemberFieldConverter")
つけても駄目だった。むむ〜。まぁ正しい列の文字入力すれば動くけれど。

だれかわかる人いますか?

450 :デフォルトの名無しさん:02/10/23 12:18
>>448
.NET Frameworkにコンパイラついてくるぞ。
無料で配ってる。

451 :デフォルトの名無しさん:02/10/23 12:40
.NETに陰りが出始めてるよ。
C#<<<JAVAが
C#<JAVA
にすらなっていない現状。
クライアントアプリを作るにも、C#クソだし
サーバーサイドやるにしても.netクソだし、
.netの設計者殺すしかないかも。

452 :デフォルトの名無しさん:02/10/23 13:52
スレ違い
http://pc3.2ch.net/test/read.cgi/tech/1034875332/l50

453 :デフォルトの名無しさん:02/10/23 23:47
http://www.ascii.co.jp/pb/msdn/toc/bn_no31.html
ちょっとよさげな内容。

454 :デフォルトの名無しさん:02/10/24 00:22
>>453
これでつか?

> .NETセキュリティ
> エビデンス,ポリシー,パーミッション,施行サービスを提供するCLRの
> セキュリティインフラストラクチャ
> (September 2002 Vol.17 No.9)●Don Box

455 :デフォルトの名無しさん:02/10/24 00:26
日経ナントカよりはマシだろうか

456 :デフォルトの名無しさん:02/10/24 01:01
相変わらず訳が糞だねぇ。施行サービスってなんだよ?

457 :448:02/10/24 10:56
>>450
.NET Frameworkは一応コマンドラインで使ってるんだが
借りてきたC#の本に対応していないので勉強できない・・・
DelphiみたくStandardタダにするとか
機能限定無料版とか無いのがイタイ
60日間試用版って一回消していれなおして使えんのかなぁ・・・・
情報キボンヌ。

458 :デフォルトの名無しさん:02/10/24 11:09
>>457
フリーの.NET統合開発環境「SharpDevelop」
http://pc3.2ch.net/test/read.cgi/tech/1023727377/
とかいうスレが立ってるから、見てみたら?

459 :デフォルトの名無しさん:02/10/24 11:19
>C#Standard買う金ないんで
リアル小学生でも親にねだって
買ってもらえる程度の額を、出せないなら
生活保護を受けに逝った方がいいよ。
>機能限定無料版とか無いのがイタイ
正直、きみの方がずっとイタイ

460 :448:02/10/24 11:32
>>458
サンクス
実は、SharpDevelopスレの181が漏れなんですわ
未だにフォーム表示するだけの空アプリも作れんので凹んでます
VB6やVC6ならおもむろにF5押すだけで出来るのに・・・


461 :デフォルトの名無しさん:02/10/24 13:11
立派な機能限定無料版だと思うのだが

462 :デフォルトの名無しさん:02/10/24 13:18
出ルφなら何でも出来るがC♯は何も出来ないという認識でよいですか?

463 :デフォルトの名無しさん:02/10/24 13:23
>>462
いいですよ。他で議論するところいっぱいあるから他でやってね。

464 :デフォルトの名無しさん:02/10/24 13:36
質問です。Windowsを終了する時に、自作アプリケーションを起動しておくと
Windowsの終了処理が中断してしまいます。そこで、
Microsoft.Win32.SystemEvents.SessionEnding += new Microsoft.Win32.SessionEndingEventHandler( OnShutdown );
としてハンドラにはthis.Close();としてフォームを閉じる処理を記述して対応しようとしたのですが、
どうもうまくいってないようです。何か対処法はないでしょうか?

465 :デフォルトの名無しさん:02/10/24 17:57
>>457
アクティベーションが必要になるから無理では?

466 :デフォルトの名無しさん:02/10/24 20:55
>>465
ウィンドウがアクティブじゃないと駄目なんですか・・・
役にたたないですね、それじゃ。
どうすればいいんでしょうね。シャットダウン処理とめるのがデフォルトだと困るなぁ。

467 :デフォルトの名無しさん:02/10/24 20:56
>>465
アクティベーションが必要になるのは、
アカデミック版だけじゃないの?
試用版も必要なの?

468 :デフォルトの名無しさん:02/10/24 20:57
>>466
何か、>>465のレスを勘違いしてない?

469 :デフォルトの名無しさん:02/10/24 21:10
>>468
あ! 思いっきり勘違いしてますた。逝ってきます。鬱すぎる・・・

470 :デフォルトの名無しさん:02/10/24 21:15
>>467
ネットを使ったライセンス認証が必要。なんか本買った時とかに付録で付いてたのが
貯まってしまって三枚くらい体験版あるけど日経の「C#で始めるWINプログラミング」
にはアクチが必要と書いてある。
他2枚は特に注意書きはないけど、同じ体験版だし必要かと。

471 :467:02/10/24 21:38
>>470
なるほど、サンクスです

472 :デフォルトの名無しさん:02/10/24 22:17
>>447
>借りてきたC#の本に対応していないので勉強できない・・・

君だめぽすぎ。C#の本に対応って・・・本末転倒じゃねぇか。
開発環境がらみのところは読み飛ばしちまいな。

473 :472:02/10/24 22:18
447じゃなくて、457。俺もだめぽすぎた・・・逝ってまいります。

474 :デフォルトの名無しさん:02/10/24 23:19
>>471
間違った。体験版入ってるのは「始めようC#」だった。

475 :デフォルトの名無しさん:02/10/26 00:26
>>460
SharpDevelopの0.92が出ているよ。試してみたら?

476 :デフォルトの名無しさん:02/10/26 00:30
お前らみんなダメポすぎんな
間違いだらけだぞ!

次に来るのは決まってABですが何か?

477 :デフォルトの名無しさん:02/10/26 03:41
::::::::::::::::::( ノ:::::::::::::::::::::::::::::   | 十   ┼   キ . 十   ┼   キ
:::::::::/::::::::::::::::::::::::::::::::::::::::::    |⊂ レ ヽ ノ こ (フヽ ⊂ レ ヽ ノ こ (フヽ
:::::::/\::::::::::::::::::::::::::::::::::::::    !
::::::/  \::::::::::::::::::::::::::::::   /. 十   ┼   キ . 十   ┼   キ
::::/    \:::::::::::( ノ:::   / ⊂ レ ヽ ノ こ (フヽ ⊂ レ ヽ ノ こ (フヽ
:::: ̄ ̄ ̄ ̄ ̄:::::::::::    '                 /l
:::::::::::::::::::::::::::::::::    / 十   ┼   キ       / .:|
:::::::::::::::::::::      -   ⊂ レ ヽ/  ̄ \ヽ  _ −'  .::└‐- .,/
::::::  _ ―  ̄         /  ..::::::::::..l /   ..::::::::::::::::::::......
. ̄ ̄    十   ┼   キ   |  ::::::::::::::ノ/   ::( ノ:::::::::::::::::::::::::::
    ∧ ⊂ レ ヽ ノ こ (フヽ  |  ::::::::::/ l   ::::::::::|::::::::::::::::::::::::::::
    /:. `,             |  ::::::::::| |  :::::::::::::::| ̄ '‐- ._/
   /::::. '、  十   ┼   キ .l  ::::::::::ヾ  :::::::::::::::|    /::::::
___/::::::::. `、⊂ レ ヽ ノ こ (フヽ !  ::::::::::::゙、  :::::::::::::::|  /::::::::::::
:::::::::::::::::::::  \          ヽ.  ::::::::::::\ ::::::::::::|/:::::::::::::::::::
:::::::::::::::::( )  ヽ  十   ┼   キヽ :::::::::::::::` -::::::::::::::::::::_ -''
:::::::_/:::::::::::::..   i⊂ レ ヽ ノ こ (フヽ \ :::::::::::::::::::::::::::::::::::::::::::::::::
 ̄  /::::::::::::::::::   l    _ ― 、     〉 ::::::::::::::::::::::::::::::::::::::::::::::
   /::::::::::::::::::::   |  /    \  ┼   キ . 十   ┼   キ
  /:::::::::::::::::::::   l  |  .::::::::::::. ヽ ノ こ (フヽ ⊂ レ ヽ ノ こ (フヽ
\/:::::::::::::::::::::   / / :::::::::::::::::: }


478 :デフォルトの名無しさん:02/10/26 07:00
>>476
次に来たのはAAでした。

479 :デフォルトの名無しさん:02/10/27 04:33
質問です。
NotifyIconのContextMenuを使うとステータス領域を“右クリック”で
ポップアップメニューを表示させることができますよね。
でも、NotifyIconを使ってステータス領域に表示されたアイコンを“左クリック”で
ポップアップメニューが表示されるようにしたいのですが、
どうしても方法がわかりません。ご教授ください。

480 :デフォルトの名無しさん:02/10/27 07:48
>>479
ContextMenu.Show()

481 :デフォルトの名無しさん:02/10/27 08:37
書かれてみると案外左クリックも便利かもね?

482 :デフォルトの名無しさん:02/10/27 10:30
期待しましょ。
http://www.develop.com/kbrown/book/default.htm

483 :デフォルトの名無しさん:02/10/27 18:24
疑問だったんですけど、なんで const なメソッドが無くなったんでしょう。
例が悪いけど、
void AssertValid() const;
とか
void Dump(...) const;
とかどうしたら良いんでしょうか。

484 :デフォルトの名無しさん:02/10/27 18:31
多重継承とかテンプレートとか、VB厨に理解できないようなものは、すべて外されたデス。

485 :デフォルトの名無しさん:02/10/27 18:36
>>483
constをつけるまでも無くコンパイラが自動判別するから

486 :484:02/10/27 18:56
半分ネタで書いたんだが(俺もVB上がりだし)マジで理解してないやつもいるんだな。

487 :デフォルトの名無しさん:02/10/27 18:59
>>486
まぁ、インターフェースでそれなりにカバーできるし。

テンプレートは激しく欲しいよ。テンプレート厨が沸くのはうざいが。

488 :デフォルトの名無しさん:02/10/27 19:06
AssertValidがフィールドいじってるかどうかなんてきにすんな。
そう組んだやつがわるい。

489 :デフォルトの名無しさん:02/10/27 21:38
スレッドを強制的に終了する方法はありますか?
Abortとか使ってもSuspend中のスレッドは終了できないみたいなんですが・・・


490 :デフォルトの名無しさん:02/10/27 22:04
>>485
const というのは、プログラムミス防止のためのものであるから
勝手にコンパイラに判断されては困ると思うのだが・・・

491 :デフォルトの名無しさん:02/10/27 22:36
>>490
へぇ。

492 :483:02/10/27 23:37
私もそう思うんだけど。
実際には const は使えないんですよね。
なんでだろ…?

493 :デフォルトの名無しさん:02/10/27 23:54
> 疑問だったんですけど、なんで const なメソッドが無くなったんでしょう。

必要ないから。

そもそもconstメソッドなんかに頼っている時点で、カプセル化の意味がなし。
# オブジェクト自体をimmutableにするとか、いろいろ方法がある。

494 :デフォルトの名無しさん:02/10/28 00:12
例えばそのオブジェクト自体をimmutableにする場合に、
DBC的な用法でconstメンバ関数を使うことも十分あるのでは。

#どの言語でも原理主義者はいややね。

495 :デフォルトの名無しさん:02/10/28 00:12
constというのはROMに配置するためにあるのだ!

496 :デフォルトの名無しさん:02/10/28 00:24
まぁJavaと違って普通に関数作れるしね・・・。


497 :479:02/10/28 02:22
>>480
ありがとうございます。
ところが、Showメソッドは引数がControlなので、NotifyIconを引数に指定できません。
なにかうまい方法でもあるんでしょうか?

498 :デフォルトの名無しさん:02/10/28 02:41
>>483
C#ではObject型はすべて参照という点に注意して考えてみてください。
意味が薄くなってきたから、いっそ取り除いてシンプルにしてしまえと言う事だと思います。
C++ 見たいに class をオブジェクト型だけではなく、代数型や構造体のように使うことをやめ
オブジェクト型に特化しているので、オブジェクトがメンバとして実体配置されることが無くなって
そのオブジェクトが参照している先まで const か?
ということになってしまいます、そこを見ないなら、constの意義がないです。

>そもそもconstメソッドなんかに頼っている時点で、カプセル化の意味がなし。
貴方は論点はずしまくり


499 :デフォルトの名無しさん:02/10/28 09:31
漏れはいつもconst用のコメントブロックを作るスタイルなので
const無くてもへーき。

500 :483:02/10/28 18:32
>>498 意見どうもです。
オブジェクトを Dump すると、そのオブジェクトが参照(と言うより所有)しているオブジェクトもダンプする事がありえますよね。
元のオブジェクトが(C++で言うと)参照定数のコンテクストにあるとき、Dump 呼び出しは所有物に対しても通るけど、他の const でない操作はコンパイラがブロックしてくれる…
っていうのが存在価値なんじゃないかなと思ってるんです。

自分で面倒見やがれと言うスタンスで統一したと言う事でしょうかね。

501 :デフォルトの名無しさん:02/10/28 22:20
>>497
おいおい。
ContextMenuにShowメソッドがあるって。

502 :479:02/10/29 00:09
>>501
度々すみません。

private void nIcon_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
   if (e.Button==MouseButtons.Left)
    {
    ContextMenu.Show();
    }
}

ということでしょうか?コンパイルエラーになるのですが・・・。

503 :デフォルトの名無しさん:02/10/29 00:29
>>502
>ということでしょうか?コンパイルエラーになるのですが・・・。

で、エラーメッセージ書かないボケはどこのドイツですか?

504 :デフォルトの名無しさん:02/10/29 00:32
>>502
つうかヘルプでShowメソッドのところみたか?
引数たんねーよ それじゃ。

505 :デフォルトの名無しさん:02/10/29 01:42
エラーメッセージ書かないのはネタだと何回も何回も・・・(略

506 :479:02/10/29 02:33
>>503
すみません。コンパイルする以前の問題だったので、書きませんでした。
気をつけます。

>>504
ContextMenu.Show((Control)sender,new Point(e.X,e.Y));
とすると、senderがNotifyIconなのでキャストできないですよね。
かといって、NotifyIconコントロールを貼り付けたFormを指定すると、
「System.ArgumentException: 非表示のコントロールでは、ContextMenu を表示できません。」
になるし。

507 :デフォルトの名無しさん:02/10/29 08:06
>>506
言っても書かない馬鹿一人。

508 :デフォルトの名無しさん:02/10/29 21:07
いいなぁ、バカって。
人生、楽そうだ。


509 :デフォルトの名無しさん:02/10/29 22:53
そのDLLを参照に追加してみるのが最初の一歩だと思った

510 :501:02/10/30 00:05
>>506
497での発言は、ContextMenuのShowメソッドを見た上でのコメントやったんね。
やっと意味わかったよ。

このShowメソッドは使えないね。
かといって、左クリックを右クリックとだまくらかす方法はないかと
考えてみたが、ちといいアイディアなしだわ・・・。

いけそうで、いけないな・・・むむむ。

511 :デフォルトの名無しさん:02/10/30 01:08
タスクトレイに常駐するだけのアプリケーションはどのように書きますか?

512 :479:02/10/30 01:26
>>510
そうなんです。いけそうで、いけないんです。
あきらめてAPIでいこうかと思ったんですが、
面倒だからそのまま右クリックに逃げました。(苦笑

>>511
Form1にNotifyIconを貼り付けて、
static void Main()
{
Form1 form = new Form1();
Application.Run();
}
ではだめでしょうか?

513 :デフォルトの名無しさん:02/10/30 01:44
Formはいらないのですが、そういうことはできますか?

514 :デフォルトの名無しさん:02/10/30 08:04
コンソールアプリケーション

515 :デフォルトの名無しさん:02/10/30 11:35
TabControlにTabPageをAddしていって、表示がいっぱいになると
Tabをスクロールするのに右の方に[←][→]みたいな矢印がでますが
この矢印の大きさを変えることってできるのでしょうか?



516 :デフォルトの名無しさん:02/10/30 18:45
>>514
どっちにしろウインドウ作らないとメッセージが飛んでこないわけで。
一瞬で終了ってアホっす。

517 :デフォルトの名無しさん:02/10/30 21:30
http://homepage3.nifty.com/takubon_world/software/IMEWatcher/index.html
こういうソフトはどうやってつくるのでしょうか?

518 :デフォルトの名無しさん:02/10/30 21:46
516=511なの??
単にフォームがいらないだけならコンソールアプリケーション。
常駐したいならServiceBase継承してサービスアプリケーションかけ。

以上

519 :デフォルトの名無しさん:02/10/30 22:14
知らない事だと"以上"と言って終わらせたい低脳がいるスレはここですか?

520 :デフォルトの名無しさん:02/10/30 22:24
Windowsアプリでも >>511 はできるけど。

521 :デフォルトの名無しさん:02/10/30 22:58
>>511
Application.Run()だけでOK。
Application.Exit()で終了!

522 :521:02/10/30 22:59
NotifyIconにFormは必須じゃないYO!

523 :デフォルトの名無しさん:02/10/31 16:10
ListViewってタイマーなんか使って定期的にアイテムのテキスト更新すると絶対ちらつくね。
ちらつく頻度はまちまちだけど、駄目だね。
SetStyle(ControlStyles.DoubleBuffer, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true);
とかlistView.BeginUpdate();とかさ試したり、
control.BeginInvoke();とかさタイマーのイベントの中でやってみたのね。無駄なのわかってたけど。
駄目なんだね。仕様ね・゚つД`)゚・。



524 :デフォルトの名無しさん:02/10/31 18:34
>>523
そう思うなら変更があったときだけ書き換えろや。アホか。

525 :名無しさん:02/10/31 19:05
>>523
変更されたアイテムだけをUpdateするようなメソッドを自作すれば?

526 :デフォルトの名無しさん:02/10/31 19:18
ダウンロード状況表示するようなやつなんで、変更されたもんだけってわけにはいかなっす。
一秒ごとに経過時間加算して表示すんだし。

527 :デフォルトの名無しさん:02/11/02 21:58
VBのDoEventsみたいなのはどうやればいいんでしょうか?

528 :デフォルトの名無しさん:02/11/03 00:10
変数名に大文字使えなくするにはどうすればいいのですか?


529 :デフォルトの名無しさん:02/11/03 00:35
>>527
Application.DoEvents

530 :デフォルトの名無しさん:02/11/03 00:36
>>528
そういうことを考えた人を殺してください。

531 :デフォルトの名無しさん:02/11/03 00:36
>>528
そうしたい理由がわからん。
君が気を付ければいいだけの話。

532 :デフォルトの名無しさん:02/11/03 00:46
>>523
変更したときだけ再描画するようにせーよ

533 :デフォルトの名無しさん:02/11/03 02:30
>>531
int a;
a=2;

これでaは空間に存在しないってエラーが出て数分間はまった気持ちがあなたにわかりますかあ?

534 :デフォルトの名無しさん:02/11/03 02:33
>>533
どこに大文字があるんですか?(プ

535 :デフォルトの名無しさん:02/11/03 03:54
大文字じゃなくて全角文字?

536 :デフォルトの名無しさん:02/11/03 06:15
大文字と全角文字を勘違いしていたというオチですか?つまらん。

537 :デフォルトの名無しさん:02/11/03 11:04
>>533
intとaの間に全角スペース?

全角スペースも使えなかったっけ。(使いたくはないが)
全角+も全角数字も使える。
ちゃんと1+1は2になる。

538 :デフォルトの名無しさん:02/11/03 11:09
>>533
UNICODEで保存しないと全角文字は使えない。
全角スペースが入ってて悩むような馬鹿がUNICODEでソースを保存してたりはしないだろ。

539 :デフォルトの名無しさん:02/11/03 11:37
>>538
特に初期設定から変えてなくても全角文字使えますけど・・・。

540 :538:02/11/03 11:57
>>539
今、確認してみたら確かに使える。
β1の頃は無理だったんだけど。


541 :538:02/11/03 12:05
ついでにちょっと 533 みたいなのも試してみた。
全角スペースを □、
半角スペースを _ で書くと、

a,□_b
見たいに、全角スペースと識別子が並んでない場合はOKで、

a,_□b
見たいに、全角スペースと識別子が並んでる場合はコンパイルエラーになった。


542 :デフォルトの名無しさん:02/11/05 12:05
HttpWebResponse httpRes = (HttpWebResponse)httpReq.GetResponse();
Stream st = httpRes.GetResponseStream();
StreamReader sr = new StreamReader(st, Encoding.GetEncoding("Shift_JIS"));

上記のようにStreamReaderを使って、webからテキストを読み込む
際に、何バイト読み込んだかを取得する方法はあるでしょうか?
サーバがContent-Lengthを返さない場合なのですが、、、

自分なりに考えてみると、StreamReaderを使わず、直接、バイト
単位で読み込み、容量を計算し、随時、バイト列をテキストに直す
方法ぐらいしか思いつかないのですが、、、

何かいい方法があれば、教えてください。



543 :デフォルトの名無しさん:02/11/05 12:08
C#でWebServiceの質問です。Windows2000上でIISを使ってます。
IISでセッションタイムアウト値を30(分)に設定しても、以下の
sumNumbersメソッドが返す値が20以外になりません。
どうしてでしょうか?

-------------------------------------------------
using System;
using System.Web.Services;

namespace SumService {

[WebService(Namespace="http://tempuri.org")]
public class SumEx : WebService {
[WebMethod(EnableSession=true)]
public int sumNumbers(int x, int y) {
lock(Session) {
return Session.Timeout;
}
}
}

}
-------------------------------------------------


544 :543:02/11/05 14:47
Global.asax の Session_Startハンドラで Sessionのタイムアウトを
初期化するしかないのかな??
うーむ。

545 :デフォルトの名無しさん:02/11/05 21:23
そういやMSDNのドキュメントで読み取り専用な配列は無いから、
プロパティにしてそのまま返すと大変な事になる。
GetXXX系の関数にしてコピーを返すべきだ、とか書いてあったな。
もう、馬鹿かと、アフォかと。
だったらconst使わせろと。
まぁ、PointとかRectangleとかしょうもない物まで全部参照型で何が何でもコピーを返さなきゃいけないJavaよりははるかにマシか。

546 :デフォルトの名無しさん:02/11/06 12:47
SDKでのActiveX使用方法について疑問があります。
コンパイル時に
ActiveXのDLLをソースファイルと同じディレクトリにコピーして

csc MyApl.cs /reference:AAA.dll,BBB.dll
としてコンパイルすると正常にMyApl.exeが実行されるのですが、
AAA.dll,BBB.dllを違うディレクトリに置いた時(例えばc:\)

csc MyApl.cs /lib:c:\ /reference:AAA.dll,BBB,dll
とするとコンパイル自体は問題なく終了するのですが、
実行時に「ファイルまたはアセンブリ名AAA.dllまたはその依存関係の
1つがみつかりませんでした」
というエラーが出ます。
MyApl.exe実行時にAAA.dll,BBB.dllのパスを通してもダメ
なにか他に指定する事があるのでしょうか?
分かる方いらしたらよろしくお願いいたします。



547 :デフォルトの名無しさん:02/11/06 13:06
>>545
>PointとかRectangleとかしょうもない物まで全部参照型で何が何でも
>コピーを返さなきゃいけないJava

ちなみにC#だったらどのように解決してくれるの?

548 :デフォルトの名無しさん:02/11/06 13:28
こんにちは。質問させてください。

構造体
struct main_data{
z[810000];
z1[810000];
}data;

があるとします。
そこでCで↓のように書かれた場合、
C++ではどのように書くのでしょうか?

for(int i=0; i<900; i++){
for(int j=0; j<900; j++){
(data+j+i*900)->z = nodata;
}}

どなたかよろしくお願いします。

549 :デフォルトの名無しさん:02/11/06 14:40
C#にて、ネットワーク関係のプログラムを勉強したいのですが
良い書籍、HP等はありませんか?

550 :デフォルトの名無しさん:02/11/06 14:51
>>545
そこでの読取専用な配列とは、読み取られ側が読み取り側に対してかける制限であり、
読み取り側自身がかける制限であるconstとは違う。

551 :デフォルトの名無しさん:02/11/06 14:53
>>548
すれ違い。後。書き直す必要ある?

552 :デフォルトの名無しさん:02/11/06 14:53
>>549
MSDN

取りあえずSocket関係のクラス調べれば言いっしょ。

553 :548:02/11/06 15:15
>>551
スレ違いでした。すいませんでした。
あちらに質問してみます。


554 :デフォルトの名無しさん:02/11/06 15:45
C#.NETには、javaのBigDecimal同様の機能を持ったクラスはありますか?

555 :デフォルトの名無しさん:02/11/06 15:58
>>547
C#ならそう言うのは値型だから自動的にコピーされるYO

556 :デフォルトの名無しさん:02/11/06 16:07
>>555
参照で返したくても、自動的にコピーされちゃうの?

557 :デフォルトの名無しさん:02/11/06 16:09
モチロンダゼハニー

558 :デフォルトの名無しさん:02/11/06 17:15
>>556
参照で返したいなら参照で返すように書けばいい。

559 :デフォルトの名無しさん:02/11/06 17:27
TcpClientとNetworkStreamを使っていて、相手がコネクションを切断してきたということ
を知るにはどうしたらよいでしょうか?

560 :デフォルトの名無しさん:02/11/06 18:26
>>558
どーやってやるの? 教えてください。

561 :デフォルトの名無しさん:02/11/06 20:37
>>559
TCPのお約束に従うなら、readしてみないと分からないんじゃないかな

562 :デフォルトの名無しさん:02/11/06 20:46
>>542
System.Text.Encoding.GetByteCount(char[]);
System.Text.Encoder.GetByteCount(char[], int, int, bool);

byte[] から文字列に直すなら
System.Text.Decoder.GetChars(char[], int, int, char[], int);

詳しくは System.Text.Encoding クラスを参照。

563 :デフォルトの名無しさん:02/11/06 22:36
>>558
どーやってやるの? 教えてください。

564 :デフォルトの名無しさん:02/11/06 23:38
>>563ms-help://MS.VSCC/MS.MSDNVS.1041/csref/html/vclrfRef.htm

565 :デフォルトの名無しさん:02/11/06 23:40
>>562
えーと、それはつまり、

StreamReader sr = new StreamReader(st, Encoding.GetEncoding("Shift_JIS"));
string str = sr.ReadLine();

とかやった場合に
strのバイト数を
System.Text.Encoding.GetByteCount()
で計算すればいいということでしょうか?

しかし、
StreamReader sr = new StreamReader(st, Encoding.GetEncoding("Shift_JIS"));
とやってしまっているので、
string str = sr.ReadLine();
の段階では、UTF-16 なってしまっていると思うのです。
strを一度、サーバ側と同じShift_JISにコンバートしなおして、
GetByteCountをやればいいのかもしれないのですが、やはり
そういう方法しか無いでしょうか?



566 :デフォルトの名無しさん:02/11/06 23:54
バイト数を数えるだけのストリームを間に挟むとか。。。

567 :デフォルトの名無しさん:02/11/07 00:16
>>564
structを参照で返すことができるの? って話だと思うよ。
C++だと
mystruct& foo() {
return x;
}
みたいな。

これはC#で可能なの? ref,outが戻り値にも使えるの?

568 :デフォルトの名無しさん:02/11/07 08:31
戻り値は暗黙にout。refは無理。

569 :デフォルトの名無しさん:02/11/07 09:23
>>565
Encoding sjis = Encoding.GetEncoding("Shift_JIS");

StreamReader sr = new StreamReader(st, sjis);
string str = sr.ReadLine();

int size = sjis.GetByteCount(str);

こうするとか。

570 :デフォルトの名無しさん:02/11/07 10:33
>565

結局はストリームで直にバイトを読んでいってstream.Readの返り値で
バイトを数えて、最後にstringにするのが一番楽なんじゃないかな?

int bufferSize = 1024;
int byteRead = 0;
byte[] buffer = new byte[bufferSize];
MemoryStream data = new MemoryStream();

do
{
byteRead = st.Read(buffer, 0, bufferSize);
data.Write(buffer,0,byteRead);
//読み込んだバイト数はbyteReadなので、好きなように使う。
}
while(byteRead > 0);

string html = Encoding.Default.GetString(data.ToArray());
data.Close();
st.Close();


571 :デフォルトの名無しさん:02/11/07 11:50
>>569
なるほど、それだとスッキリ書けますね。
でも、速度的には >>570 の方が早いのでしょうか。
まぁ、でも、こんだけマシンパワーのある時代なので、
分かりやすく書ける方がよさそうですね。

というか、MFCにあるByteArrayみたいなクラスは無い
のかと思っていたら、MemoryStreamを使えばよかった
のですね。いま気づいたYo!



572 :デフォルトの名無しさん:02/11/07 17:02
>>571
まあ、>>569 だと二度手間(?)になるから、>>570 のほうがいいとおもうね。
一回 byte[] から char[] や string にしたものをまた byte[] に
変換して(るのかどうかしらないけど)サイズ取得だから…
>>570のほうが(・∀・)イイ!!と思うよ。

573 :デフォルトの名無しさん :02/11/08 03:30
SHDocVwのBeforeNavigate関連で質問なんですが
ページを更新した場合呼ばれないのは仕様ですか?
呼ばれないのだとしたら更新を検知するには何を使えばよいでしょう?
更新時にもURLとかヘッダーとかの情報を取得したいです

574 :デフォルトの名無しさん:02/11/08 14:45
MenuのショートカットってWindows自体でもそうなのですが、
使いにくくないですか?

this.mainMenu = new System.Windows.Forms.MainMenu ();
MenuItem miFile = new MenuItem("&File");
mainMenu.MenuItems.Add(miFile);
miFile.MenuItems.Add(new MenuItem("&New"));
miFile.MenuItems.Add(new MenuItem("&Open"));

としておいてALT+Fを使うのが普通なんですが、KeyPressイベント
などを使ってF2押すとダイレクトにFileメニューの内容(New,Open)を表示
するようには作れないものなのでしょうか?
(メニューを避けてボタンを配置してダイアログを表示するって手はナシとして)
簡単そうに思えるのですが、どーもうまく行かない。
昔のDOSプログラムって画面の一番上にF1 F2 F3とか表示してあり
ましたよね。案外あの方が慣れると使いやすかった気がしてならない。


575 :デフォルトの名無しさん:02/11/08 22:54
>>574
Winアプリのお作法ですから…
1つのアプリだけ操作体系が異なるってのも使いにくいし。

576 :デフォルトの名無しさん:02/11/08 23:35
MainMenuのMenuItemにはVS.NETのプロパティで
ショートカットキーを設定できるようにはなっている
んですが、なぜか機能しないですよね。たんなるバグ?
それともやり方がまずいのか

577 :デフォルトの名無しさん:02/11/08 23:42
バグだったら希望者全員にVisualStudio買ってやるよ。

578 :デフォルトの名無しさん:02/11/09 00:10
今からC#を始めようと思うのだが、お薦めの書籍は何?

579 :デフォルトの名無しさん:02/11/09 00:30
>>574 のFileだとShortcutが効かないような。(New, Openは効く)
買って >>577

580 :デフォルトの名無しさん:02/11/09 00:56
>>579
バグじゃなくて Windows の仕様じゃ...?

581 :デフォルトの名無しさん:02/11/09 01:00
ショートカットとアクセラレータキーが混乱しているような……

582 :デフォルトの名無しさん:02/11/09 02:37
えーと質問お願いします。
ファイルで保存してあるDTSパッケージをC#から使いたいのですが、
コードの書き方がさっぱりわかりません。
参照設定→.LoadFromStorageFileを使うとこまではわかったのですが、
サンプルがVBしかなくどう記述していいのか。

DTS.Package myPackage = New DTS.Package("C:\test.dts");

と書いたのですが。



583 :デフォルトの名無しさん:02/11/09 02:59
>580
MainMenuのMenuItemにshortcutが設定できない(しても機能しない)
ならばプロパティでshortcutの項目を表示すべきじゃないでしょう。
ご丁寧にコードにも追加しちゃってるしね。


584 :デフォルトの名無しさん:02/11/09 10:49
system.type からその型のクラスのインスタンスを作ることってできますか?

class a
{
}

class b:public a
{
}

system.type st = typeof(b);
class a;
//a = new b();//これをtype からとりたい
a = new st(); //イメージとしてこんな感じ
みたいなかんじで。


585 :デフォルトの名無しさん:02/11/09 10:59
>>584
こんな感じで。

  Type st = typeof(B);
  A a = (B) Activator.CreateInstance(t);

586 :デフォルトの名無しさん:02/11/09 11:12
>>582

  Package myPackage = new PackageClass();
  myPackage.LoadFromStrageFile(〜);

ってな感じだと思うんだけど、
optのパラメータが多いときはVB.NET使った方が楽だと思うよ。

587 :586:02/11/09 11:14
Strage → Storage の間違いね。

588 :584:02/11/09 11:29
>585
ありがとうございます。

589 :デフォルトの名無しさん:02/11/09 21:50
http://www.gotdotnet.com/team/csharp/learn/Future/default.aspx

590 :デフォルトの名無しさん:02/11/09 21:59
ブラウザのリンククリックイベント(URL)を拾うにはどうすればいいんでしょうか。
はじめたばっかでまだパニック中・・。


591 :デフォルトの名無しさん:02/11/09 22:13
>>578
プログラム素人さんならば、日経ソフトウェアがイイ

592 :デフォルトの名無しさん:02/11/09 23:15
>>589
・Generics → Rotorで体験済み。便利だけど、コレクション以外で
今ひとつ使い道が浮かばない。

・Iterators → foreachの無駄がなくなってよさげだけど、
yieldとかまた予約語が増えるのね...。

・Anonymous Methods → 構文的にちょっとJavaとは違うみたいね。
機能的には萌え。RADでちゃんとサポートしてくれるといいんだけど...。

・Partial Types → C++っぽくて激しく萎え。


っていうか、これってEverettじゃなくてYukon対応版の方だよね?

593 :デフォルトの名無しさん:02/11/10 01:53
GenericsとIteratorsで無駄な box / unbox をなくして実行効率アップ。
コンパイル時に検出できるエラーも増えて(゚д゚)ウマー。

Anonymous Methodsで無駄なイベントハンドラを隠して、
Partial Typesで自動生成部とカスタムロジックを別ファイルにして読みやすさ(゚д゚)ウマー。

594 :デフォルトの名無しさん:02/11/10 08:09
MS、Visual Studio .NET新版について説明
http://headlines.yahoo.co.jp/hl?a=20021109-00000011-zdn-sci

595 :デフォルトの名無しさん:02/11/10 18:47
Generics
Iterators
Anonymous methods
Partial types

さっぱりわからん??

596 :デフォルトの名無しさん:02/11/10 19:06
よっしゃ!上二つはわかった!!

597 :デフォルトの名無しさん:02/11/10 19:48
anonymous methods
匿名メソッド? どんなのなんだろ。

598 :デフォルトの名無しさん:02/11/10 20:08
クロージャーじゃなくて?

599 :デフォルトの名無しさん:02/11/11 00:42
>>597
わざわざ名前をつけて定義しなくてもいい使い捨てメソッド。
イベントハンドラで効果大。

  button1 = new Button();
  button1.Size = new Size(96, 24);
  button1.Text = "Click!";
  button1.Click += new EventHandler(sender, e) {
    MessageBox.Show("button1 clicked!");
  }

600 :デフォルトの名無しさん:02/11/11 00:56
ところで、↓のキャラってJavaのDukeみたいなもんなの?

http://www.gotdotnet.com/team/csharp/

601 :デフォルトの名無しさん:02/11/11 01:37
>>600
激しいほどに最低なデザインセンス。

これでは、Dukeの足元にも及ばぬ。



C#の普及は、まだまだだなぁ。

602 :デフォルトの名無しさん:02/11/11 02:13
JavaのDukeみたいなもん、じゃないのに。

603 :デフォルトの名無しさん:02/11/11 02:53
Control.MouseButtonsっていうので、マウスのどのボタンが押された
か取得できるらしいのですが、どのボタンを押しても、MouseButtons.None
が返ってきてしまいます。

FormのClickイベントの中でやっているのですが、何が悪いのでしょうか?

604 :デフォルトの名無しさん:02/11/11 04:02
>>603
ネタ?

605 :デフォルトの名無しさん:02/11/11 04:10
>>601
そのページの左上の手よりはマシかと。

606 :デフォルトの名無しさん:02/11/11 07:50
>>603
MouseEventHandlerでMouseEventArgs.Buttonを見るんじゃないの?

607 :デフォルトの名無しさん:02/11/11 08:48
どこかのスレでPropertyGridのローカライズがらみの
質問してませんでしたっけ?一応こんなの↓見つけたんだけど、、、
役に立つなら使ってあげてくださいな。

Globalized property grid
http://www.codeproject.com/cs/miscctrl/globalizedpropertygrid.asp

608 :デフォルトの名無しさん:02/11/11 16:57
>>599
おお サンクス(・∀・)
なるほど。ハンドラ追加する時の面倒が軽減するね。


609 :デフォルトの名無しさん:02/11/11 21:55
スレッドを実行するときにThread.IsBackgroundを
使ってバッググラウンドで実行するかフォアグラウ
ンドで実行するかが選択できるのですが、これは、
どんな意味があるのでしょうか?

ファオグラウンドだと現在の処理がブロッキングさ
れるのかと思ったら、そんなことは無く、バックグ
ラウンドで動いているようなのですが、何が違うの
でしょうか?



610 :デフォルトの名無しさん:02/11/11 21:58
優先度の傾向がちょろっと変わるぐらいじゃなかろうか、と予想。

611 :デフォルトの名無しさん:02/11/11 22:01
http://www.gotdotnet.com/team/csharp/images/Logo2.gif

このロゴかっこいくない?

612 :603:02/11/11 22:02
>>604
ネタじゃないのですが、、、

>>606
ClickイベントだとMouseEventArgsは送られてこないのです。
で、Petzold の本読んだら、ClickイベントでもControl.MouseButtons
はスタティックに使えるので、これで、どのボタンが押されたか
は取得できますと書いてあるのですよ。

ところが、なぜか、MouseButtons.Noneしか返ってこないというわけです。

なんででしょうか?



613 :デフォルトの名無しさん:02/11/11 23:07
>>612

実験してないから確証はないが、
Clickはマウスのボタンを離したとき(つまりイベント発生時には、
すでにボタンは押されていない)に起きるイベントだからでは?

614 :デフォルトの名無しさん:02/11/12 00:25
>574
自己レスです。(^^;
MainMenuのItemであるFile項目のF2キーなどでの
一発ポップアップ?はAPIを使って可能でした。


615 :デフォルトの名無しさん:02/11/12 05:06
数日前にC#をはじめますた。
今まではVB使いだったので、違いに苦戦中です。
テキストボックスに入力された数字(1〜32767)をプログラム内で使用したいのですが
VBだと

dim intA as Integer // 整数型
intA = TextBox1.Text

これでintA(整数型)にきちんと代入されるんですが

C#で

int intA;
intA = textBox1.Text;

とやってもstringをintにキャストできないと言われてしまい、

inA = (int)textBox1.Text;
とやってもだめで、

object objA;
objA = (object)textBox1.Text;
int A = (int)objA;

ボックス化とかいうやつらしきものもやってみたのですがだめでした。

どうすればよいのですか?教えてください。

616 :デフォルトの名無しさん:02/11/12 05:17
>>615
型変換メソッドはSystem.Convertクラスに用意されてる。
int intA;
intA = System.Convert.ToInt32(textBox1.Text);

617 :615:02/11/12 06:05
>>616

教えて頂いたとおりSystem.Convertクラスのメソッドを使用したところ
無事に出来ました。ありがとうございます!

MSDNとかWebで4時間ぐらい探し続けてわからなかったのに。。
やっぱこの板はイイ(゚∀゚)

616さんありがと〜

618 :デフォルトの名無しさん:02/11/12 07:54
各クラスにParseというメソッドもある。
この場合はInt32.Parse( textBox1.Text )とか。

619 :デフォルトの名無しさん:02/11/12 16:36
「lstrcpy」の代替用のメソッドはありますでしょうか?
システムの制限上、「char*」は残したままで考えています;-<

【VC++】
int main(int argc, char **argv)
{
char* sz;
lstrcpy(sz, argv[1]);
}

【C#】
unsafe class abc
{
public static void Main(string[] args)
{
char* sz;
????????????
}
}


620 :デフォルトの名無しさん:02/11/12 19:15
Webページへのアクセス処理を作っていたのですが、うまく動作しません。
以前は同じプログラムが動作していたのですが、何かあるんですか?

string url = "http://www.....";
WebClient wc = new WebClient();
Stream st = wc.OpenRead(url);
StreamReader sr = new StreamReader(st, Encoding.GetEncoding("Shift_JIS"));
Console.WriteLine(sr.ReadToEnd());
sr.Close();
st.Close();


621 :デフォルトの名無しさん:02/11/12 23:09
System.Net.SocketsクラスのtcpClientを使っているのですが
Winsockコントロールを使用したときのDataArrivalイベントのようなものはないのでしょうか?
DataArrivalイベントというのは、データを受信したときに発生するイベントで
その中に受信データを処理する部分をかきます。

もし、DataArrivalイベントに代わるものがなければ
データ受信用のスレッドを別に作成して、毎回バッファをチェックするという
方法しかないうということでしょうか?

622 :デフォルトの名無しさん:02/11/12 23:12
http://www.patipati.com/lupan/R3_temp.swf?inputStr=2%82%B0%82%C6

623 :デフォルトの名無しさん:02/11/12 23:16
>>620
>以前は同じプログラムが動作していたのですが、何かあるんですか?

以前ってのはいつだよ。以前から今までに何をやったのさ。
そんな質問じゃ誰もわからんって。

624 :デフォルトの名無しさん:02/11/12 23:19
EnumWindowsを使って取得したhwndからControlのインスタンスを作ろうとしたら
自分自身の分しかできませんでした。
どうしたら他のウィンドウも取得できるのでしょうか?

625 :デフォルトの名無しさん:02/11/12 23:29
DataSetのテーブルの結合処理をするには、
コードでガリガリ書かなきゃなんないのかねぇ。

SQL文を与えて一発結合、みたいなのはできないものかな。

626 :デフォルトの名無しさん:02/11/13 00:06
>>625
ビュー作ったら?

627 :デフォルトの名無しさん:02/11/13 00:08
>>621

普通はブロッキングするので、毎回チェックする必要は
ないと思われ。



628 :621:02/11/13 02:33
>>627

ブロッキング?

やはり別スレッドで自前でチェックするものを作らなければいけないということですか?

質問ばかりですみません。

629 :デフォルトの名無しさん:02/11/13 02:51
>>628
一般的には、データの送受信のところは別スレッドでやった方が
いいと思われ。

TcpClient使ってやるなら、読み出しはNetworkStream.Read使うんでしょ?

NetworkStream.Readっていうメソッドはデータが来ないと、その場で処理が
止まる。なので、いちいちチェックする必要とかは無い。データが来るまで待ってて
くれるのだから。

ただ、メインのスレッドで、これを使うと、ブロッキングのため他の処理が一切
できなくなってしまう。だから、普通は別のスレッドで行うのが一般的。




630 :デフォルトの名無しさん:02/11/13 03:04
C#ってselectつかえないの?

631 :621:02/11/13 03:11
>>629
お察しのとおり、NetworkStream.Readメソッドを使うんです。
データが来ないとその場で処理待ちするとは知りませんでした。
それなら、別スレッドでやった方がいいという意味も納得がいきます。

助かりました。
ありがとー!

632 :デフォルトの名無しさん:02/11/13 10:24
>>630
条件分岐のこと?
それなら switch-case 文。

セレクトボックスのことなら ComboBox。

633 :デフォルトの名無しさん:02/11/13 11:34
>>632
わざとボケてる?

>>630
Berkeley socket interface は System.Net.Sockets.Socket。
public static void Select(
  IList checkRead,
  IList checkWrite,
  IList checkError,
  int microSeconds,
);

634 :デフォルトの名無しさん:02/11/14 08:00
DirectX 9.0 RC 0 : Public Beta for End-User
http://www.microsoft.com/downloads/release.asp?ReleaseID=45160

635 :デフォルトの名無しさん:02/11/15 11:33
LonghornでSystem.Windows.ShellとかSystem.Windows.Navigationとか
.NET-based Avalon APIs

http://www.winsupersite.com/images/reviews/lh_alpha_031.gif
http://www.winsupersite.com/reviews/longhorn_alpha.asp

636 :デフォルトの名無しさん:02/11/15 12:26
Formから別のFormを表示した時に、表示したFormの方に
フォーカスが移ってしまうのですが、表示元のFormから
フォーカスが移らないようにする方法はあるでしょうか?


637 :デフォルトの名無しさん:02/11/15 20:28
>>636
やったことないから、わかんないけど
CanFocus プロパティをFalseにすればいいのかも。
それやると不具合あるなら、根本的な解決方法じゃないけど
別FormをShow()した後に元のFormのフォーカスをFocus()で
セットし直すとか。


638 :デフォルトの名無しさん:02/11/15 21:36
>別FormをShow()した後に元のFormのフォーカスをFocus()で
>セットし直すとか。
それだとウインドウが点滅したようになってしまうので、
だめなのです。

うーんと、つまりどんなことがやりたいかと言うと、ToolTip
のようなウインドウを表示したいのです。
なんかちょっとした情報を表示するときに、任意の位置に、
メインのウインドウのフォーカスをそのままにしてウインドウが
表示したいんですよ。

ToolTipクラスは任意の位置っていう指定ができないので、タイ
トルバー無し、枠無しのToolTipっぽいFormを作ってそれに情報
を表示してみたのですが、Show()をやったとたんにそっちのウイン
ドウにフォーカスが行ってしまうのです。

なんかいい方法ないでしょうか?



639 :デフォルトの名無しさん:02/11/16 00:54
C#には
http://java.sun.com/products/jdk/1.2/ja/docs/ja/api/
の様なAPIドキュメントはないのですか?

Directory dir = new Directory("c:\\");

こう書いたら
引数を '1' 個指定できる、メソッド 'Directory' のオーバーロードはありません。
とか言われて意味がわかりません!

640 :デフォルトの名無しさん:02/11/16 00:58
>>639
ないわけない。

641 :デフォルトの名無しさん:02/11/16 00:59
こんなのはどうでしょう?
http://www.microsoft.com/japan/msdn/library/ja/cpref/html/cpref_start.asp

642 :親切な人:02/11/16 01:02

ヤフーオークションで、凄い人気商品、発見!!!

プランテック製の「 RX-2000V 」を改造済み
にした、アイティーエス製の「 RX-2000V 」↓
http://user.auctions.yahoo.co.jp/jp/user/neo_uuronntya

ヤフーオークション内では、現在、このオークション
の話題で、持ちきりです。

ヤフー ID の無い方は、下記のホームページから、
購入出来る様です↓
http://www.h5.dion.ne.jp/~gekitoku/#.2ch.net/

643 :デフォルトの名無しさん:02/11/16 01:10
>>641
ありがとうございます!

でもやっぱりnewの仕方がわからない…

644 :643:02/11/16 01:12
静的だからnew出来ないのかな?

645 :デフォルトの名無しさん:02/11/16 01:14
>>643-644 そのとおり。ちゃんと読みなはれ。
>解説
>Directory クラスのすべてのメソッドは静的であるため、ディレクトリのインスタンスを
>作成しなくても呼び出すことができます。


646 :644:02/11/16 01:31
ttp://www.runan.net/program/tips/csharp/1_06.shtml

ここに騙された…

647 :騙されたって・・・:02/11/16 01:49
そこの文書の作成日・・・00/08/27って・・・
そりゃー仕様も変わるかもだ。

ちなみに初代C♯スレが
>1 名前: 名無しさん♯ 投稿日: 2000/12/18(月) 13:06
か。

648 :デフォルトの名無しさん:02/11/16 03:18
>>638
漏れも以前、色々試してみたが駄目でしたなぁ。
なんで、マウスポイントしたらステータスバーに説明を表示するってのにした。

649 :デフォルトの名無しさん:02/11/16 03:47
>>648
だめでしたか、、、

これは.NET Frameworkだからだめなのでしょうか?
API直たたきならできるのでしょうか?

実際、こういうフォーカスを移さないでウインドウを表示
しているアプリケーションって結構あるのですが、どうやって
るのだろう。。。

例えば、MSNメッセンジャーとかは友達リストに登録している人
がログインすると、画面の右下に「○○さんがログインしました」
ってな感じで情報表示用ウインドウが出るけど、その時作業して
いたウインドウからフォーカスははずれないです。

あと、何のメーラだったかは忘れたのですが、新着メールが
あると、画面の下の方に新着メールのタイトルだけをそっと表示
してくれるようなソフトもありました。これもウインドウは表示
するけど、フォーカスは移動しないです。現在作業中のウインドウが
あれば操作は続行できるのです。


650 :デフォルトの名無しさん:02/11/16 04:14
>>649
window開くつうか直に描画してるのだと思われ。
ディスプレイのデバイスコンテキスト取得してね。

651 :デフォルトの名無しさん:02/11/16 04:43
>>649
よく知らないけどCBTフックを調べてみたら?

652 :デフォルトの名無しさん:02/11/16 05:24
API直叩きならできる。直描きもフックも不要。
ShowWindow APIにフォーカスを移さずに表示する選択肢があるから。

653 :デフォルトの名無しさん:02/11/16 06:37
C#のコンパイラは無料で手に入るときいたのですが

どこへ行けばダウンロードできるでしょうか?

654 :マジレスしてみる:02/11/16 07:04
>>653
SDK
http://download.microsoft.com/download/.netframesdk/Install/1.0/W98NT42KMeXP/JA/setup.exe
SP2
http://download.microsoft.com/download/NETFrameworkRedistributable/Patch/2/W98NT42KMeXP/JA/NDP10_SP_Q321897_Ja.exe

655 :デフォルトの名無しさん:02/11/16 09:02
複数のビットマップを並べて描画&一部を移動などを
するときに画面がちらついてしまいます。
これをちらつかせなくするのにいい方法はありますか?

いちおう複数のビットマップから一個のビットマップを
作ってそれを描画すれば解決かとも思うけど
もっときれいに楽にできる方法があれば教えてください。
よろしくお願いします。

656 :デフォルトの名無しさん:02/11/16 11:02
ダブルバッファリングくらいしろい。

657 :デフォルトの名無しさん:02/11/16 14:37
>>652
うぉ〜ほんとだ!!
APIのShowWindow()っていう関数だと、

> SW_SHOWNA
> ウィンドウを現在のサイズと位置で表示します。
> SW_SHOW と似ていますが、この値を指定した
> 場合は、ウィンドウはアクティブ化されません。

っていうのがありますね。
これならできそうです。C#からAPIの叩き方を調べてみます。
ありがとさんです。

でも、なんでC#では.NETではできないんですかね。
.NETヘボすぎです。。。

658 :657:02/11/16 15:35
今API直叩きで組んでみたのですが、なんかやっぱりだめです。
なんででしょう?

とりあえず、
[DllImport("user32.dll")]
public static extern int ShowWindow(IntPtr hwnd, int nCmdShow);

ていうメソッドを定義しておいて
Form2 form2 = new Form2();
IntPtr p = form2.Handle;
ShowWindow(p, 8);

を呼び出してみたのですが、やっぱり、表示されたウインドウがアクティブ
になって、表示もとのウインドウはフォーカスを失ってしまうようです。

ちなみに、ShowWindow(p, 8);の8という数字の根拠は、下記の定義から見つけて
きました。

/*
* ShowWindow() Commands
*/
〜省略〜
#define SW_SHOWNA 8
〜省略〜

何がダメなんでしょうか?やはり、>>650さんのいうような方法しかない?
でも、MSNメッセンジャーとかが表示しているやつはウインドウっぽいんですよねぇ、
だって、クリックできるし。。。
どうか、分かる方がいたら、おながいします。

659 :658:02/11/16 16:07
いろいろ調べてみたら

ShowWindowというAPIは

nCmdShow
ウィンドウの表示方法を指定します。アプリケーションがほかの
プログラムから STARTUPINFO 構造体を渡して起動された場合、
初めて ShowWindow 関数を呼び出したときには、このパラメータ
は無視されます。構造体が渡されていない場合、ShowWindow 関
数を初めて呼び出すときには、WinMain 関数の nCmdShow パラ
メータで取得した値を指定してください。以降の呼び出しでは、次
のいずれかの値を指定できます。

だそうです。なんで、初回起動時に1度表示してから、
このAPIをたたいてみたところ、なんと!、フォーカス無しで
ウインドウが呼べました。

でも、初回に無駄に1度表示するというのがちょっとかっこわるいような。。。
まぁ、しょうがないですかねぇ。

とりあえず、解決しますた。みなさんありがとです。


660 :デフォルトの名無しさん:02/11/16 22:50
>>655
PaintBackground イベントをオーバーライドして何もしないようにしろ。
そしたらちらつき消える。

っていうかさ、画面の再描画時のちらつきに関する質問、多すぎ。
Users のメーリングリストで4回くらい同じ質問見たことある。


661 :デフォルトの名無しさん:02/11/17 00:15
C#のドキュメント、なんでメンバの返り値の型書いてないんだ?


662 :デフォルトの名無しさん:02/11/17 00:27
>>661
(゚Д゚)ハァ?
書いてあるけど?

663 :デフォルトの名無しさん:02/11/17 01:46
>>661
VB厨とみた。~~~~で示したところが戻り値だ。

[Visual Basic] Overloads Public Shared Function FromFile(String) As Image
                                   ~~~~~~~~
[C#] public static Image FromFile(string);
          ~~~~~~


664 :663:02/11/17 01:47
ちとずれたな。


665 :661:02/11/17 02:16
添付されてる、HTMLなリファレンスマニュアルの事だよ?
javadocには返り値の型書いてあったのに。

666 :デフォルトの名無しさん:02/11/17 02:32
>>661
具体的に戻り値の書いてないメソッドをあげてみなよ。
どこみたって、きちんと書いてあると思うが?

例えば、String.IndexOf メソッドはこんな感じで書いてある。
ms-help://MS.VSCC/MS.MSDNVS.1041/cpref/html/frlrfsystemstringclassindexoftopic1.htm
戻り値はintである。

書いて無いというメソッドを上記のように具体的に示してくれ。

667 :デフォルトの名無しさん:02/11/17 07:17
SDKいれたら何Mぐらいになる?
もれのおかしいかも…

668 :デフォルトの名無しさん:02/11/17 08:52
おまえら、いい加減「放置」をおぼえろよ。
誰にだって勘違いはあるんだし。な、661

669 :デフォルトの名無しさん:02/11/17 10:11
結局放置できない668。

670 :デフォルトの名無しさん:02/11/17 10:13

       -―-          |
     〃      ヽ     .|
     i   ノノノ))) ))    | >>669も放置出来ない人ですか?
.    i i ( 'l_] l]〈リノ    .<
     ヽヽ >  />      \_____
     Y/ヽ!ェl〉        /ヽ/ヽ
      !! l卯 l         / // /
      i ll8| !       / // /
.       l l「| l       , ´-‐ ‐- ヽ
        /!_」l|_j、    {   l ,,  } ぅん
.      / /゙´l"ヽ >   ゝ. ‐  ノ
     'ーr‐ r r ´       l !
.       l  l. |           | |
.       |  ! |           l. |

       -―-
     〃      ヽ
     i   ノノノ))) ))   / ̄ ̄ ̄ ̄ ̄
.    i i ( 'l_] l]〈リノ < >>669ほうちー
     ヽヽ > n/>    \_____
     Y/ヽ!ェl〉        /ヽ/ヽ
      !! l卯 l         / // /
      i ll8| !       / // /
.       l l「| l       , ´-‐ ‐- ヽ
        /!_」l|_j、    {   l   U } ……
.      / /゙´l"ヽ >   ゝ. っ  ノ
     'ーr‐ r r ´     ⊂ニl !
.       l  l. |        | |
.       |  ! |        l. |


671 :669:02/11/17 10:15
>>670
くすっ。最初っから俺は放置しろとか言ってないもん(w

672 :デフォルトの名無しさん:02/11/17 10:16


====================リセット====================

673 :デフォルトの名無しさん:02/11/17 12:38
ぼうけんのしょ 1 がきえました

674 :デフォルトの名無しさん:02/11/17 13:25
ハイ!先生!!
冒険の書が消えたところで質問です。

Form1にあるテキストボックスにForm1クラス以外のクラスから
アクセスするにはどうしたらいいんですか?

class Form1
{
public System.Windows.Forms.TextBox TextBox1;
.....
this.TextBox1.Text = "ABC"; //これは普通に値を書き換えられるが
...
Class1 class1;
...
}

public class Class1
{
Form1.TextBox1.Text = "ABC"l //これができません。
}

両方とも同じ名前空間に属しているクラスです。
これを実行するとClass1の中でエラーが発生してしまいます。
Class1の中でForm1のインスタンスを作成すればアクセス
出来るような気がしますが、やり方がよくわからないうえに、
もともと Class1 はForm1クラスの中で作成して使用するものなので
Class1の中でForm1クラスのインスタンスを作成することは
出来ないような気がします。

VBだと何の問題もなくどこからでも Form1.TextBox1 の値を
変更できただけに、とても困惑しています。
教えて頂けないでしょうか?

675 :デフォルトの名無しさん:02/11/17 13:31
static void Main()
{
Form1 form1 = new Form1();
Application.Run(form1);
}


form1.TextBox1.Text = "ABC";


676 :674:02/11/17 14:09
>>675

Application.Run の直前で自分でForm1のインスタンスを作成して
staticで保持しておけばよかったんですね!
おっしゃるとおりにやったらできました。

助かりました。どうもです〜!

677 :デフォルトの名無しさん:02/11/17 14:32
まぁ、static使ってもいいけど、コンストラクタに参照渡した
方がいいと思うよ。

Form1の中でClass1を宣言するときに次のようにする。

Class1 class1(this);//これで、Form1自身のインスタンスを渡す

Class1では、引数としてもらったForm1のインスタンスを取って
おいてそれを使う

public class Class1 {
  private Form1 form1;

  public Class1(Form1 form) {
    this.form1 = form;
  }

  public void hogehoge() {
    form1.TextBox1.Text = "ABC";//これでできます
  }
}

ただし、この場合TextBox1がpublicで無いとだめです。
でも、Form1のメンバに直接アクセスできるのはきもいので、
プロパティでも使って隠蔽してください。


678 :デフォルトの名無しさん:02/11/17 14:38
TextBox1を渡せよ

679 :最近はC ◆vmmZ0hhNNc :02/11/17 15:51
>>666
多分、メンバ一覧(xxxxMembersTopic.htm)の画面のこと言ってるのだと思うよ。
>>665でJavadocとか言ってるし。

っつぅか、確かにいちいち詳細見なければ、戻り値や引数が分からないのはJavadocに慣れた漏れもつらいです。

>>674
っつぅか、OOPについて少し勉強した方が…
インスタンスメンバとクラスメンバの違いや、スコープのことが分かってないと、これからかなり厳しいと思われます。

680 :デフォルトの名無しさん:02/11/17 17:54
DataSetクラスみたいにIDisposableインターフェース持つ
オブジェクトを返すメソッド作ったとき、
内部で例外発生した場合のリソース開放処理ってどうしてる?

public DataSet GetDataSet()
{
  using (DataSet dataSet = new DataSet())
  {
    // データセットに値を格納する処理
    
    return dataSet;
  }
}

って書ければ、例外発生時のリソース開放漏れは防げるけど・・・
正常動作時にもDisposeされたインスタンス返しちゃうよね?

でも、実際は、これで上手く動いたりするんだな。

なんか勘違いしてますかね私。

681 :680:02/11/17 19:57
DataSetの代わりに、StreamReaderでやってみたら、
呼び出し側でエラー出たよ。

System.ObjectDisposedExceptionって
・・・予想どうりか。

というわけで、680みたいな記述は間違いなわけね。
たとえ動いたとしてもね。

682 :デフォルトの名無しさん:02/11/17 20:29
>>680
try, catchじゃダメなの?

683 :680:02/11/17 21:16
try-catchで問題ないんだけど、めんどくさいじゃん。

一度usingの蜜の味を覚えたら、
catchやfinally句でリソース開放なんて
いちいちやってられんよ。

catch (Exception ex)
{
&hbsp;&hbsp;if (streamReader != null)
&hbsp;&hbsp;{
&hbsp;&hbsp;&hbsp;&hbsp;streamReader.Close();
&hbsp;&hbsp;}
&hbsp;&hbsp;throw ex;
}

とか書きたくないじゃん。

684 :680:02/11/17 21:17
ありゃ 
"&hbsp;"をインデントに読み替えてくださいな。↑

685 :デフォルトの名無しさん:02/11/17 21:20
プッ

686 :デフォルトの名無しさん:02/11/17 21:22
>>685 性格悪いなぁ

>>683 &nbsp;な。

687 :デフォルトの名無しさん:02/11/17 21:27
つーかfinallyだろ。プッ






まあusingは便利だけどね。

688 :デフォルトの名無しさん:02/11/17 23:34
C#でファイルに書き込んで作った10KBほどのバイナリデータ(あるクラスの配列すべてのデータを書き出したもの)をC++で読みこみ、C++側で作った同じクラスに代入しようとしました。
しかしC++で読み込むと、ファイルの途中でまだ先があるにも関わらずそれ以上読み込めなくなります。
デバッグして読み込みが終わるところをチェックすると、おかしくなる寸前まで正常に読み込まれ(自動変数表示に表示されるクラスのデータメンバが正常)ているので、型の大きさの違いは無いはずなのです。
一方、C#でC++と同じ読み込みアルゴリズムを作り、ファイルを読み込むと最後まで正常に読み込まれました。
一体何が悪いのかわかりません。助けてください。

689 :デフォルトの名無しさん:02/11/17 23:39
さげてしまいすみません。

690 :688 :02/11/17 23:45
書き忘れていましたが、C++では入力に
_open
_read
を使っています。

691 :デフォルトの名無しさん:02/11/17 23:47
> 一方、C#でC++と同じ読み込みアルゴリズムを作り、
> ファイルを読み込むと最後まで正常に読み込まれました。

これでいいじゃん。終了。

692 :688 :02/11/17 23:52
すいませんが良くないのです。C++側はゲームの本体で、C#はエディタなのです。

693 :デフォルトの名無しさん:02/11/17 23:58
691って、C#とC++それぞれにシリアライザ/デシリアライザを作る
という意味だと思うのだけど、688はそれとどう違うの?

694 :デフォルトの名無しさん:02/11/18 00:03
シリアライザってなんですか?
新人レスラーですか?

695 :デフォルトの名無しさん:02/11/18 00:15
694を新人レスラーとしてこのスレに迎えることにしますた。
芸名:シリアライザー

696 :688 :02/11/18 00:17
>>693
C++とC#で同じ読み込みアルゴリズムにも関わらず、C++だと読み込めなくなります。
前にも一回こんなことがあってうやむやのまま終わりました。

697 :デフォルトの名無しさん:02/11/18 00:21
で、あんたのプログラムのバグを直せと?

698 :688 :02/11/18 00:23
なにかC++とC#の間でデータのやりとりする際に気をつけなければならないことなどがあれば教えてください。

699 :デフォルトの名無しさん:02/11/18 00:31
int や char のサイズが違う。

なんてオチだったりして。

700 :688 :02/11/18 00:54
ぎゃー!テキストモードでひらいてたー!!!

701 :デフォルトの名無しさん:02/11/18 01:00
>>688=700
逝ってください。

702 :デフォルトの名無しさん:02/11/18 01:02
データグリッドの列にコンボボックスつけれませんか?

703 :F:02/11/18 09:38
質問なんですが、
BMPがテキストになったファイルを
もう一度画像ファイルとしてピクチャーボックスに
表示するにはどうしたらいいのでしょうか?

704 :デフォルトの名無しさん:02/11/18 09:58
C#ってIE上で動くアプレットみたいなものつくれますか


705 :デフォルトの名無しさん:02/11/18 10:01
>>703
次で回答がなければ質問の仕方が悪いと思え。

どうぞ。


706 :デフォルトの名無しさん:02/11/18 10:02
マルチは氏んでください

707 :デフォルトの名無しさん:02/11/18 10:17
ワロタ

708 :デフォルトの名無しさん:02/11/18 12:25
>BMPがテキストになったファイルを
意味若欄
BASE64にでも変換したのか?

709 :デフォルトの名無しさん:02/11/18 13:16
質問です
FORM1からFORM2にあるLISTBOXコントロールを操作するにはどうすればいいの?
Form2.listBox1ってやってもコンパイルでエラーが出る。
みんな暇そうにしてんだから教えてくれ

おれは今からデートなんで、夜には帰るからそれまでに回答よろ!

710 :デフォルトの名無しさん:02/11/18 13:18
てか、age

711 :bloom:02/11/18 13:21

http://homepage.mac.com/bloombloom/

712 :デフォルトの名無しさん:02/11/18 13:58
>>711
強烈な精神的ブラクラ

713 :デフォルトの名無しさん:02/11/18 14:49
>>709
Form1にForm2のインスタンスを渡せ

714 :デフォルトの名無しさん:02/11/18 18:02
この手の質問って多いよな。フォームからフォームを操作したいんです。みたいな。

715 :デフォルトの名無しさん:02/11/18 19:19
過去ログにかなり既出でしたよ。
俺は過去ログに出てた。

private static formPim _instance = null;
public static formPim GetInstance()
{
if(_instance == null)
{
_instance = new formPim();
}
return _instance;
}
ってな方法でやってますわ。


716 :債務不履行の名無しさん:02/11/18 20:51
>>709
デートする暇があったら,過去ログ読めば?(w

717 :デフォルトの名無しさん:02/11/18 21:02
>>716
男とデートに1票 :-)

718 :709:02/11/18 22:31
ふ〜、今帰ってきたYO
やっぱ手コキが一番気持ちいなw

てか、マジレスついてんじゃん(ワラ
正直、期待してなかったんだけど、あんたらいい人過ぎるYO!!
これじゃあ、初心者が調子乗ってしまうぞ
まあ、なにはさておき>715感謝!!

719 :デフォルトの名無しさん:02/11/18 22:53
これももしかしたら即出の可能性があるのですが、
ArrayListにint型ポインタを格納するにはどうしたら
よいのでしょうか?
STLのVectorの場合は
vector<int*>などとやるのですが・・

720 :デフォルトの名無しさん:02/11/18 23:53
>>719
「くわっぱ!!」と大きな声で叫ぶといいかも

721 :デフォルトの名無しさん:02/11/19 00:44
>>719
IntPtrを使う。

722 :デフォルトの名無しさん:02/11/19 01:25
>721
ArrayList list = new ArrayList();
list.AddRange(new int*[3]);
こんな感じでもコンパイルは通り
IntPtrとしてメモリを確保している
ようなのですが
具体的にやりたい事というのが

ArrayList list1
ArrayList list2
の2つのArrayListがあるとして
list1[0] = 10;
とするとlist2[1]も10に変化するという
ものです。もちろんその度に値をコピー
するという方法はあるのですが、list1[0]と
list2[1]のアドレスを同じにするという方法
をC++では使っていました。

IntPtrなどをうまく使えば実現可能なのでしょうか。
IntPtrの使い方がいまいち理解できていません。


723 :デフォルトの名無しさん:02/11/19 02:39
>>722
同じインスタンスへの参照を入れておくとか。
値型だとダメだと思うのでクラスで。


724 :デフォルトの名無しさん:02/11/19 02:49
ArrayList list2 = list1とかじゃダメなの?

725 :デフォルトの名無しさん:02/11/19 07:48
Visual Studio .NET 2003 Final Beta ヽ(´ー`)ノ
http://msdn.microsoft.com/vstudio/productinfo/vstudio03/default.asp

726 :デフォルトの名無しさん:02/11/19 11:46
VS 2003 って、ロードマップに出てる Everett とは別物?
あと、C# にテンプレートが追加されるのって Yukon で?

727 :デフォルトの名無しさん:02/11/19 15:03
>>726
次(マイナー)  VS 2003 = Everett
その次  テンプレート追加 = for Yukon
そのまた次  for Longhorn

728 :デフォルトの名無しさん:02/11/19 15:31
>>727
>次(マイナー)  VS 2003 = Everett
>その次  テンプレート追加 = for Yukon

http://www.zdnet.co.jp/news/0211/09/nebt_08.html
は誤報?

729 :デフォルトの名無しさん:02/11/19 16:02
>>728
それは文章すっ飛ばしてるから。
原文 http://zdnet.com.com/2100-1104-965046.html

それから

http://www.gotdotnet.com/team/csharp/learn/Future/default.aspx
> Anders Hejlsberg unveiled several potential language features
> for the next major release of Visual C# .NET.

だから次のメジャーリリース(for Yukon)で合ってると思うけど。

730 :デフォルトの名無しさん:02/11/19 16:52
>>727-729
おまいら、VS .NETとSQL ServerとOSのコードネームごっちゃにして話すすめるなよ(w

731 :デフォルトの名無しさん:02/11/19 17:03
>>730
オレは混乱しないように↓にならってforを付けたつもりなんだが。
http://msdn.microsoft.com/vstudio/productinfo/roadmap.asp

732 :728:02/11/19 18:22
>>729 すまん。原文読んでなかった。
ZDでも「future release of its Visual C# tool.」で
「include four new features」って言ってるね。

733 :デフォルトの名無しさん:02/11/20 00:50
>723
そうですねぇラッパークラスでも作って
やるしかなさそうです。
どーもC#ではポインタも一定ではないようなので
このあたりは難しいところです。
Delphiやってた時にはラッパークラスで独自配列
を作ってやっていましたが、ちょっとメモリが
もったいないですよね。
class TInt
{
public int Value;
}
とか作ってからobject型にしてArrayListに格納する
という事ですが、この手段を使ってもC#の場合には
最終的には値をコピーしてしまうのでしょうね(汗
Delphiではobject=ポインタ的な作りだったので楽
だったのですがね。
Delphiはともかく
やはりこういうポインタの使いまわしするアプリ
にはC++が楽ですね。


734 :デフォルトの名無しさん:02/11/20 02:42
>>733
つうか、無意味にポインタを使いたがるのが間違いだと思う。

735 :デフォルトの名無しさん:02/11/20 07:56
深く読まずにカキコ
boxing/unboxingってそのためにあるんじゃなかったっけ?

736 :デフォルトの名無しさん:02/11/20 16:01
(;´д`)/<ハイ!先生!

C#でローカルユーザの追加をしたいんですけど
どうやればいいんですか?

NET USER "ユーザ名" /ADD

↑これと同じ事をC#でできませんか?
なにとぞ教えて下せぇ。

737 :デフォルトの名無しさん:02/11/20 16:21
C#からまんま同じコマンドを実行すれば?

738 :デフォルトの名無しさん:02/11/21 02:07
>>736
たぶんWMIでも可。

739 :デフォルトの名無しさん:02/11/23 12:57
ageちゃうぞー

740 :デフォルトの名無しさん:02/11/23 13:07
Pythonのダウンロードしたのが開けなくて困ってます。
あぁ、なんて私は馬鹿なんだろう…。
心優しい方、誰か教えてください…。
3000円の本まで買ったのに…なんかその本古かったらしい…。

741 :デフォルトの名無しさん:02/11/23 13:09
コンピュータの専門用語が全くわからない人はどこからはじめたら言いのでしょう。
胎児からか……。

742 :デフォルトの名無しさん:02/11/23 13:44
ListViewのcolumHeaderをクリックすることで、その列でソートしたいのですが
どうすればいいのですか?


743 :デフォルトの名無しさん:02/11/24 04:46
>>741
「できる! Windows98」あたりから。

744 :デフォルトの名無しさん:02/11/24 07:27
>>741
アビバのCMから。

745 :デフォルトの名無しさん:02/11/24 16:04
Javaだと次のようにインスタンス化されなくても実行される
処理がstatic{}でかけたのですが、C#ではどうやるんでしょうか?

private static int hoge;
static {
hoge = 99;
}

746 :デフォルトの名無しさん:02/11/24 16:06
>>745
static クラス名() {
}

747 :745:02/11/24 16:45
>>746
さんくすこ。



くすこだって。。。。ポッ...

748 :デフォルトの名無しさん:02/11/24 16:46
>>746
そのstaticなコンストラクタだけを実行させることは出来る?
Javaだと、Class.forName("クラス名"); だけど。

749 :デフォルトの名無しさん:02/11/24 16:52
>>748
Javaでも実行されないと思う

750 :デフォルトの名無しさん:02/11/24 17:08
>>749
は?必死だな。(藁

751 :デフォルトの名無しさん:02/11/24 17:11
>>750



752 :デフォルトの名無しさん:02/11/24 17:14
>>748

スタティックイニシャライザって、VMの実装にもよると思うけど、
そのクラスが必要になったときに自動で動作するもんでしょ?
Class.forNameとかとは関係ないと思うのだが。

>748 の言ってるのはJDBCドライバとかの話かな?

753 :デフォルトの名無しさん:02/11/24 17:15
http://pc3.2ch.net/test/read.cgi/tech/1037407642/542
classのstatic initializerを使ったトリックを自慢しに来たのかな?

754 :752:02/11/24 17:20
>>753

その辺っぽいねぇ。
あれって自身をシステム側のドライバデータベースに登録するって
処理じゃなかったっけ(DBは専門じゃないのでよく分からんです)?

だがそれにしたって、Class.forName("クラス名")を呼ぶたびに
スタティックイニシャライザが走ると思われても困る。
それじゃ全然スタティックじゃないし。

755 :デフォルトの名無しさん:02/11/26 13:24
i

756 :デフォルトの名無しさん:02/11/26 13:26

ブラウザコンポーネントを使うと、exeファイル以外
に次のようなdllファイルが生成されますが、これは
再配布してしまっていいものなのでしょうか?

AxInterop.SHDocVw.dll
Interop.SHDocVw.dll

また、こういった情報はどこに記載されているのでし
ょうか?MSDNを上記のファイル名で検索しても何も、
出てきませんでしたが。。



757 :デフォルトの名無しさん:02/11/27 16:31
定数の配列ってのはどうやって作れば?

public const int[] MAX_OBJECT = {1024}; // コンパイルエラー

758 :デフォルトの名無しさん:02/11/27 16:37
以前にOSのシャットダウン時にアプリケーションが終了せずに、
シャットダウン作業を中断させてしまう問題について質問した者です。
原因がわかりましたが対処法がわかりません。

原因はFormのClosingイベントハンドラでe.Cancel = true;として
フォームを閉じないようにしていた為でした。
OSのシャットダウン時にOSがフォームを勝手に閉じようとして、Closingイベントハンドラ
の上記の行でシャットダウン処理を全てキャンセルしてしまいます。
しかも、SessionEndingイベントが発生しないので対処のしようがない状態です。
よろしくお願いします。

759 :デフォルトの名無しさん:02/11/27 17:05
System.Windows.Forms.TabControlにTabPageを2つ作って、
1つ目のTabPage1にはコマンドボタンを一つ、
2つ目のTabPage2にはテキストボックスを一つ配置していて、
フォームの起動時にはコマンドボタンのあるTabPage1が表示されている状態で起動します。

コマンドボタンを押すと
this.textBox1.AppendText("abcde");
というコードが実行されて、TabPage2の方にあるテキストボックスに
"abcde"という文字が押した分だけ追加されていくという内容なのですが、
ボタンを押すと

System.ArgumentOutOfRangeException: インデックスおよび長さは文字列内の場所を参照しなければなりません。
パラメータ名 : length
at System.String.Substring(Int32 startIndex, Int32 length)
at System.Windows.Forms.TextBoxBase.set_SelectedText(String value)
at System.Windows.Forms.TextBoxBase.AppendText(String text)

とエラーが出てしまい、テキストボックスに文字列が追加されません。

ところが、コマンドボタンを押す前に一度でもTabPage2のほうに切り替えてから
もう一度TabPage1に戻ってコマンドボタンを押すと正常にエラーも出ずに
処理が行われます。

プログラムを起動するたびにTabPage2に切り替えるのでは大変なので
何か解決策はありませんか?
ご教授お願いします。

760 :デフォルトの名無しさん:02/11/27 17:24
>>759
AppendTextの変わりに
this.textBox1.Text += "abcd";
とすればよろし。なんで例外でるのかしらんけどね。

余談だがApeendText変な時あるよ。一行長すぎると途中で切れて表示されなかったり。
まったくわけのわらん動きするときがある・・・


761 :ハマリ:02/11/27 19:37
System.Diagnostics.Processを使って、外部コマンドを呼び出してます。
コマンドプロンプトの画面が一瞬見えるのが凄く気に食わないのです。

WindowStyleはHiddenにしてあるにもかかわらず、しっかり表示されるのです。

例えば、ping.exeを呼び出すとします。
私がやりたいことは、『ping.exeを動かして、その出力だけを変数に格納する』
ということです。ところが、実際はpingを打っている間、黒い画面がフォーム
を覆うような感じで表示されてしまうのです・・・。

なにかご存知ないですか?

762 :デフォルトの名無しさん:02/11/27 23:48
>761
Win32コンソールプログラムでもダメですか?

763 :デフォルトの名無しさん:02/11/28 00:03
>>761
WindowStyleがNormalだと表示、Hiddenだと非表示にちゃんとなるよ。
pingは試してないが入出力の問題のような?

764 :ハマリ:02/11/28 01:22
コンソールプログラムでもだめです。

Process proc = new Process();
proc.StartInfo.FileName = program;
proc.StartInfo.Arguments = argument;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;

proc.Start();
output = proc.StandardOutput.ReadLine();
proc.Close();

こんな処理をやってます。ヘルプ見ながらやってたらこういう手続きに
なったのですが、、やっぱり変ですか。

765 :ハマリ:02/11/28 01:29
具体的な症状は、
コンソールが前面に表示されて(フォーカスはアクティブになってる)
その間、メインのフォームのコントロールが描画されていない。
因みにスタイルを"Minimized"にすると、一瞬前面に表示されてから
タスクバーに引っ込む感じ。実に見栄え悪い状態です。

完全にバックグラウンドで処理させたいのですが。。

766 :デフォルトの名無しさん:02/11/28 02:18
>>764
そのコードではないが自分のをちょっと改変してping.exeでやってみた。
確かに出るね。
でもCreateNoWindowをtrueと追加したら出なくなった。
試してみて。


767 :ハマリ(糸冬):02/11/28 06:59
>>766
>でもCreateNoWindowをtrueと追加したら出なくなった。
さすがです。見事にでなくなりました。
どうもありがとうございます。もっとよくヘルプ見るようにします。

768 :デフォルトの名無しさん:02/11/28 07:41
質問でございます。
ListView があってアイテムがいくつか入っています。
この状態のとき,あるイベントによってアイテムのBackColorを変更したのですが,
ListView.Update() や ListView.Refresh() ではBackColorが変わりません。
(これらのメソッドはListView自体の更新をするだけで,アイテムには関与しないってことですよね?)

今は ListView.Itemsを空にしてもう一度追加しなおしているのですが時間がかかってしまいます。
うまい方法はないでしょうか。

769 :デフォルトの名無しさん:02/11/28 15:19
Bitmapクラスに透過色を設定したいんだがうまくいかない。
単純に、
img.MakeTransparent(transparentColor)
とするだけでは駄目なのか?

770 :デフォルトの名無しさん:02/11/29 07:12
>>768
>今は ListView.Itemsを空にしてもう一度追加しなおしているのですが時間がかかってしまいます。
それしかない。

771 :デフォルトの名無しさん:02/11/29 10:10
>>770
そうですか。
がまんするしかなさそうですね。
ありがとうございました。

772 :デフォルトの名無しさん:02/11/29 10:50
コントロールのClickイベントで右クリックと左クリックを見分けるにはどうすればいいでしょうか?

右クリックするとコンテキストメニューが出るようにしてあるのですが,
クリック時に処理Aを行わせると,右クリックでコンテキストメニューが開く場合にも処理Aが行われて困っています。


773 :デフォルトの名無しさん:02/11/29 16:26
>>771
できませんか?
すくなくとも、Update(), Refresh(),
Hide() してから Show() のどれでもいけるような・・・。
おいらの詳細モードではできてるけど。
それとももっと別の話してるのかな・・・。(?_?)
XP Professional SP1
.NET Framework 1.0 SP2だけど・・・。


774 :768:02/11/29 19:35
すいません。解決しました。
同じ内容の異なるインスタンスに対してBackColorの変更を行っていました。

ListView a.Add(new ListViewItem("same"))
ListView b.Add(new ListViewItem("same"))

〜〜〜〜〜〜〜〜〜〜〜
item = a.find("same");
a.IndexOf(item).BackColor = Red;
b.IndexOf(item).BackColor = Red;

コードめちゃくちゃだけどイメージはこんな感じ。すまそ。

775 :スティービーワンダー:02/11/30 00:10
「わからないことを信じているから、苦しむのさ。迷信はだめだ。」
http://www.microsoft.com/japan/msdn/net/books/ProgADONET/chapter10.asp

776 :デフォルトの名無しさん:02/11/30 05:31
ASP.NETで、すでにある、WebControlsを継承してUserControlsってつくることできませんか?

777 :デフォルトの名無しさん:02/11/30 06:50
int x=0;
BinaryWriter bw;
bw.Write(x);

書きこみのこれを
BinaryReader br;
x=br.ReadInt32()

こうやって読みに、もしくは読みから書きに変換してくれるプログラムない?
いちいちリード/ライトで対応するコード書くの面倒くさくてさ。

778 :777 :02/11/30 07:36
1つ2つならまだいいんだけど20個ぐらいになってくるともうやりたくないってなる気持ちわかる?

779 :デフォルトの名無しさん:02/11/30 08:44
プリーズ>>772


780 :デフォルトの名無しさん:02/11/30 10:24
>>779
なぜOnClick

781 :779:02/11/30 10:39
>>780
えっと,クリックされたときにOnClickが呼ばれるからなんですが・・・
右クリックと左クリックを区別したいときはMouseUp・MouseDown等を駆使するしかないのですか?

782 :779:02/11/30 10:40
>>780
あ,もしかして「何故OnDoubleClickじゃなくてOnClickでやるのか」という意味ですか?
だとしたらなんとなくです・・・すいません。

783 :デフォルトの名無しさん:02/11/30 20:52
>>782
780じゃないから予想だが、
OnClickメソッドでなくClickイベントで処理せんのか?
という意味だろう。
で、何かのコントロールを継承してコントロール作成中かい?

784 :779:02/12/01 01:15
>>783
レスありがとうございます。

>OnClickメソッドでなくClickイベントで処理せんのか?
OnClickメソッドの継承とClickイベントにハンドラ追加するのとでは何か違いがあるんでしょうか?
どちらも EventArgs を受け取るようですが。

ListViewを継承したものなんですが,ダブルクリックではなくてクリックで実行したいと思ってやってみたのですが,
右クリックのときにも反応してしまうのです。

785 :783:02/12/01 02:30
>>784
いや、継承したクラスならOn〜をオーバーライドするのでいいよ。

>OnClickメソッドの継承とClickイベントにハンドラ追加するのとでは何か違いがあるんでしょうか?

継承したクラスでの記述ならClickイベントとして記述する必要はないよ。


・・・って、よくよく考えたら
780は唐突にOnClickと言ってるんだろう。そんなことそれまでにでてないような・・・

786 :779:02/12/01 17:05
結局ダブルクリックにすることにしました。
今サイズ変更可能なパネルを作ったのですが,OnMouseDownとかを使えば>>772もできそうです。
それは後でやるとして,質問なんですがOnKey*系のイベントがおかしい気がするのですが。
以下のコードを実行してもらえませんか?OnKeyDownが呼ばれないのですが。。。

using System;
using System.Windows.Forms;
public class Test : Panel {
  public Test() {
    Dock = DockStyle.Fill;
  }
  protected override void OnKeyDown(KeyEventArgs e) {
    Console.WriteLine(e);
    base.OnKeyDown(e);
  }
  protected override void OnMouseDown(MouseEventArgs e) {
    Console.WriteLine(e);
    base.OnMouseDown(e);
  }
  public static void Main() {
    Form f = new Form();
    f.Controls.Add(new Test());
    Application.Run(f);
  }
}


787 :デフォルトの名無しさん:02/12/01 17:48
>>786
>OnKeyDownが呼ばれないのですが。。。
動作としてはそれで正しいじゃないだろうか。
例えばLabelなどでも同じ動作で、Panel、Label、PictureBoxは
ドキュメントのPublicなイベントを見るとそこにはKey〜系がない。
TextBoxにはPublicなイベントしてKey〜系あるし。

ただ、これを裏付ける解説のあるドキュメントを見つけられんのだけど。

788 :779:02/12/01 18:23
>>787
あ,ほんとですね。確かにPublicイベントにKey系がありませんでした。
ControlのKeyイベントにハンドラ追加したらいけるかなと思いましたがダメでした。

結局,Panel(やLabel,PictureBox等)ではKeyイベントを拾えない,ということになるのですか?

789 :デフォルトの名無しさん:02/12/01 18:42
フォーカス持たないコントロールがKeyイベントをどうやって取得するのかと。

790 :779:02/12/01 20:01
>>789
がびーん!そういうことですか・・・。

AxWebBrowserをPanelに追加していて,Panelが一つの単位になってますので
Panelで色んな処理をしようと思ったのですがダメみたいですね。
どうもお騒がせしました。

791 :787:02/12/01 20:37
>>789
おれもフォーカス持たないからだろうと思ったんだけど、
CanFocusプロパティはTrue返すんだよ。
PanelはともかくPictureBoxなんかなら、WndProcをオーバーライドすれば
Key系も拾えるんではないかと予想。

でもま、FormのKeyPreview=Trueにしてそっちで処理するのがいいのかな。

792 :デフォルトの名無しさん:02/12/02 02:52
ASP.NETで、ViewStateがらみのところで困ってます。

今作ってるのはTextBox1とCustomValidatorとButtonだけの
シンプルなページで、TextBoxに入れられた文字列が数字か
どうかを判定をして、数字でなければ OnServerValidate内で
args.IsValid = falseにして元のページに戻しています。

問題なのは、数字の場合も元のページに戻して、引き続き
入力させるようにしてるのですが、前回入力値が残っており、
これを消す方法が分かりません。

ページに戻る前に ViewStateを初期化する方法とか、何らかの
解決策があれば教えてください。おながいします。

793 :デフォルトの名無しさん:02/12/02 15:28
XmlTextReaderでXMLファイルを読み込む際に
空要素はどのように見分ければよいのでしょうか?
XmlTextReader.IsEmptyElementだと、
<hoge />は検知できても
<hoge></hoge>は検知できないようです。
良い方法があれば教えてください。
宜しくお願いします。


794 :デフォルトの名無しさん:02/12/02 16:09
ASP.NETでExcelファイルを作成するプログラム作っています。
ファイル作成して内容書き込みまではできているんですが、
印刷の向きや倍率など設定する方法がわかりません。

いい方法あったら教えてください。

795 :あああああ:02/12/02 17:15
ダメだ!!!亜fdさふぁあじゃじゃ
再現性は低くて、たまにクラッシュするバグで悩んでます。
デバッグすると
『'System.NullReferenceException' のハンドルされて
いない例外が system.windows.forms.dll で発生しました。』
と出て、

[STAThread]
static void Main()
{
Application.Run(new Form1());
} ←★ココにマークが出る

こんなところにジャンプします。どこが悪いのか目星つけられないんですTT

796 :デフォルトの名無しさん:02/12/02 17:23
>>795
VS.NETのステップ実行でデバッグしてるんだよね?
★印に飛ぶ直前に実行したコードを見るのがよいかと。

797 :デフォルトの名無しさん:02/12/02 17:30
>>796
ステップ実行なら悩まないでしょ。

798 :デフォルトの名無しさん:02/12/02 18:11
>>795 これでどう?

try
{
Application.Run(new Form1());
}
catch(NullReferenceException nrex)
{
Console.WriteLine(nrex.StackTrace);
Console.ReadLine(); //StackTraceを読み終えるまで停止させる
}

799 :あああああ:02/12/02 18:49
今たてこんじゃったので後でやって、報告します。
報告いらんか・・いやしておこう、サゲて。

800 :自己レス:02/12/02 19:24
>>792
Validation OK時にthis.Server.Transfer("元のページ.aspx", false);
とやるだけでOKでした。

801 :デフォルトの名無しさん:02/12/03 02:29
素朴な疑問だけど、
C#でゲームプログラミング(DirectX)は速度的に向いてないかな?
やっぱ、C++,Cでやったほうがいいかな。
Java育ちなので、C++,Cはどうも開発効率的に非効率な気がして・・・。
処理的には、早いんだろうけど。


802 :デフォルトの名無しさん:02/12/03 02:51
DirectX9βを触ってみたけど、nativeとまったく遜色なかったよ。
これからはC#やVB.NETでDirect3Dするのも普通になったりすると思う。
たとえばPostPetなんかはコレで作っても問題ないだろうね。

803 :801:02/12/03 03:06
バリバリな動きで綺麗なグラフィックの3Dゲームとかも、
C++やCでガリガリ書いたやつとC#で書いたものとを比べても、
パフォーマンス的にそんな劣らないのかな?

804 :デフォルトの名無しさん:02/12/03 03:14
PCのクロックやビデオカードの違いの方が、影響が大きい罠。

あとはガベコレでつっかえないかどうか。これはある程度コードを
書いてみないと判らないな。

805 :デフォルトの名無しさん:02/12/03 08:12
C#のガベコレってJavaより短い周期で動いてない?気のせいかしら?

806 :デフォルトの名無しさん:02/12/03 08:28
ビデオドライバがやるテクスチャメモリのガベコレとか
プログラマが自分で組み込んだガベコレとかのほうが
時間かかってたりしてね〜

807 :LoserC#:02/12/03 08:47
C#で自前のフォームを作成し、そのフォームを新しく作ったウィンドウにも継承するにはどのようにすればよいのでしょうか?
public class Form2 : Namespace1.Form1
と記述してデザイナを表示しようとすると
”ドキュメントを読み込み中にエラーが発生しました。”
と出ます。
またDLLを作成してフォームを継承する方法もあるのですが、
DLLの作成の仕方が分かりません。
誰かご指導お願いします。


808 :795:02/12/03 16:35
えっと・・スレッドから、DataBridにbindしたDataTableを更新するのって
危険なのでしょうか。

スレッド生成しないでやったらへんなバグでなくなりました。
でもスレッドでやらないと、処理中に応答なくなるしなぁ。

因みに、オカシクなるときは、データグリッドの縦方向のスクロールバー
が2本表示される(鬱

809 :デフォルトの名無しさん:02/12/03 22:14
>>808
定番の質問かな?
ちゃんとControl.Invoke()、Control.BeginInvoke()使ってる?

810 :デフォルトの名無しさん:02/12/03 22:19
こっちにも貼っておこう
http://www.microsoft.com/japan/presspass/releases02/120302gdn.asp

811 :デフォルトの名無しさん:02/12/04 03:26
データを利用したいアプリケーションがDDEしかサポートしていません。
あらゆるところでNETはDDEのサポートはすでになしというのを見るのですが、
今からVB6でアプリケーションを書くつもりはさらさらありません。
C#でDDEを使うことは絶対に無理ですか?もしなんか方法があったら教えて。

812 :デフォルトの名無しさん:02/12/04 03:27
age

813 :デフォルトの名無しさん:02/12/04 03:33
>>811
DDEをラップするDLLをUnmanaged Codeで書いて、それをC#から呼ぶ。

814 :デフォルトの名無しさん:02/12/04 03:39
>>813
thanks!
Unmanaged Code ということはC++とかでDLLを書くの?
そのラップ作業というのはDLLのメッセージの種類全部に対応させるとか、かなり大変な作業になるのかな?

815 :デフォルトの名無しさん:02/12/04 03:40
DLLのメッセージの種類>DDEのメッセージの種類

816 :デフォルトの名無しさん:02/12/04 04:21
DllImportって、必ずstaticじゃないといけないの?

817 :808:02/12/04 13:21
invokeでできました。しかしこれ、メインのフォームのコードでなら
this.invokeでできるけど、自分で定義したクラスのコード内から
invokeできませんよね・・

818 :デフォルトの名無しさん:02/12/04 14:22
質問です。
MDIChildrenな子フォームにAxWebBrowserコントロールを追加しています。
ここで子フォームを Hide(), Show() させたいのですが、Show()した時に
AxWebBrowserコントロールがうまく機能せず真っ白になってしまいます。
以下にソースを載せますので、解決方法を教えてください。



819 :デフォルトの名無しさん:02/12/04 14:22
using System;
using System.Windows.Forms;
using AxSHDocVw;

public class Hoge : Form {
  private AxWebBrowser browser = new AxWebBrowser();
  private Form child = new Form();
  private bool show = true;
  public Hoge() {
    base.IsMdiContainer = true;

    this.child.MdiParent = this;
    this.child.Show();

    Button b = new Button();
    b.Dock = DockStyle.Right;
    b.Text = "表示切替";
    b.Click += new EventHandler(this.Toggle);
    base.Controls.Add(b);
  }
  protected override void OnLoad(EventArgs e) {
    this.browser.BeginInit();
    this.browser.Dock = DockStyle.Fill;
    this.child.Controls.Add(this.browser);
    this.browser.EndInit();
    this.browser.GoHome();
  }


820 :デフォルトの名無しさん:02/12/04 14:22
  public void Toggle(object sender, EventArgs e) {
    if (this.show) {
//     this.browser.Hide();
      this.child.Hide();
    } else {
      this.child.Show();
//       this.browser.Show();
//       this.browser.Refresh();
//       this.browser.Update();
    }
    this.show = !this.show;
  }
  public static void Main() {Application.Run(new Hoge());}
}


821 :デフォルトの名無しさん:02/12/05 01:27
>>817
Controlを使うときにInvokeしないといけないわけで、
ControlにはInvokeあるんだから問題ないと思うが。


822 :デフォルトの名無しさん:02/12/05 13:45
ListViewはListView.ListViewItemCollectionとして
Itemが入っていると思われますが、
このコレクションの中から、入力されたキーワードの
前方一致で検索を行う良い方法はないでしょうか?
完全一致ならContainsメソッドで出来るのですが・・・
一行づつ取り出して調べるしかないのでしょうか?

823 :817:02/12/05 17:47
>>821
.....自分でも低レベルなのはわかってるんです。はい。頑張ります(><

ええとですね、自作のクラスCalc.csでは計算だけをして、クラス内で
Windows.Formのメンバは使わないとします。このとき、Calcクラスで
計算した結果を逐一メインのフォーム(Form1とします)のテキストボックスに表示
するような場合、Calcクラスの中からはForm1のinvokeメソッドを呼べませんよね?

普通、こういうときはどうするんでしょうか。
やはり、new Calc(this)とかやって、派生するクラスにいちいちForm1の参照
を渡すものなんですか?
引数に、クラスの機能と直接関係ないものを渡すのがどうも。。。

824 :デフォルトの名無しさん:02/12/05 18:02
> 普通、こういうときはどうするんでしょうか。
> やはり、new Calc(this)とかやって、派生するクラスにいちいちForm1の参照
> を渡すものなんですか?
> 引数に、クラスの機能と直接関係ないものを渡すのがどうも。。。

フォーム側で
Calc c = new Calc()
int a = c.CalcMethod(); // 計算させて結果をもらう

こんな感じで計算した値をもらっちゃいけない理由があるのね?
つか、話がだんだん見えなくなってきた…。

825 :デフォルトの名無しさん:02/12/05 18:27
>>823
計算の結果が出たらイベント発生させてその中でInvoke呼ぶのが普通。

826 :823:02/12/05 19:03
>>824
>Calc c = new Calc()
>int a = c.CalcMethod(); // 計算させて結果をもらう
>こんな感じで計算した値をもらっちゃいけない理由があるのね?

本当はそれでもいいんです (汗
ただの変なコダワリの類ですが、ワーカースレッドを生成して、それにある処理
を任せたら、計算・経過報告のコードもワーカー側にまとめたいなと
思っていたのです(フォーム側で結果を受け取って表示ではなく)。
フォームのコード量を増やしたくないというのもあります。

>>825
なるほど。そういう手続きを踏むのが普通ということが判れば十分です。
GUIのプログラム書くのが始めてなもので、なんと煩雑な!と思いました
が、そういうものだと理解するようにします。



827 :821:02/12/06 01:03
>>823
というか、書いていることが矛盾している。

>ええとですね、自作のクラスCalc.csでは計算だけをして、クラス内で
>Windows.Formのメンバは使わないとします。

System.Windows.Forms名前空間のクラスを使わないのだから、
そのCalc.cs内ではInvokeを使うことはない。

>このとき、Calcクラスで
>計算した結果を逐一メインのフォーム(Form1とします)のテキストボックスに表示
>するような場合、Calcクラスの中からはForm1のinvokeメソッドを呼べませんよね?

・テキストボックスに計算結果を表示したい。
・Calc.csからはコントロールを使わない。
つまり、論理的に考えて、
テキストボックス(またはテキストボックスを使用しているクラス)側
からCalc.csのクラスを利用するわけだから、そのクラスでInvokeを発行すればよい。

もう一度言う。817よ、言っていることが矛盾している。

828 :デフォルトの名無しさん:02/12/06 09:08
どなたか >>818-820 プリーズ・・・。


829 :デフォルトの名無しさん:02/12/06 09:42
>>818-820 の妥協案として,Show&Hideをやらずに
子フォームのLocation.Xを+10000&-10000する方法を思いつきました。

これで解決かと思いきや,+10000等をした時にスクロールバーが反応してしまって困っています。
そこでFormの水平スクロールバーを表示しないようにしたいのですが,
class MainForm : Form {
  public MainForm() : base() {
    base.HScroll = false;
  }
}
としたのですが,何故か水平スクロールバーが消えません。
どないすればよかとですか?

830 :デフォルトの名無しさん:02/12/06 10:55
xyzzyで*csharp-indent-tabs-mode*をtに出来ないんだけど、
なんでだろう?
(setq *csharp-indent-tabs-mode* t)
と.xyzzyに書いて、*.csという拡張子を持つファイルを開くと、
「名前が衝突するためexportできません。editor::*csharp-indent-tags-mode*」
と表示されて悲しい。分かる人いません?

831 :デフォルトの名無しさん:02/12/06 11:03
ListView で次の様になります。(私の環境だけ?)
(1) Windowsフォームに System.Windows.Forms.ListView を追加します。
(2) ListView にアイテムをたくさん(1000個ほど)入れます。
(3) Release コンパイルし、Windows98 パソコンで実行します。
(4) ListViewでスクロールを繰り返します。
(5) GDIリソースを使い果たしてしまいます。
なぜでしょう?わかる人いませんか?


832 :デフォルトの名無しさん:02/12/06 11:10
>>830
xyzzyスレで聞きなさいよ

833 :デフォルトの名無しさん:02/12/06 12:18
>>829
まずブラウザコントロールだけを非表示にした後、少し遅らせてMDIチャイルドを非表示にして、戻すときは逆にMDIチャイルドを復元した後、少し遅らせてブラウザを復活させるというのでなんとかならないでしょうか?

834 :デフォルトの名無しさん:02/12/06 12:45
>>833
あ,タイミングの問題なのですか。
今から学校なんで帰ってきてから試してみます。
ありがとうございます。

835 :デフォルトの名無しさん:02/12/06 20:38
>>833
んー。3秒スリープさせてやってみましたが,やっぱりダメでした。
>>819-820 のソースで
  public void Toggle(object sender, EventArgs e) {
    if (this.show) {
      this.browser.Hide();
      System.Threading.Thread.Sleep(3000);
      this.child.Hide();
    } else {
      this.child.Show();
      System.Threading.Thread.Sleep(3000);
      this.browser.Show();
    }
    this.show = !this.show;
  }
としてみたところ

した。

836 :デフォルトの名無しさん:02/12/06 20:38
System.InvalidOperationException: 'AxWebBrowser' コントロールのウィンドウ ハンドルを取得できません。ウィンドウなしの ActiveX コントロールはサポートされていません。
at System.Windows.Forms.AxHost.EnsureWindowPresent()
at System.Windows.Forms.AxHost.MakeVisibleWithShow()
at System.Windows.Forms.AxHost.SetVisibleCore(Boolean value)
at System.Windows.Forms.Control.set_Visible(Boolean value)
at System.Windows.Forms.Control.Show()
at Hoge.Toggle(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
でした。

837 :デフォルトの名無しさん:02/12/06 20:41
AxWebBrowserのShow&Hideは普通にできるのですが
その親コントロール(今回はForm)がShow&Hideされると
AxWebBrowserは対応できないようです。
解決策を知ってる方がいらっしゃれば宜しくお願いします。

ついでと言ってはなんですが, >>829 ができればもうそっちでやるつもりなので
あわせて宜しくお願いします。


838 :デフォルトの名無しさん:02/12/07 00:30
>>837
↓の現象が起きてるのかな?どうも1.1でも再現するみたいね。

http://www.dotnet247.com/247reference/msgs/9/45348.aspx

839 :デフォルトの名無しさん:02/12/07 01:04
確かに、一度Hide()してからShow()したとき、タスクバーをよく見てみると
子ウィンドウの分バーが1個増えてるね。

840 :デフォルトの名無しさん:02/12/07 02:26
>>839
その子ウィンドウを最大化すると・・・

841 :840:02/12/07 02:41
あれ?>>819-820さんのソースでは問題ないや。
こっちではひどいことになってる。(藁
とりあえずソース載せとこ。

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1003826049&res=57&fi=no

842 :ご教授くださいませ:02/12/07 03:17
C#でグローバルフックってできるんでしょうか?


843 :デフォルトの名無しさん:02/12/07 03:33
>>842
.NET Frameworkではグローバルフックはできない。
http://support.microsoft.com/default.aspx?scid=kb;en-us;318804

844 :ご教授くださいませ:02/12/07 09:18
Σ(゚д゚lll)ガーン


845 :デフォルトの名無しさん:02/12/07 10:24
みなさんありがとうございます。
>>838
ほんとですね。
but the browser window is permanently attached to the upper left corner of my desktop
ってどういうことなんでしょう?左上コーナーとは?
>>819-820 のソースでは何もでないのですが。
# このソース実行してみたかったんですが System.Resources.MissingManifestResourceException が出てしまいました
# 勉強不足ですね。


>>839,>>841

これは>>838の現象ですか?
>>819-820 ではタスクバーには増えていないようです。

うーん。やはり>>829しかなさそうな悪寒・・・。

846 :デフォルトの名無しさん:02/12/07 10:26
>>845
あ,すいません。訂正です。

>but the browser window is permanently attached to the upper left corner of my desktop
>ってどういうことなんでしょう?左上コーナーとは?

>>841さんのコードで分かりました。

847 :卑怯者:02/12/07 11:31
private void menuHide_Click(object sender, System.EventArgs e)
{
  if(this.MdiChildren.Length > 0)
  {
    Form activeForm = this.ActiveMdiChild;
    visibleManager.Push(activeForm);
    this.ActiveMdiChild.Region = new Region(new GraphicsPath());
  }
}

private void menuShow_Click(object sender, System.EventArgs e)
{
  if(visibleManager.Count > 0)
  {
    Form activatingForm = (Form)visibleManager.Pop();
    if(activatingForm != null)
    {
      activatingForm.Region = null;
    }
  }
}

848 :デフォルトの名無しさん:02/12/07 13:05
>>847
うおおおおおおおおおおおおおおおおお!できてる!
ありがとうございます!

Formを保存しておいて消し去るんですか。
全然思いつきませんでした。
# というかRegionプロパティなるものを初めて見ました。


849 :デフォルトの名無しさん:02/12/07 17:15
DLL内の関数をインポートする場合、DllImportAttributeで呼び出し規約が指定できるんですが、
インポートしない場合に呼び出し規約を指定する方法はありますでしょうか?

cdecl規約のコールバックの作り方がわからなくて悩んでいます。

850 :デフォルトの名無しさん:02/12/07 17:25
場違いだったらごめんなさい・・
FFFTPで数日前から画像のみアップできなくて困ってます!
解決策を教えていただけませんか?

851 :デフォルトの名無しさん:02/12/07 17:38
>>850
謝れば何をやってもいいのか?
反省だけならサルでもできる。
お前はサル以下だな。

852 :デフォルトの名無しさん:02/12/07 17:48
>>851
アホか。本当に反省してると思うのか? あれはタダの芸だ。サルには反省などできん。

853 :デフォルトの名無しさそ:02/12/07 18:33
で、>>852>>850>>851 どっちがよりあほだと思う?

854 :デフォルトの名無しさん:02/12/07 18:36
851

855 :デフォルトの名無しさそ:02/12/07 22:13
>>854
なんだ、本人か。(w

856 :デフォルトの名無しさん:02/12/07 22:28
攻撃するメソッドと攻撃を受けるメソッドを作ってそれぞれイベントを発生させようとしてるんだけど。
ガイドラインに素直に従えば

・攻撃
Attack = 攻撃するメソッド
 Attacking = 攻撃しますよイベント
 OnAttack = 攻撃しましたメソッド
  Attacked = 攻撃しましたイベント

・攻撃される
BeAttacked = (以下同様)
 BeingAttacked
 OnBeAttacked
  WasAttacked

ってーなんか OnBeAttacked とか WasAttacked とかめちゃくちゃいやなんでどうしようか迷ってそうだ、ちょうどいいイベントがあるじゃないかとコントロールがクリックされた時のイベント見てみるまでもなく Click とかなってるし。
どうやったら「クリックされた」が Click の一語に集約されるのか甚だ疑問ってゆーかじゃぁすでに Attack を使ってしまってる俺はどうすればいいのよ。

で .NET Framework の命名ガイドラインがどこかおかしいことはこの際置いといて俺のためのナイスなメソッド名ってないかな・・?


857 :デフォルトの名無しさん:02/12/07 23:37
Attack
BeginAttack
OnAttack
EndAttack

858 :デフォルトの名無しさん:02/12/07 23:39
寺利編むを思い出すな

859 :デフォルトの名無しさん:02/12/08 00:01
ちょっとだけワラタ。「SUMMARY OF RESULTS」のとこだけ読んで十分。

http://www.objectwatch.com/issue_42.htm

860 :デフォルトの名無しさん:02/12/08 00:30
◆ネーミング倶楽部◆
http://pc3.2ch.net/test/read.cgi/tech/1035362308/

#まあでも.NET命名は特殊だからC#スレで聞くほうがいいのかな。

861 :デフォルトの名無しさん:02/12/08 03:44
試行錯誤でFTPクライアントを作っています。
バイナリファイルのダウンロードで行き詰まっています。
BinaryReaderから読み込む際にストリームの最後の判別が出来ず
現在以下の様な例外を使った方法で動かしています。
これをもっと上品に行うことは出来ないでしょうか?

System.Net.Sockets.NetworkStream NS = this.GetNetworkStream();
System.IO.BinaryReader BR = new System.IO.BinaryReader(NS);
System.IO.FileStream FS = new System.IO.FileStream(LocalFile,FileMode.Create);
System.IO.BinaryWriter BW = new System.IO.BinaryWriter(FS);
byte b;
while (true) {
  try {
    b = BR.ReadByte();
    BW.Write(b);
  } catch {
    break;
  }
}
BW.Close();
FS.Close();
BR.Close();

862 :デフォルトの名無しさん:02/12/08 05:01
>>861
おいおい。

EndOfStreamException ストリームの末尾に到達しました。

って書いてあろうが。

ms-help://MS.NETFrameworkSDK.JA/cpref/html/frlrfSystemIOBinaryReaderClassReadByteTopic.htm


863 :デフォルトの名無しさん:02/12/08 05:02
>>861
あと1バイトずつだと多分遅いぞ。

864 :861:02/12/08 05:45
>>861、863
レスありがとうございます。
プログラムを始めたばかりで詳しくないのですが例外を使って
判別するのは悪い事では無いのでしょうか?
また、何バイトずつ読むのが適当でしょうか?


865 :デフォルトの名無しさん:02/12/08 09:40
>>856
>・攻撃される
> BeAttacked = (以下同様)
攻撃されるメソッドって・・・

> BeingAttacked
BeUnderAttack

> OnBeAttacked
OnBeUnderAttack

>  WasAttacked
・・・

866 :デフォルトの名無しさん:02/12/08 09:56
>864
> >>861、863
> レスありがとうございます。
> プログラムを始めたばかりで詳しくないのですが例外を使って
> 判別するのは悪い事では無いのでしょうか?
> また、何バイトずつ読むのが適当でしょうか?

上の例じゃ読み込み終了で終わったのか、ほかの例外で終了したのかわからんべ。

素直にStream.Read(.....)でバッファに読み込んでいったら?
戻り値がゼロになったところで終了判定。
バッファサイズは俺もどのくらいが適当なのか判らないけれど
ネットワークが遅けりゃ1〜2KB、速けりゃ32KBぐらいの感じで考えてるが…



867 :デフォルトの名無しさん:02/12/08 10:18
で、cdecl規約のコールバックの作り方がわかる奴はやっぱり誰もいないの?

868 :デフォルトの名無しさん:02/12/08 10:33
内容不明瞭

869 : :02/12/08 11:26
WIN-XPホームエデションではVS.NET、特に.NET ASPの開発は不可と聞いた
覚えが。本当ですか。


870 :デフォルトの名無しさん:02/12/08 11:31
ホームエディチョンではIISが動かないと思った。
よってIISのアドオンであるところのASP.NETは動かない。
VS.NET自体は問題なく動いてるよ。

871 :デフォルトの名無しさん:02/12/08 12:59
>>867
(何こいつ・・・)

872 :デフォルトの名無しさん:02/12/08 13:51
http://www.blong.com/Conferences/BorConUK2002/Interop1/Win32AndDotNetInterop.htm

873 :861:02/12/08 15:00
>>866
ありがとうございました。上手く行きました。

System.Net.Sockets.NetworkStream NS = this.GetNetworkStream();
System.IO.BinaryReader BR = new System.IO.BinaryReader(NS);
System.IO.FileStream FS = new System.IO.FileStream(LocalFile,FileMode.Create);
System.IO.BinaryWriter BW = new System.IO.BinaryWriter(FS);
int int1 = 0;
byte[] B = new byte[4096];
while ((int1 = BR.Read(B,0,4096)) > 0) {
  BW.Write(B,0,int1);
}
BW.Close();
FS.Close();
BR.Close();


874 :デフォルトの名無しさん:02/12/08 15:21
>>871
きっとそうやって「俺わかるよ。ほらこうするんでしょ。」ってコード書いてくれる奴を
釣ろうとしてるんでしょ。

875 :デフォルトの名無しさん:02/12/08 15:31
857,860,865
レスありがたおうよ。
ガイドラインによればBeginとEndは使っちゃダメなのよ。
これらは一般に非同期実行のときに使用されるから混乱を避けるためにイベントでは使用するべからずなりよ。

受け身のメソッドってのは変な感じかもしれないけどポリモーフィズムを考えれば必須だよね。
UnderAttack参考にさせてもらうよ。

876 :デフォルトの名無しさん:02/12/08 17:10
>>875
>受け身のメソッドってのは変な感じかもしれないけどポリモーフィズムを考えれば必須だよね
どう必須なの?
「攻撃される」はイベントであって、その中で発行する「攻撃される」側のメソッドは
「守備をする」とかではないの?



877 :デフォルトの名無しさん:02/12/08 17:21
>>874
いいや、いもしないのに釣れるわけねーじゃん。

878 :デフォルトの名無しさん:02/12/08 17:46
>>872
だからそれはDllImportが使える場合ね。
コールバックはデリゲートだから、DllImportは使えないんだよ。

まあ、わかんなくてもしょうがないよ。
俺でも一日悩んだんだから、君たちには難しすぎたね(藁
とりあえず解決したから、もう答えてくれなくても全然かまわないよ。

もし、どうやるのかどうしても知りたい奴がいるなら、
ちゃんと礼儀正しく頼めば、気が向いたら教えてやるよ。
まあ、お前らのレベルじゃ必要ないからいないだろうけどね(藁

879 :デフォルトの名無しさん:02/12/08 18:01
DllImportした関数に文字列(byte[] -> char*)渡して、
結果を先に渡した文字列の部分を指すポインタ(char* -> IntPtr)入りの
構造体で返してもらってるんだけど、この元の文字列(byte[])が
予期しないタイミングでガベコレに巻き込まれて
アドレスを移動されてしまう。

すると、返してもらった構造体内のIntPtrは、アドレス移動に
追随出来ず、無効な領域を指してしまうんだけど、これを防ぐ方法有る?


880 :デフォルトの名無しさん:02/12/08 18:11
>>877
「釣ろうとしてる」んでしょ。日本語大丈夫?

881 :デフォルトの名無しさん:02/12/08 18:19
>>879
pinすればいいじゃん。

>>880
釣れもしないものを釣ろうとするのはお前くらいだよ。

882 :デフォルトの名無しさん:02/12/08 18:25
>>881
俺じゃねーってw

883 :デフォルトの名無しさん:02/12/08 18:25
ご隠居が釣り竿の手入れをしようと、室内で竿を取り出した。
それを見ていた与作は、「何を釣ろうとしてるんですか?」と尋ねた。
するとご隠居は「部屋の中で魚が釣れるわけないだろう。まったくお前は粗忽だねぇ」と答えた。
すると与作は「釣れるかどうか聞いたんじゃなくて何を釣ろうとしてるか聞いたんですよ。日本語大丈夫?」
と尋ねた。

かくして与作はいつも通りみなの笑い者になりましたとさ。
お後がよろしいようで。

884 :デフォルトの名無しさん:02/12/08 18:27
>>883
必死だなw

885 :デフォルトの名無しさん:02/12/08 18:30
与作をバカにするのくらい、必死にならなくても余裕だが何か?

886 :デフォルトの名無しさん:02/12/08 18:34
>>883
えーっと。釣り場(2ちゃんねる)で釣りしているのと
釣り場じゃないところ(室内)で釣りしているのとは話が
違うと言いたかったんですか? それとも>>883自体が釣り餌ですか?

887 :デフォルトの名無しさん:02/12/08 18:35
もうそろそろ悔しくて「釣れた」と捨て台詞を吐くころだろう。

888 :デフォルトの名無しさん:02/12/08 18:40
いやいや、まともなコード書ける奴は釣れないって。
釣れるのは与作ばかりだから、釣れたなんて台詞はとてもとても。

889 :デフォルトの名無しさん:02/12/08 18:41
>>888

良く分からんが888ゲットおめ。

890 :デフォルトの名無しさん:02/12/08 18:43
>>849=>>867 が基地外だった。で終了放置で良いですか?

891 :879:02/12/08 18:56
>>881
pinって何?


892 :デフォルトの名無しさん:02/12/08 19:11
>>891
pinningでヘルプ引いてみ

893 :デフォルトの名無しさん:02/12/08 19:13
C#ならfixedだね

894 :デフォルトの名無しさん:02/12/08 19:25
>>890
お前みたいな粘着厨房は放置ということで終了


895 :デフォルトの名無しさん:02/12/08 19:33
>>894
はあ?俺一回しか書いてないんだけど。。。まあいっか。

896 :デフォルトの名無しさん:02/12/08 20:36
>>876
能動か受動かって単に文法上の問題だから。
たとえば怪我をするって日本語だと能動だけど英語にすれば be injured とかだし。

どっちにしてもC#は他のクラスのイベントを呼び出すことが出来ないからそのイベントを起動するためのメソッドが必要なんだよね。
攻撃されたときの WasAttacked イベント内で防御とかいろいろするにしてもまずそのイベントを発行するための BeAttacked メソッドが必要って感じかな。


897 :デフォルトの名無しさん:02/12/08 20:56
>869
XP HOMEは
VS.NETでのASP.NET開発→×
WebMatrixでのASP.NET開発→○


898 :デフォルトの名無しさん:02/12/08 22:44
>873

なぜNSからFSに直に書き込まぬ?

899 :デフォルトの名無しさん:02/12/09 00:08
「cdecl規約のコールバック」って意味がよくわからんけど、dumpbin /exportな
関数を作る方法なら過去スレにガイシュツ。当時はスゲーのがいたもんだ。

900 :デフォルトの名無しさん:02/12/09 11:09
>>899
すごくねーよ。
そんなの初歩の初歩だ。DllImportAttributeを使えばいいだけだろうが。
コールバックの場合はデリゲートを使って作らなくちゃいけないから、
DllImportAttributeが使えねーんだよ。

ちなみに、どこが意味わからねーんだ?
cdeclもコールバックもデリゲートも常識的な用語だろ。

901 :879:02/12/09 19:41
fixedキーワードだけじゃ、抑え込める範囲が狭すぎたけど、
GCHandleのpinningと組合わせて解決出来たよ。
ありがとヽ(´ー`)ノ


902 :デフォルトの名無しさん:02/12/09 23:18
>>900
おいおい、過去ログみたのか?みてからいえよクソボケ。
DllImportなんてどこにも書いてねーよ。おめーdumpbin /exportの意味がわかんねーんだろ。

903 :デフォルトの名無しさん:02/12/09 23:22
ちなみに馬鹿がぼけたレス続けるとむかつくから教えてやるが、Part4のログだ。
見てから謝りに来い。

904 :配列としてのインスタンス作成に関して:02/12/10 02:37
あるクラスのインスタンスを配列で確保したい場合に

private static CSrc[] src;
src=new CSrc[]{new CSrc(),new CSrc(),new CSrc(),new CSrc(),new CSrc()};

と書いたのですが、この方法は見た目、うざいです。
どなたか、もっとすっきりした記述方法はご存知ないでしょうか

905 :デフォルトの名無しさん:02/12/10 02:44
foreach(i in src) { i = new CSrc() } ってのはどお?

906 :配列としてのインスタンス作成に関して:02/12/10 02:59
サンクスです。
自己レスですが、
src=new CSrc[10];
for(int i=0;i<src.Length;i++)
{
src[i]=new CSrc();
}
で解決してました。
でも、上様の処方がより簡潔です。
お知恵お借りいたします。

どうもでした

907 :配列としてのインスタンス作成に関して:02/12/10 03:05
あれ,foreach文で
foreach(CSrc i in src)
って、やると、iって読み取り専用?
従って、割り当て不可?
ちょっと渡来しましたが、できませんでした。
いかがでしょうか。

908 :デフォルトの名無しさん:02/12/10 03:45
>>907
905のようなあんぽんたんが発生しないように読取専用にしてあります。
たとえ読取専用にしなくても代入は無意味でしょ。

ところで
ms-help://MS.MSDNVS.1041/cpgenref/html/cpconstaticfieldnamingguidelines.htm
このへんによると静的フィールドには名詞の省略形を使用し、
なおかつハンガリー記法で書くべきなんだそうだ。

すなはち
↓ハンガリアン
StrAppName
  ↑省略

おまいら実践してますか?
俺はしてませんが。

909 :デフォルトの名無しさん:02/12/10 04:01
する訳が無い。
ハンガリアソなんか糞食らえだ。

910 :デフォルトの名無しさん:02/12/10 06:15
>> 849
http://www.microsoft.com/japan/msdn/library/ja/cpguide/html/cpconusingcallbackfunctions.asp?frame=true
検索したらすぐ見つかったけどこういう事じゃないのかな?
878で言ってるのはどういう事だろう?DllImport使わないわけでもないような。
あと、Part4の528,529はコールバックとは全然関係無さそうだけど…。

911 :デフォルトの名無しさん:02/12/10 07:42
>>908
これでチェックすべし。
http://gotdotnet.com/team/libraries/

912 :デフォルトの名無しさん:02/12/10 08:09
ちょっと遅ネタだけど、期待しましょ。ヽ(´ー`)ノ
http://discuss.develop.com/archives/wa.exe?A2=ind0212a&L=dotnet-web&T=0&F=&S=&P=6733

913 :デフォルトの名無しさん:02/12/10 08:16
WSTKの正式版が出たみたいね。1.1で標準装備になるのかな?

Web Services Enhancements 1.0 for Microsoft .NET
http://msdn.microsoft.com/downloads/sample.asp?url=/msdn-files/027/002/108/msdncompositedoc.xml

914 :913:02/12/10 08:17
WSTKじゃなくてWSDKだった・・・。スマソ

915 :905:02/12/10 09:19
あんぽんたんですあっはっは。
普段使ってないのに書き込むもんじゃないなぁ

916 :904:02/12/10 12:23
あんぱんまんです

917 :デフォルトの名無しさん:02/12/10 13:34
>>902
おいおい、そこに書いてあるようなことなら、DllImportでできるっつってんだよ。

>>910
おいおい、呼び出し規約変えてねーじゃんかよ。

まったくバカばっか。

918 :デフォルトの名無しさん:02/12/10 14:01
>>917
うーん、君は何がしたいのかほんとにワカラナイ。Cでいいから例を書いてくれ。
それみて考える。

919 :デフォルトの名無しさん:02/12/10 14:03
>>917
>>902に書いてあることはDllImportではゼッタイに不可能ですが何か?
できるもんなら見せてみろ。

920 :910:02/12/10 14:36
DllImport無しでっていう事なのね。ネットワーク上に配置してあるDLLを
Reflectionで読み取ろうとしたとか?

しかし放置されたのをきちんと我慢出来ない人なんだね。

921 :ななし:02/12/10 16:45
教えてって言ったのに、誰も教えてくれなかったニダ

謝罪と賠償を(ry

922 :デフォルトの名無しさん:02/12/10 16:49
セクースさせてって言ったのに、誰もさせてくれなかったニダ

謝罪と賠償を(ry

923 :デフォルトの名無しさん:02/12/10 17:05
>>849はこういうことかな?違うかもしれんが
cdecl delegate
http://www.google.co.jp/search?hl=ja&ie=UTF-8&oe=UTF-8&q=cdecl+delegate&lr=
.NET 247 Newsgroup - Callback function using C calling convention.
http://www.dotnet247.com/247reference/msgs/17/87210.aspx
DllImportした関数へのコールバック関数の渡し方と制約について
コールバック関数の実装
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/cpconusingcallbackfunctions.asp
DllImport 属性の使用
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vccore/html/vcwlkSysimportAttributeTutorial.asp
managed C++ではどうなるのかちょっとわからん
The Code Project - Implementing Callback functions using IJW (avoiding DllImport) - Managed C++
http://www.codeproject.com/managedcpp/cbwijw.asp
プラットフォーム呼び出しサービス
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vcmxspec/html/vcmg_PlatformInvocationServices.asp

人を馬鹿にする前にNicolas Faucher氏くらいの問題説明を求む。

924 :デフォルトの名無しさん:02/12/11 12:22
全然違うよ、バカ(藁
レベルが低いのはしょうがないが、とりあえず理解できないなら黙ってろよ。

925 :デフォルトの名無しさん:02/12/11 12:58
人を見下す前に、自分の言葉で説明して理解されようとか思わないのかね。

926 :デフォルトの名無しさん:02/12/11 13:39
>>924
バカ(藁
早くCで例を書いてくれよ。バカ(藁
cdeclとか言ってんのにCで例が書けないわけないよな?バカ(藁

927 :デフォルトの名無しさん:02/12/11 13:43
Del厨以来久々に大型新人が登場したな(w
歳末助け合いの季節だ。誰か924の昇天を助けてやってくれ(w

928 :デフォルトの名無しさん:02/12/11 14:19
>>878
>コールバックはデリゲートだから、DllImportは使えないんだよ。

って書き方するから皆混乱してるんじゃないか?
DllImportAttributeが使えないって話だったよな。


929 :デフォルトの名無しさん:02/12/11 14:33
> とりあえず理解できないなら黙ってろよ。



うん。

930 :デフォルトの名無しさん:02/12/11 15:16
っていうか、878で「解決した」って書いてあるね。

でもその同じ878で「コールバックはデリゲート」という意味不明なことが書いてあるね。

コールバックはデリゲート。
「デリゲートはコールバックとして利用できる」ではなく、
「コールバックはデリゲート」。




コールバックはデリゲートじゃないよ。お馬鹿さん。プ

931 :デフォルトの名無しさん:02/12/11 15:30
>>930
俺は理解しました。
コールバックはデリゲート、正しいです。
一人騒いでるやつがやりたいことは、DllImportすることがメインなのではなく、
その DllImport した関数に対して、cdecl のコールバック関数を渡してやりたいのです。
コールバックに渡すのはデリゲートなので DllImport は使えません。

Windows API で使われてるコールバックは stdcall で、
.NET のコールバックは自動的にこれの関数ポインタに変換される。
ところが、今使おうとしてる関数が要求しているコールバックは cdecl だ、さて困った。
と言うことじゃないでしょうか。

俺は C++ でアダプターを一本挟むことを提案します。

932 :931:02/12/11 15:31
.NET のコールバックは自動的にこれの...

.NET のデリゲートは自動的にこれの...

意味不明だ(;´Д`)

933 :デフォルトの名無しさん:02/12/11 15:53
>>931
漏れもそうだと思った。でもそれのやり方なら>>923さんの.NET 247へのリンクで解説されている。
それをコイツは924で「全然違うよバカ」とのたまわった。

過去ログの参照も指摘されていたが、そこにもC#単独では無理だがILをいじれば可能とされている。
それをコイツは917で「DllImportでできるっつってんだよ」とのたまわった。

だから931さん、それは違うんだ、きっと。もっときっとすごいことなんだ。

それから、コールバックはデリゲート使わなくたって実現できるから、
「コールバックはデリゲート」は正しくない。

934 :284:02/12/11 23:02
2つのアプリケーションのインターフェイスとしてファイルを使っている。
両方とも頻繁にそのファイルにアクセスするのでファイルの読み書きの競合が発生する。
それで、その sr= File.OpenText(....);があるブロックにtry{}で囲み、 finally{}で後処理をしてエラーがでても中断しないようにしたつもりが、まだ同じエラーがでてくる。
もう理解不能なのでだれか説明してくれませんか?

935 :934:02/12/11 23:21
ちなみにエラーは別のプロセスがそのファイルを使用しています。とかいう趣旨のもの。
エラーを拾って構造的な処理をしたいのではなくて、ただそのエラーが出るのが分かっているので無視して処理を進めたいということです。

936 :デフォルトの名無しさん:02/12/11 23:23
現在、ListViewにデータを表示するアプリケーションを作成しています。
ListViewクラスはデータをListView内に保持するので、自作クラスにデータを持っていると
データの2重管理になってしまいます。
Model/Viewのような感じにしたいのですが、そういった考えは古いのでしょうか?


937 :デフォルトの名無しさん:02/12/11 23:57
>>936
ListView以外にViewを持つ可能性があるなら、Model/Viewにして
データを二重持ちにしたほうがいいだろうねえ。

その可能性がないならListView派生クラスにボッコボッコ埋め込む。

938 :デフォルトの名無しさん:02/12/12 00:10
>>935
try{}catch{}finally{}
catchしる。

939 :936:02/12/12 00:24
>>937
どうもです。
リストビューで使うデータは他の表示でも使うので、どうしようかと。。
2重にするとデータの入れ替えとか起きたときに整合性を保つのが大変っぽい。
やっぱリストビューを表示とデータ管理クラス両方の役にするのがいいっぽいかな。


940 :デフォルトの名無しさん:02/12/12 00:32
>>939
他のViewがあるなら、迷わず二重持ちにするけどなあ・・・

その、他のViewが参照のみで、操作をしないのであれば、
ListViewがデータ管理役になっても大丈夫かな?

941 :934:02/12/12 00:33
>>938
特にしたい処理がなければfinallyだけで良いと思っていたんだけど。
空のcatchでやってみます。thanks


942 :デフォルトの名無しさん:02/12/12 02:33
>>941
キャッチしないと例外が外に飛び出てっちゃうよ

943 :934:02/12/12 02:52
>>942
try-finally だけの構文もありと書いてあったので、一番一般化されたエラー処理はこれなのかなと思っていました。
それはなんのためにあるの?

944 :デフォルトの名無しさん:02/12/12 02:58
>>943
漏れはそのtry-finallyは使わないけど
メソッド使用してる側でcatchすれば用が足りる時、使えるかもね
でも
try{}catch(Exception error){ throw error;}finally{}
ってしたほうがわかりやすいと漏れは思ってる。あくまで漏れの考えだけどね・・・


945 :デフォルトの名無しさん:02/12/12 03:08
>>943
そいやbefore/Afterパターンってのにも使えるねtry-finallyは。
http://www.hyuki.com/dp/dpinfo.html#BeforeAfter

946 :デフォルトの名無しさん:02/12/12 04:45
>>939
迷わずModel/Viewにするのがいいんでは?
データは一元管理にしないといかんでしょ
そうしないと、いわれてるように更新、同期の管理など大変に.
ListViewだとどう実装するのかは知らないんですが、オーナードローになるのかな?
マスひとつひとつをセルとすると必要なセルの表示時にデータを見に行って表示って感じか

947 :名無しさん♯:02/12/12 07:48
次スレです。
http://pc3.2ch.net/test/read.cgi/tech/1039646808/l50

948 :デフォルトの名無しさん:02/12/12 19:08
ほほう、C#でデリゲート以外のコールバックができるとな?
ここはC#のスレであって、C++のスレじゃないぞ。
ちなみに俺は解決した。
他にできる奴はいねーの?(藁

949 :デフォルトの名無しさん:02/12/12 19:42
>>948
パターン名で言ったらなんだい?

950 :デフォルトの名無しさん:02/12/12 20:45
>>948
俺できるよ。でもそんなひれくれた聞き方するやつになんか教えない(藁

951 :デフォルトの名無しさん:02/12/12 21:23
>>950
嘘つくな。お前にできるわけねーだろ。
本当だと言い張るんならソース見せてみろ。

952 :デフォルトの名無しさん:02/12/12 21:38
>>951
嫌。出来ないと思われても良いよ。見せるよりマシ。

953 :デフォルトの名無しさん:02/12/12 22:09
>>952
はったりプ。

954 :デフォルトの名無しさん:02/12/12 23:43
>>948
ばかじゃねーの。いいかげんにしろ。

955 :デフォルトの名無しさん:02/12/12 23:48
>>950
次スレ立てろヴォケ

956 :デフォルトの名無しさん:02/12/12 23:51
>>955
わかりました。

957 :&diamonds;:02/12/13 00:56
>956
立ってるよ

958 :デフォルトの名無しさん:02/12/13 01:06
ほどよく荒れてるな(W

959 :950:02/12/13 01:09
>>957
俺が立てました。

960 :picty:02/12/13 03:25
C言語で一定周期(100ms以内)の信号を画面に表示させたいのですが、
どの関数を使ったらよいかわかりません。どなたか教えていただけませんか?

961 :デフォルトの名無しさん:02/12/13 04:18
>>960 いちおうこのスレはC#の質問なのでCの質問スレ捜して聞いてみたほうがいいよ。
それに質問も漠然としてるね。信号とはなんだろう。
C#、.Netで一定時間毎に何か処理させたいときはタイマーをフォームに貼り付けて、イベントハンドラを書くというのがやり方だけど。

962 :デフォルトの名無しさん:02/12/13 04:45
unsafe コンテキストで
MyStruct s = new MyStruct( Hogehoge );
SomeNativeMethod( new IntPtr( &s ) );
// MyStruct preventOptimizing = s; // コメントはずすと正しく動くよ

ってな感じで、メソッドに渡すだけの構造体を使うと、
最適化で消滅して正しく動かなくなるんだよねぇ。
アドレス取ってるんだから最適化しても残さないといけないと思うんだけど。

963 :デフォルトの名無しさん:02/12/13 08:08
だからpinしろって。

964 :デフォルトの名無しさん:02/12/13 08:12
そういや、C#って、かなり積極的にガベコレしてるね。


965 :デフォルトの名無しさん:02/12/13 08:54
>>964 ソースは?どうしてそう思ったんだい?

966 :デフォルトの名無しさん:02/12/13 09:02
デバッガでこまめにメモリ内容チェックしたから。

967 :デフォルトの名無しさん:02/12/13 09:22
962はstructだからガベコレは無関係だぞ

968 :デフォルトの名無しさん:02/12/13 12:30
structもガベコレされることすら知らない967がいるスレ

969 :デフォルトの名無しさん:02/12/13 14:09
structがガベコレ対象だと思い込んでいる968が煽るスレ



structはガベコレされません。

970 : :02/12/13 14:09
>>962

これきついね。APIに渡すための構造体を wrap するクラスは全部 pin
するってこと。。。?

971 :デフォルトの名無しさん:02/12/13 14:15
>>962
いや、それはstructの使い方が間違っているってことだろう。
アドレスをメソッドに渡したらアドレス(32ビット数値)が残っているだしょ。
IntPtrにキャストしてるんだから。

素直にヒープに取ればいいじゃん。ちなみにpinは関係ないよね。

972 :962:02/12/13 15:46
>>971
いえ、実は構造体は Win32 の RECT で、メソッドは DirectX の LockRect なんですけどね。
このメソッドはその場で RECT を参照するだけなのでスタックに取っても大丈夫なはずなんです。
ちなみに preventOptimizing への代入を、メソッドを呼ぶ前に持ってきても正しく動きました。
IL 見てないので正確ではないかもしれませんが、アドレス演算子以外の何らかの形で一度も参照されないと変数自体が削除されるみたいなんです。


973 :デフォルトの名無しさん:02/12/13 20:08
>>972
うー、そうですか。DirectXは全然わからないので、IL見せてください。
ちなみにこんなコードで実験してみましたが、結果はちゃんと3が返りました。これじゃ実験になってないですか?

-- DLL(cl dll2.cpp /LD)
extern "C" __declspec(dllexport) int WINAPI SomeNativeMethod(CONST RECT* ptr) {
 RECT r;
 CopyMemory(&r, ptr, sizeof(RECT));
 return r.left + r.top;
}

-- Main(csc /unsafe /optimize+ /debug- Class1.cs)
class Class1 {
 struct MyStruct {
  internal int left;
  internal int top;
  internal int right;
  internal int bottom;
  internal MyStruct(int l, int t, int r, int b) {
   left = l;
   top = t;
   right = r;
   bottom = b;
  }
 }
 [System.Runtime.InteropServices.DllImport("C:\\dll2.dll", EntryPoint="_SomeNativeMethod@4")]
 unsafe static extern int SomeNativeMethod(IntPtr ptr);


974 :デフォルトの名無しさん:02/12/13 20:09
つづき
 [STAThread]
 unsafe static void Main(string[] args) {
  MyStruct s = new MyStruct(1,2,3,4);
  int i =SomeNativeMethod( new IntPtr( &s ) );
  Console.WriteLine(i);
  // MyStruct preventOptimizing = s; // コメントはずすと正しく動くよ
 }
}

975 :962:02/12/13 20:35
まず、C#のソースコードです。

D3DLOCKED_RECT lockedRect = new D3DLOCKED_RECT();
RECT rect = Win32Methods.RectFromLTWH( 0, 0, size.Width, size.Height );
texture.GetSurfaceLevel( 0 ).LockRect( ref lockedRect, new IntPtr( &rect ), 0 );
//RECT preventOptimizing = rect;

/*
 size にはテクスチャのサイズが入っています。
 texture.GetSurfaceLevel( 0 ) で、テクスチャの最上位サーフェイスを取得して、
 それをロック、ロックされた領域の情報(アドレスとピッチ)を D3DLOCKED_RECT に受け取ります。
*/

976 :962:02/12/13 20:42
次に、正常に動く(preventOptimizing を使用している)コードの IL です。

// lockedRect
IL_020e: ldloca.s V_7 // ← lockedRect は V_7 に割り当てられる
IL_0210: initobj [Interop.DxVBLibA]DxVBLibA.D3DLOCKED_RECT

// rect = Win32Methods.RectFromLTWH(...)
IL_0216: ldc.i4.0
IL_0217: ldc.i4.0
IL_0218: ldloca.s V_0 // ← V_0 には size が入っている
IL_021a: call instance int32 [System.Drawing]System.Drawing.Size::get_Width()
IL_021f: ldloca.s V_0
IL_0221: call instance int32 [System.Drawing]System.Drawing.Size::get_Height()
IL_0226: call valuetype [Interop.DxVBLibA]DxVBLibA.RECT Win32Methods::RectFromLTWH(int32,
int32,
int32,
int32)
IL_022b: stloc.s V_8 // ← rect は V_8 に割り当てられる



977 :962:02/12/13 20:43
// texture.GetSururfaceLevel( 0 )
IL_022d: ldsfld class [Interop.DxVBLibA]DxVBLibA.Direct3DTexture8 Sprites.CartoonMeshRenderer::texture
IL_0232: ldc.i4.0
IL_0233: callvirt instance class [Interop.DxVBLibA]DxVBLibA.Direct3DSurface8 [Interop.DxVBLibA]DxVBLibA.Direct3DTexture8::GetSurfaceLevel(int32)

// LockRect
IL_0238: ldloca.s V_7 // ← V_7 の lockedRect と
IL_023a: ldloca.s V_8 // ← V_8 の rect を渡した IntPtr と
IL_023c: newobj instance void [mscorlib]System.IntPtr::.ctor(void*)
IL_0241: ldc.i4.0 // ← 定数の 0 を使って LockRect を呼び出す
IL_0242: callvirt instance void [Interop.DxVBLibA]DxVBLibA.Direct3DSurface8::LockRect(valuetype [Interop.DxVBLibA]DxVBLibA.D3DLOCKED_RECT&,
native int,
int32)


ちなみに最後の preventOptimizing への代入は見事に消滅していました。
が、rect は無事 LockRect に渡されているので正しく動きます。

978 :962:02/12/13 20:48
次に、preventOptimizing を使わずに、正しく動かないコードの IL です。
ほとんど同じですが。

// lockedRect
IL_020e: ldloca.s V_7
IL_0210: initobj [Interop.DxVBLibA]DxVBLibA.D3DLOCKED_RECT

// rect = Win32Methods.RectFromLTWH(...)
IL_0216: ldc.i4.0
IL_0217: ldc.i4.0
IL_0218: ldloca.s V_0
IL_021a: call instance int32 [System.Drawing]System.Drawing.Size::get_Width()
IL_021f: ldloca.s V_0
IL_0221: call instance int32 [System.Drawing]System.Drawing.Size::get_Height()
IL_0226: call valuetype [Interop.DxVBLibA]DxVBLibA.RECT Win32Methods::RectFromLTWH(int32,
int32,
int32,
int32)
IL_022b: pop // ←なぜか pop してしまう。 RECT は V_8 に割り当てられず綺麗さっぱり消滅します。


979 :962:02/12/13 20:51
// texture.GetSururfaceLevel( 0 )
IL_022c: ldsfld class [Interop.DxVBLibA]DxVBLibA.Direct3DTexture8 Sprites.CartoonMeshRenderer::texture
IL_0231: ldc.i4.0
IL_0232: callvirt instance class [Interop.DxVBLibA]DxVBLibA.Direct3DSurface8 [Interop.DxVBLibA]DxVBLibA.Direct3DTexture8::GetSurfaceLevel(int32)

// LockRect
IL_0237: ldloca.s V_7
IL_0239: ldloca.s V_0 // ← なぜか size を渡す。
IL_023b: newobj instance void [mscorlib]System.IntPtr::.ctor(void*)
IL_0240: ldc.i4.0
IL_0241: callvirt instance void [Interop.DxVBLibA]DxVBLibA.Direct3DSurface8::LockRect(valuetype [Interop.DxVBLibA]DxVBLibA.D3DLOCKED_RECT&,
native int,
int32)


と言う感じで、rect が無くなって、指定してもいない size が渡されていました。
rect が無くなるのは最適化の影響ということで仕様としてもいいのですが、
その副作用で size が渡されるのは明らかにバグではないかと思うのですが。
# 下手するとセキュリティホールになり兼ねない気が...

ちなみに、この部分以外にも、構造体のアドレスを渡すところではだいたい再現してました。

980 :デフォルトの名無しさん:02/12/14 00:40
うーん、Interop.DxVBLibA.dllも使って975のコードをコンパイルしてみたものの、
再現しませんでした。唯一書けなかったのはWin32Methods.RectFromLTWHなんですが、
これ何ですか?ILとしてもこの部分(の次)で妙なPOPが起きているようですが。。。
とりあえず自分でこんなのを作ったのですが、これを使って、無駄な代入をコメントアウトしても、
こちらでは正しいILのほうが生成されています。

class Win32Methods {
 internal static RECT RectFromLTWH(int l, int t, int w, int h) {
  RECT rect; rect.left = l;
  rect.top = t; rect.right =w; rect.bottom = h;
  return rect;
 }
}

981 :962:02/12/14 07:36
とりあえず再現する最小限のコードを乗っけます。(行数の関係でかなり押し込みましたが)
問答無用で最初のローカル変数が表示されるようです。
どうやら結構複雑な問題のようで、アドレスを取るだけでは問題は発生せず、
それより前に out パラメータを使ったメソッドを呼び出していると起こるようです。
それが必須条件なのかどうかはわかりませんが。

using System;
using System.Runtime.InteropServices;
public class Class1{
[STAThread] static void Main(string[] args){
int valueToShow = 1024; // なぜかこの値が表示される、数字は何でも良い
int preventOptimizing = valueToShow; // 最適化で消滅するのを防ぐ
// ↑この2行は無くてもかまわない、無い場合は
// ↓ の dummy が表示されるだけ、とにかく最初のローカル変数が表示される。
object dummy; // 型は object である必要はまったく無い、値型でも参照型でも
Dummy( out dummy ); // かまわないが、とにかく out パラメータで渡す。
unsafe{
int valueWantToShow = 1; // 表示されない
// int preventOptimizing2 = valueWantToShow; // しかしこの行を使えば正しく表示される。
ShowValue( new IntPtr( &valueWantToShow ) );
}
}
// 何でも良いがとにかく out で受け取る、代入しないとエラー出るのでとりあえず null をいれておく
// 代入する値は何でもかまわない。
static void Dummy( out object o ){ o = null; return; }
// ポインタの先の値を表示
static void ShowValue( IntPtr p ){
Console.WriteLine( "value = "+Marshal.ReadInt32( p ) );
}
}

982 :デフォルトの名無しさん:02/12/14 11:13
>>981
うー、コピペして、.NET Framework 1.0 RTM、SP2、1.1 Final Betaで
試しましたが、いずれもValue=1でした。。。。

983 :962:02/12/14 11:53
>>982
あれぇ〜〜??
ってことはもしかしてこっちの.NET Frameworkが古いのかも?
SP2当ててなかったっけな・・・?

984 :デフォルトの名無しさん:02/12/14 15:51
ShowValue( new IntPtr( &valueWantToShow ) );
のところを
fixed(int* p = &valueWantToShow){
 ShowValue(p);
}
にしたらどう?

263 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)