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


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

C♯, C#相談室 Part34



1 名前:デフォルトの名無しさん mailto:sage [2006/11/02(木) 20:45:59 ]
(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。

前スレ
C♯, C#相談室 Part34
pc8.2ch.net/test/read.cgi/tech/1157549657/

過去スレは>>2-5あたり。
※スレタイに「#」を入れても消えちゃうので新スレ立てる人は要注意だ。

596 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 15:36:50 ]
>>595
ただ君が知らないだけなわりになぜか偉そうな口ぶりなのはどうなのw

まあ落ち着いて
msdn2.microsoft.com/ja-jp/library/0feaad6z(VS.80).aspx
の「Visual Studio 開発環境でこのコンパイラ オプションを設定するには」でも読め。

597 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 15:46:21 ]
C#で#defineはそんな使わんと思うんだが
マクロないんだし

598 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 15:54:10 ]
>>596
この機能のことであればひとかけらも致命的ではないだろ
お前のコードはいろんなシンボルを使った#ifだらけなのかもしらんが
プロパティで設定すればいいだけの話だ

599 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 15:59:18 ]
C# でも #if SYMBOL はやるけどもな。

#define は、
マクロ型関数は使うな、
プロジェクト全体に渡るシンボル定義はコンパイラオプション+プロジェクト設定でやれ
ってこと。
プロパティはあんまり関係ないと思うが。

600 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 16:20:24 ]
>>598
たしかに致命的ではないね。
その点は申し訳ない。

601 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 17:39:33 ]
つ C++/CLI

602 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 18:19:16 ]
>>590
おまえは本当に痛い。
リソースの乏しい久組み込みではGCが激しく邪魔になる。
一生Winアプリでも作ってろカスが。

603 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 18:39:26 ]
まるで組込用途でC#使ったことがあるような言いぐさだなw

604 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 18:43:33 ]
まあ組み込み用途ならCだし



605 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 19:03:47 ]
>>603
適当に言いました。
すいませんでした。

606 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 00:34:29 ]
>>591
っジェネリック

607 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 00:36:45 ]
C#のジェネリックは実体化しなくても型チェックされるから、
肝心なところで使い物にならない。

608 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 00:38:05 ]
型のチェックがガチガチなのはむしろ好きだがね
ちょっと間違うとコンパイルも通らない

609 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 00:44:21 ]
CとかC++は何でもかんでも値型にキャストできるのが気持ち悪い。
なんでchar[]とかがintにキャストできるのかと。
ポインタはパフォーマンスアップに繋がるのはわかるがこれだけは
気持ち悪くてしょうがない。

610 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 00:48:55 ]
C#の将来は明るいですか?
Windowsのソフトを作る予定がなくてもC#
を覚える必要があるか。JAVAとどっちを
勉強すべきか。

611 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 00:49:47 ]
基本的にC++はメモリ操作が特徴。
型なんてただのメモリの入れ物としてしか認識してないから。

612 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 00:52:04 ]
>>611
CはともかくさすがにC++にそれは言い過ぎのように思う

613 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 00:52:26 ]
>>611
C#の型はどうなの?

614 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 00:53:42 ]
>>611
仮想関数があれば仮想テーブルや型情報、vptrもある。
ただの入れ物とは思えない。



615 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 01:11:04 ]
Windowsのソフトを作る予定がないならC#使ってもしょうがない
作る予定があるソフトに必要な言語をやるといい

616 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 01:28:21 ]
>>615
Linuxに移植されたら?
世界は変わるかも?

617 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 01:33:30 ]
Monoのこと、ときどきでいいから思い出してください

618 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 01:35:46 ]
>>617
しょっちゅう使ってるよ
ペンケースに入ってる

619 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 19:00:20 ]
そういえばC++にはbool型をとる安全なifもないな

620 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 21:28:37 ]
安全
そのようなものはC++の思想に反するのだよ







うそですすみません。


621 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 21:38:41 ]
むしろif文にbool型しかとらないJava/C#が異端なんじゃねーの?
俺もbool型オンリーの方が好きだが、スクリプト言語してるとそうじゃない方が多い気がする。

622 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 21:47:50 ]
型に寛容な言語だとboolだけってわけにもいかないから

623 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 21:48:27 ]
D言語は

bool b = true;
if(b){} // これはいけるけど、
if(b = true) {} // これはだめだお

624 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 21:48:36 ]
動的型じゃ意味ないわな



625 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 21:51:33 ]
>>623
やるならここまできっちりやるべきなんだろうな

626 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 22:05:30 ]
>>623
Dはbool以外の型の値もifに与えられるけど、
代入式を取れないってのは革新的だよね。

627 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 22:12:14 ]
Dはよく知らんが
while ((line = reader.ReadLine()) != null)
こういうのはOKなの?

628 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 22:13:29 ]
>>626

メソッドのリターンコードで条件判定するようなプログラミングが簡単に
表現できない欠陥品だろD言語は

629 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 23:00:27 ]
何を言ってるの君は?


630 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 23:02:10 ]
bool以外の値をifに与えられちゃダメだと思うがね
boolの代入は規制すべきだと思う

631 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 11:12:08 ]
そういった人それぞれのプログラミング思想を具現化したものがそれぞれの言語な訳です

632 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 22:19:44 ]
だな

633 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 02:04:33 ]
C言語(C++)のDLLを、C#と連携を取ろうと思いました。
char*の受け渡しで、詰まるところがありました。
以下のコードで、環境により、エラーが出たりでなかったりします。
(現在、エラーが出る環境がないため、エラーメッセージ失念……)

--------エラーとなるコード C#側(Form1.cs)---------
[DllImport("Hoge.dll")]
extern static StringBuilder GetHogeMessage();

private void Form1_Load(object sender, EventArgs e)
{
  StringBuilder msg = GetHogeMessage();
  this.label1.Text = msg.ToString();
}

-------エラーとなるコード CのDLL側(Hoge.dll)----------
char msg[255];
extern "C" __declspec(dllexport) char* GetHogeMessage()
{
  sprintf_s(msg, 255, "ホゲホゲプー");
  return msg;
}
--------------------------------------

以下のように、ネットで、よく見かけるコードに変えましたら、
エラーが出なくなりました。

続きます。

634 名前:デフォルトの名無しさん [2007/12/26(水) 02:04:57 ]
--------正しく動くコード C#側(Form1.cs)---------
[DllImport("Hoge.dll")]
extern static void GetHogeMessage( StringBuilder name, int len );

private void Form1_Load(object sender, EventArgs e)
{
StringBuilder msg = new StringBuilder(255);
GetHogeMessage(msg, 255);
this.label1.Text = msg.ToString();
}
-------正しく動くコード CのDLL側(Hoge.dll)----------
extern "C" __declspec(dllexport) void GetCurrentName(char* msg, int length)
{
  sprintf_s(msg, length, "ホゲホゲプー");
}

私のよく知る Delphiでは、string ←→ char*(PChar)間では、
コンパイル時に自動で変換コードを入れているのが、
デバッガで逆アセンブルすると、わかります。

同様に、動作を知ろうと、Reflectorで、
ILに変換したのも読んでみたのですが、コンパイラマジックなどなく、
理解にいたりませんでした。

C#は(というか、MSIL?)、内部動作的には、char* → StringBuilderでは、何をやっているのでしょうか?
私は想像では、StringBuilder.pChar のような非公開のプロパティに、char*を代入して処理しているのでは?と思っています。

そうなると、上記のエラーとなるコードでは、インスタンスを生成していないために、
強引なキャストが起き、StringBuilderとして処理はされるものの、
msg.ToString などで、エラーが起きることがある、と。

この辺の、動作に関するドキュメント等ありませんでしょうか?



635 名前:デフォルトの名無しさん [2007/12/26(水) 02:05:54 ]
コードミスりました orz

--------正しく動くコード C#側(Form1.cs)---------
[DllImport("Hoge.dll")]
extern static void GetHogeMessage(StringBuilder name, int len );

private void Form1_Load(object sender, EventArgs e)
{
  StringBuilder msg = new StringBuilder(255);
  GetHogeMessage(msg, 255);
  this.label1.Text = msg.ToString();
}
-------正しく動くコード CのDLL側(Hoge.dll)----------
extern "C" __declspec(dllexport) void GetHogeMessage(char* msg, int length)
{
  sprintf_s(msg, length, "ホゲホゲプー");
}

636 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 02:10:16 ]
マーシャラがStringBuilderが持ってるバッファのポインタをchar*として渡すだけ。
char*を返す関数なら普通にStringで受ければいい。

637 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 02:12:17 ]
>>634
msdn2.microsoft.com/ja-jp/library/fzhhdwae(VS.80).aspx

638 名前:デフォルトの名無しさん [2007/12/26(水) 03:00:09 ]
>>636-637
サンクス!!
アンマネージドと、マネージドの相互変換をマーシャリングというのですね。

Buffers のサンプル
msdn2.microsoft.com/ja-jp/library/x3txb6xc(VS.80).aspx

>>637の文字列のところに書いてありました。
文字列の変更の可能性がある場合は、StringBuilderを使うのはあってるみたいです。
引数などで渡した場合、StringBuilderのバッファのポインタが渡されるだけなんですね。

アンマネージドで確保されたchar* を返却値としてもらう場合は、
自動的に、解放されるのを防ぐために、IntPtr でアンマネージのままもらって、
Marshal.PtrToStringAuto で、stringに変換すればいいのですね。

わかりました!
ありがとうございました。

639 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 11:48:22 ]
.net のVBコードをC#に変換できるツールってないですか?

640 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 12:12:05 ]
ありますよ

641 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 12:21:21 ]
ありがとうです

642 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 18:45:28 ]
ツールでVBコードをC#に変換して
勉強がてらいじってるけどさっぱり分からん

c++でネイティブ書くなんて一生無理だなこれは

643 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 18:53:27 ]
それはない
プログラミングが上達しない才能が無い限りいつかできるようになっちゃうよ

644 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 00:38:35 ]
>>638
char*からなら、PtrToStringAnsiではないのか?



645 名前:デフォルトの名無しさん [2007/12/28(金) 01:18:07 ]
こんばんは。質問があります。
[管理ツール]−[データ ソース (ODBC)]-[ユーザDSN]でデータソースの設定を行う際、
表示される画面(例えばアクセスの場合だとデータベースの選択画面)をプログラム上で
出すにはどうすればいいのでしょうか?
ヒントか参考になるサイトでもいいので教えていただけないでしょうか。
よろしくお願いします。


646 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 02:11:03 ]
GetLastErrorをHRESULTに加工して
それから例外を作る装備はないですか?

647 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 04:48:09 ]
>>644
そうですね。

Buffers のサンプル
msdn2.microsoft.com/ja-jp/library/x3txb6xc(VS.80).aspx

の方でも同じようなやり方で、できるとありました。
どもです。

648 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 11:10:04 ]
throw Marshal.GetExceptionForHR(Marshal.GetLastWin32Error());

649 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 11:18:20 ]
LastWin32ErrorはHRESULTじゃないと言うに
GetHRForLastWin32Error

650 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 21:48:02 ]
>>643
すげぇ才能だなww
逆にそれは見てみたい
>上達しない才能

651 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 22:17:45 ]
論理的思考を拒否する人。
感情や直感が最優先の人。
自分の思いが総て正しいと思う人。(これはちょっと微妙か
実際居ると思うぞ。

652 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 22:19:38 ]
急に何の話してるの?

653 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 08:03:35 ]
>>650
俺いっぱい見てきてるよ・・・

654 名前:デフォルトの名無しさん [2008/01/09(水) 05:55:52 ]
imepita.jp/20071227/588010



655 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 23:45:17 ]
da.Fill(dt)で取得したデータの内容をColumnNameでダイレクトに取得したいのですが
foreach以外に良い方法があるでしょうか?

656 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 23:57:24 ]
www.atmarkit.co.jp/fdotnet/basics/adonet04/adonet04_04.html

657 名前:655 mailto:sage [2008/01/14(月) 00:05:49 ]
>>656
理解が足りてませんでした・・

ありがとうございました

658 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 12:01:58 ]
質問です

SizeChangedイベントをハンドルしてInvalidateを呼び出して画面全体を再描画したいんですが
領域全体が無効化→背景色クリアが入ってしまい、その後に全体を書くので偉くちらつきます。
で、この背景色クリアを無効化したいんですが、どのようにしたら良いですか?

背景色クリアに関してはWinAPIで叩いてたころは確か
ブラシを入れないとか、Invalidateの引数でRedrawするかしないかを指定できたと思うんですが…

よろしくお願いします。

659 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 12:13:19 ]
SetStyle(ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.DoubleBuffer,true);
と設定してダブルバッファリングすればいい

660 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 12:18:12 ]
いやダブルバッファするかどうかは別問題でしょ。
>>658についてはResizeRedrawを有効にすればOKだと思うけど。

なんか>>658はあまりよくわかってなさそうだから一応補足すると、
これは要するにいちいちInvalidateしなくてよくなるって意味ね。

661 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 12:21:52 ]
用途によって違うだろ

662 名前:658 mailto:sage [2008/01/14(月) 13:24:59 ]
>>660
ResizeRedraw=trueにしても駄目でした。
おっしゃるとおり、いちいちInvalidateしなくてよくなるんですが、
単に勝手にInvalidateを呼び出しているだけみたいですね。

結局ですが、多分.NETのInvalidateの実装が
InvalidateRect( m_hWnd, NULL, TRUE );
みたいにされちゃってるんだと思ったんで、
直接user32.dllのInvalidateRectをDllImportして
bEraseをFALSEで呼び出したらブラシのクリアが無くなりました。

ご返信していただいた方ありがとうございました。

663 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 15:07:20 ]
>>658
なにもしない OnPaintBackground は?

664 名前:658 mailto:sage [2008/01/14(月) 16:11:11 ]
>>663
.NET的にはそれが一番よさそうな実装方法ですね…
ありがとうございます。そちらのコードに修正します。



665 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 11:05:58 ]
WM_ERASEBKGND をいじった事なかったのか

666 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 07:35:08 ]
すみませんが教えてください。C#とC++は、.NETで行っても処理速度は
あくまでも同じなのでしょうか?それとも、C++の方が圧倒的に早いのでしょうか?
C#とVBでは処理速度は描画も含めて同じだと思いますが、C++では直接
Win32APIで動かしていて高速動作するようになっているのでしょうか?
よろしくお願いします。

667 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 08:43:03 ]
>>666
.NETが扱えるのはC++ではなくC++/CLI
C++/CLIが吐き出す中間コードはC#,VBと同じ
よって速度は同じ

668 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 09:33:13 ]
C++/CLIはネイティブコードを埋め込める

669 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 11:07:18 ]
>>668
C#もunmanaged使えば同じじゃないの?

670 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 11:18:37 ]
同じ内容を書けば同じ速さになるはずということで

671 名前:666 mailto:sage [2008/01/17(木) 11:21:15 ]
>>667-669
解説ありがとうございます。
たとえば、Windowsのエクスプローラはフォルダのフォーカス移動に伴う
ファイル表示でもものすごく高速に実行され、画面の描画もめちゃくちゃ
瞬時に行われ、ノートPCなどの描画が比較的遅いPCですと.NETの
Formアプリケーションなどとはけっこう速度差を体感します。レインボウ
のような現象も顕著に出ていて、ネイティブのアプリケーションとでは
ものすごく遅い感じが否めませんでした。

こうした差は、C++/CLIを使って、すべてをネイティブコードにコンパイル
してしまうと、たとえばエクスプローラ並みにすばらしく高速で動くように
体感できるようになるということなのでしょうか。(長くてすみません)

672 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 11:22:25 ]
>>669
C#でunmanagedは使えないだろ

673 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 11:27:32 ]
>>671
それはWindows.Formsが遅いだけ。

C++/CLIを使っても同じGUIライブラリを使う限り、もっさりするのは換わらない

674 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 11:33:04 ]
>>673
なるほど、そうだったんですか。
ということは、C++/CLIで、Formsを使わずに何かネイティブのGUI処理をする
方法を使う(MFCでしょうか、よくは知らないのですが)などすれば、
エクスプローラ並みの高速処理が実現できるということでしょうか、
そしてそういうことはC#やVBでは実現できないと・・・、この辺がよくわかりません、
よろしくお願いします。



675 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 12:04:06 ]
>>674
C# と GDI+ でも、あんまり Forms の世話にならないで自前で描画する
大型のコントロール等書いて使えばそこそこ高速になるよ。

下手に Forms で UI 書くより、ブラウザ埋め込んで Ajax でもした方が
高速になるケースもあるだろうし (ブラウザはレンダリングが結構速いから・・・)。

>この辺がよくわかりません
「ネイティブ」の意味が分からないということ?

676 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 12:10:02 ]
Forms はなんであんなに重いのかね?

677 名前:デフォルトの名無しさん [2008/01/17(木) 12:37:29 ]
>>675
たびたびすみません。

>自前で描画する大型のコントロール等書いて

これは要するに、Paintイベントなどでの処理を描くということでしょうか。

>「ネイティブ」の意味が分からないということ?

「自前で描画する大型のコントロール等」という場合に、そこに.NETFramework
のクラスで描画をするだけでよくて、いちいちAPIを使うことなく高速化できるという
ことでしょうか?

678 名前:666 [2008/01/17(木) 12:41:00 ]
名前入れるの忘れました。

そのようにしてコントロールを高速化した場合、たとえば現在Form の右下を
つまんでリサイズすると、Formのサイズ変更がやたらと遅くてボーダーの移動が
ぱらぱらと目に見えて動きます。こういったことも高速になるでしょうか?

679 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 12:44:57 ]
GDIのAPIを直接叩くGraphicsクラスみたいなのは作ったことあるぜ

680 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 12:45:19 ]
たとえばTextBoxを100個WinFormに貼り付けて使うより、
普段はTextBoxの「ハリボテ」を100個描画しておいてユーザーがマウスポインタで
クリックしたときだけ本物のTextBoxを該当位置にひとつだけ表示するような
コントロールを自作した方が早いってことじゃない?

でもこの手のコントロールの自作ってかなり面倒なんだよね。
情報すくないから手探りでいろいろ調べる必要があったり。

681 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 12:54:09 ]
>>678
そう。
同時にOnPaintBackgroundで一瞬背景色で塗られるなどのUI 的に不快な動作も直す。
Panel を Dock させてあれこれやるより、OnSizeChanged 等で自前でレイアウトする方が速いし。

ただ GDI+ の遅さは非力なPCでは如何ともしがたいところもあるので、低スペックPCでも
超軽快に動くようにしたいなら C++ でネイティブでやるより無いと思う。

682 名前:666 [2008/01/17(木) 13:03:35 ]
>>679-681
いろいろご指導ありがとうございます!

>>680
>同時にOnPaintBackgroundで一瞬背景色で塗られるなどのUI 的に不快な動作も直す。

あの動きも改善方法があったんですね、うれしいです。自分でも実装できる
かどうかわかりませんが勉強してみます!

>Panel を Dock させてあれこれやるより、OnSizeChanged 等で自前でレイアウトする方が速いし。

このPanelのDockやDocking機能のコントロ-ルは使っていました。
そうすることなく自分でコントロールの移動やリサイズをさせた方が早い
のですね。いまからそれやると大変かとも思いましたが、今後の参考に致します!
勉強になります、ご指導ありがとうございました!!

683 名前:666 [2008/01/17(木) 13:07:33 ]
>>682(訂正)
すみませんリンク先まちがえました。訂正>>680>>681
>ただ GDI+ の遅さは非力なPCでは如何ともしがたいところもあるので、低スペックPCでも
>超軽快に動くようにしたいなら C++ でネイティブでやるより無いと思う。
この件も頭に置いておきます。どうもでした!


684 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 23:54:33 ]
フォルダのタイムスタンプについて教えてください。サブフォルダを追加してそこに
ファイルを作成して編集したりしてあるフォルダの中身が変化していましたが、
なぜかそのフォルダのタイムスタンプがその変更よりも前のままになっていました。
こうならずに、更新日時が反映されている場合もありました。これは何か更新される
ために必要な条件のようなものがあってそれが異なっているためなのでしょうか?




685 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 10:40:29 ]
そりゃディレクトリエントリが更新された時刻だもの

686 名前:684 [2008/01/18(金) 15:57:46 ]
>>685
そうだったのですか、ということは内部のサブフォルダ内の何かのファイルが変更された
としてもそれの時刻は繁栄されないのですね。わかりました。

すみませんがもう一つお願いします。

アプリケーションのアイコンを探すときにレジストリ内のDefaultIconキーの値のところに、
次のようにマイナスの番号が入っている場合、shell32.dllのファイルの中の番号としては
使えないのでしょうか?kernel32.dllの LoadLibraryExA で検索してアイコンを見つける
ときにも使えるのでしょうか?

HKEY_CLASSES_ROOT\VBSFile\DefaultIcon\"(default)" = "shell32.dll,-298"
HKEY_CLASSES_ROOT\txtfile\DefaultIcon\"(default)" = "shell32.dll,-16"

(これでサウンドの場合の C:\WINDOWS\system32\wmploc.dll,-734 の-734 を
そのまま使ったところ、音符マークのアイコンとは別のものが来たのでした)


687 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 16:11:30 ]
わからんが、wmploc.dllを開いてみたら 734 に音符のアイコン入ってたけど。
マイナスは別の意味を持たせてるのかも?

688 名前:684 [2008/01/18(金) 17:24:42 ]
>>687
あ、すみませんでした、一つ間違いがあることに気がつきました。とはいうものの、
プラスとしてやってみたもののそれでも取ることができませんでした。なんだろう、
映画のフイルムの絵のようなアイコンなのですが・・・。まずは、そのアイコンの
ビューワを探して見てみます、ありがとうございました。


689 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 17:34:14 ]
アイコンはVisualStudioでDLL読んでみたんだけど、
EEだとリソースは無理か

690 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 18:43:00 ]
>>686-687
0以上の値は、0からの連番で何個目という指定(シェルのアイコン指定のダイアログの順番)。
負の値は、絶対値がリソースIDを表すという指定。

691 名前:デフォルトの名無しさん [2008/01/18(金) 19:15:16 ]
>>690
あーそうだったのですか、わかりました。それでもう一度やってみます、
どうもありがとうございました!!

692 名前:691 [2008/01/18(金) 21:20:38 ]
>>689-690
アイコンの取得に成功しました、ありがとうございました。助かりました!!


693 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 22:18:09 ]
int / int で小数点が出てこないのはなんでだぜ?

694 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 22:19:29 ]
その方が速いから



695 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 23:10:17 ]
>>693
int/intの結果はintになると規格で決まってるから

696 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 23:11:29 ]
LOG4NETで設定ファイルを使わずに、ソース上で出力先やAppenderの指定をできる方法ってありますか?
クライアントアプリケーションとして扱う場合に、ユーザに勝手に設定を弄られたくないから
LogManagerでApp.Configの設定を読むような方式にはしたくないのです。
ログ出力クラスを自作したほうが早いですかね?

697 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 23:49:42 ]
そのまんまコードで初期化すりゃいいんでは?

698 名前:696 mailto:sage [2008/01/20(日) 03:49:16 ]
>697
ログメッセージを出力するためのILogインタフェースを持った
インスタンスを取得するには、LogManagerクラスから取得する
しかないようなんですよね。
LogManagerクラスからはRepositoryやAppenderを取得できても、
設定はできないので、どうしたらいいのか分かりません。

RollingFileAppender appender = new RollingFileAppender();
appender.AppendToFile = true;
appender.File = @"C:\test.log";
appender.Layout = new PatternLayout("%d %5p %c{2} - %m%n");
RootLogger root = new RootLogger(Level.Debug);
root.AddAppender(appender);
root.Log(Level.Debug,"tset", new Exception());

以上のコードでログが出ないか期待しましたがダメでした...

699 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 04:18:03 ]
>698
log4netのソースを直に書き換えて埋め込んじゃえばいいんじゃない?

700 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 08:13:51 ]
>>699 あほですか?

701 名前:デフォルトの名無しさん [2008/01/20(日) 20:53:54 ]
アホちゃいまんねん

702 名前:デフォルトの名無しさん [2008/01/20(日) 20:59:58 ]
パーでんねん

703 名前:698 mailto:sage [2008/01/20(日) 23:56:26 ]
>699
なるべくOSSのモジュールはソース変更したくないんですよ。
ライセンスに従って公開しなきゃいけなくなっちゃうし。
公開するだけならまだ変更部分だけで済みそうですが、
公開するための環境を維持しておかなきゃいけなかったり、面倒です。

704 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 00:16:31 ]
>703
log4netはアパッチライセンスだから融通が利くよ。



705 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 13:26:49 ]
ParallelFXのParallel.Forで実行されるスレッド数はいじることができますか?

706 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 23:21:36 ]
>>705
System.Threading.Tasks.TaskManagerPolicy
のコンストラクタで、minThreads, idealThreads, maxThreads を指定可能。

707 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 21:49:38 ]
FlowLayoutPanelにコントロールを追加しているのですが、
下記のようなコードだと一瞬ちらつきます。
FlowLayoutPanelにBeginUpdate、EndUpdateのような描画を一時止めるようなメソッドはないでしょうか?

Panel.BeginUpdate;←のようなものありませんか?
Panel.Controls.Clear();←ここでクリアしてる為、一瞬まっさらになり、ちらつく
for (int i = 0; i < max; i++)
{
 Panel.Controls.Add( コントロール );
}
Panel.EndUpdate;←のようなものありませんか?

708 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 22:28:31 ]
節穴?

SuspendLayout/ResumeLayout

709 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 23:21:31 ]
PictureBoxの非同期読み込みみたいに、画像の読み込みを途中でキャンセルしたり
読み込み状況をモニターできるようにしたいです。
Image.FromFile等ではそのようなコールバックを指定できないようです。
どうやればいいのでしょうか?

710 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 23:26:44 ]
ためしもしないで適当に書くと
Image.FromSteamに非同期Streamを渡せばいいんじゃね

711 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 00:02:26 ]
>>710
Streamを自分で実装してReadの中でゴニョゴニョ、ってことでしょうか。
そういうやり方しかないんかなあ。

712 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 06:00:26 ]
画像のデコード程度、キャンセルしたくなるほどの時間もかからんと思うが

713 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 17:05:46 ]
Image.FromStreamするとImageが生きてる間はStreamも生きてなきゃダメなのか…
と思ってKB309482見て試してみたけど、アニメーションGIFだとダメだった…

714 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 19:33:03 ]
DataSetを使ってレコード単位にDBを操作する場合に、
DataSet.DataTable.Rows[i]["カラム名"]
のような記述が必要になりますよね。
(DataGridのDataSourceを使えばそんな意識はしないですが)

この、文字列でカラム名を指定するのがイマイチだと思うのです。
文字列だからインテリセンスも効かないですし、打ち間違えの可能性も。

カラム名を入れたenumを作れば解決できるような気もしますが、
DataSetの中に既に定義があるのですから、それを流用できないでしょうか?

要するに、カラムをカラム名で指定する際に、intと文字列以外の方法が
あるでしょうか?



715 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 20:12:22 ]
>>714
DataSet継承してカラム名をプロパティにしたクラスを作る。
VisualStudioでテーブルから自動生成すればできるだろ。

716 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 09:26:24 ]
>>713
一旦 MemoryStream に読み込んでそっから Image 作ればいいよ

717 名前:714 mailto:sage [2008/01/31(木) 10:22:15 ]
>>715
どうも有り難うございます。
しばらく考えているんですけれど、どうもイメージが浮かばないです。
DataSetを継承しても、汎用的なものは出来ないように思うのですが。

VSで自動生成と言う意味は、VSのデザイナで自動生成されたDataSetの
ソースを何らかの方法で解析して、カラム名を格納するという意味なのでしょうか‥‥。


718 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 13:51:08 ]
>>717
厳密に型指定されたDataSetでググる。

DataSetをそのまま使うならカラムやその型の情報はクエリーの応答があるまでわからない。
その場合はカラム名の文字列か序数で指定するしかないな。

719 名前:714 mailto:sage [2008/01/31(木) 18:19:17 ]
>>718
なるほど、DataSetを作る段階で別の種類のDataSetだったのですね。
どうも有り難うございます。調べてみます。

720 名前:デフォルトの名無しさん [2008/01/31(木) 22:15:17 ]

DBと接続して使うんじゃなく、dataset単独で簡易なデータベースとして使うなら、
プロジェクトに新規でxsd(スキーマ)を追加してテーブルやリレーション、キーを定義して、
いっぺんコンパイルすると、ツールボックスにdatasetを継承したdataset1(xsdファイルで定義した
名前による)コンポーネントが現れる。フォームのデザイナでこいつをD&Dしてやると型付けの
あるdatasetとして使えるよ。


721 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 02:47:42 ]
表計算ソフトの=REPT(x;y)を模倣した自作関数をfprintfの第3引数以降に使う場合です。
rept(int x,int y)の記述にはfor,while,do〜whileのどれが適任でしょう?
回数を指定するyは0の場合もあります。


722 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 15:04:16 ]
それは本当にC#の質問ですか

723 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 09:11:50 ]
ウィンドウを持ったアプリケーションが起動されるのを
監視することはできますか?

724 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 12:20:47 ]
できます。



725 名前:723 mailto:sage [2008/02/02(土) 13:09:26 ]
>>724
やり方か調べるためのキーワードを教えていただけませんか?

726 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 13:19:43 ]
findwindow

727 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 22:26:37 ]
>712
画像のデコードがそこまで重いことはまずないと思うが、
ファイルアクセスが妙に遅延することはあると思うよ。
ノートンとかウイルスバスターがファイルアクセスに
むやみやたらに割り込むから信じられないくらい応答が返ってこないことがあったり。

728 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 22:51:34 ]
や、それなら普通に事前にMemoryStreamに(非同期で)読んどけば良いじゃん?

729 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 22:59:01 ]
画像がWeb上とかにあって数KBダウンロード毎に描画するんならキャンセルとかあってもいいかもしれんが、
既にハードディスクあるものを表示するだけで、わざわざキャンセルとか普通やらないな

730 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 20:08:01 ]
.NETでATLのCComPtrみたいな
タイプライブラリのないInterfaceを扱う仕組みはあるですか?

731 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 20:26:03 ]
Managed DirectX

732 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 21:38:05 ]
自前でinterface再定義はできる Guid属性とかComImport属性とか使う
IDispatchならType.InvokeMemberでレイトバインディングもできる

733 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:35:42 ]
std::exceptionにUNICODE入れると文字が壊れますか?

734 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:37:43 ]
スレ違い



735 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 00:08:55 ]
すみません、よろしければ
pc11.2ch.net/test/read.cgi/tech/1200911737/182-183
について教えてください。何卒よろしくお願いします。


736 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 00:36:45 ]
その質問には答えるなということか。
了解した。

737 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 11:45:38 ]
IPCをチャンネルに使ったリモーティングを使って、同一PC内でプロセス間通信を
しているのですが、厳密署名したら少し動かなくなりました。

Clinet.exeとServer.exeとRemote.dllの3つのプロジェクトからなるソリューションです。
それぞれのアセンブリに同一のsnkファイルで署名したところ、
Client.exeが、Server.exeからのコールバックのみを受け取れなくなりました。
クライアントからサーバへのメッセージングは今までどおりに出来ています。

こういうモノなのでしょうか?どなたかご存知の方がいらしたら、宜しくお願いします。



738 名前:737 mailto:sage [2008/02/13(水) 13:33:40 ]
IpcChannel channel = new IpcChannel(properties,
 null, new BinaryServerFormatterSinkProvider(properties, null));

クライアントとサービスの両方を、上記の書き方で初期化したら出来ました。

739 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 21:14:32 ]
SqlTransactionのCommit()のタイムアウト時間を変更したいのですが
どこで設定すればいいのでしょうか?
サーバーの負荷がでかいときにCommitのタイムアウト時間だけ短くてタイムアウトしてしまいます。

740 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 09:36:26 ]
start tran somewhere here

SqlCommand cmd = new SqlCommand(mySqlCommand, conn);
cmd.CommandTimeout = 0; // NO TIMEOUT
cmd.ExecuteNonQuery();

commit here



741 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 09:58:26 ]
>740
それで変わるのはExecuteNonQuery()のタイムアウト時間だけで
Commit()のタイムアウト時間は変わらないから困ってるんだよ。

742 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 10:23:36 ]
なるほど。
しかし、"BEGIN TRANSACTION"と"COMMIT"をExecuteNonQueryで実行したら?


743 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 22:05:21 ]
>742
確かにSqlTransactionのCommitもExecuteNonQueryでCOMMIT叩いてるだけにしか見えないのでそれでもいいかなとか思ってました…。
やってみたらそれで問題なく動いてしまったし。
SqlTransactionの存在意義がなくなってしまうけど仕方がないか。

744 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 18:18:25 ]
マクロメディアFlashの
タイムラインみたいなウィンドウ作りたいけど

やっぱり自作しなきゃだめかな
なんか楽そうな方法ありませんか?



745 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 00:20:43 ]
最近どっかで見たな

746 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 13:04:29 ]
NiVEとか?

747 名前:747 mailto:sage [2008/02/29(金) 01:44:05 ]
axWindowsMediaPlayerを使ってオーディオファイルを再生しています。
ListBoxにプレイリストの内容を表示しようと

this.listBox1.SuspendLayout();
for(int i = 0; i < wmp.currentPlaylist.count; i++) {
this.listBox1.Items.Add(wmp.currentPlaylist.get_Item(i));
}

として、ListBoxにプレイリストの内容を表示しました。
更に再生中のMediaを選択状態にしたく、続けて

for(int i = 0; i < this.listBox1.Items.Count; i++) {
if(this.listBox1.Items[i].Equals(wmp.Ctlcontrols.currentItem)) {
this.listBox1.SelectedIndex = i;
}
}
this.listBox1.ResumeLayout();

としました。しかし、再生中のMediaが選択されません。
インターフェース同士の比較が上手くいかないからなのかなと思っています。
上手くいく方法がありましたら教えて下さい。もう3時間位悩んでいます。
よろしくお願いします。

748 名前:747 [2008/02/29(金) 04:47:58 ]
age忘れてました。まだ悩んでます。助けて下さい。orz

749 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 16:00:56 ]
そもそも、PlayList[]の型とcurrentItemの型が違う。

750 名前:747 [2008/02/29(金) 16:37:55 ]
wmp.currentPlaylist.get_Item(i)

wmp.Ctlcontrols.currentItem
もWMPLib.IWMPMediaかと思ったのですが、違うのでしょうか?
for(int i = 0; i < this.listBox1.Items.Count; i++) {
if(((WMPLib.IWMPMedia)(this.listBox1.Items[i])).Equals(wmp.Ctlcontrols.currentItem)) {
this.listBox1.SelectedIndex = i;
}
}
this.listBox1.ResumeLayout();
とキャストしても比較出来てないみたいだし、どうしましょ…orz

751 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 21:39:35 ]
そもそもオブジェクトを比較してどうすんだ
メディアプレイヤーいぢったことないけども、普通に考えて実体はCOMの先だろう
何らかのインスタンスを識別するIDとかがあるだろうからそれで比較汁

752 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 21:49:27 ]
>>751
何らかのインスタンスを識別するID
o...rz

753 名前:747 [2008/02/29(金) 22:35:46 ]
解決しますた。
get_isIdenticalの戻り値と引数を見て、
もしかして…と思って試したら当たりですた。
this.listBox1.SuspendLayout();
for(int i = 0; i < wmp.currentPlaylist.count; i++) {
WMPLib.IWMPMedia media = wmp.currentPlaylist.get_Item(i);
int j = this.listBox1.Items.Add(media);
if(wmp.Ctlcontrols.currentItem.get_isIdentical(media)) {
this.listBox1.SelectedIndex = j;
}
}
this.listBox1.ResumeLayout();

754 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 19:03:45 ]
listViewに大量のデータを設定していると
スクロールした時とか、再描画がとてつもなく重いんです。

プロパティとかで回避方法ってありますか?

また、セル表示で別のコントロールでお勧めのやつってありますか?





755 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 19:22:28 ]
VirtualMode やや面倒だけどな
DataGridView

756 名前:756 mailto:sage [2008/03/06(木) 18:09:14 ]
相談があります。
forums.fanatic.net.nz/index.php?showtopic=11226&st=0&p=81800&
のCのコードを参考にしてC#で同じ事をしようとコードを書きました。

using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace msnTest {
public partial class Form1 :Form {

private const int WM_COPYDATA = 0x004A;

[DllImport("user32.dll")]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

[DllImport("user32.dll")]
private static extern int SendMessage(IntPtr hwnd, int wMsg, IntPtr wParam, ref COPYDATASTRUCT lParam);

[StructLayout(LayoutKind.Sequential)]
private struct COPYDATASTRUCT {
public IntPtr dwData;
public int cbData;
public IntPtr lpData;
}

}

続く

757 名前:756 mailto:sage [2008/03/06(木) 18:13:37 ]

COPYDATASTRUCT sendData = new COPYDATASTRUCT();
sendData.dwData = (IntPtr)0x547;
sendData.lpData = songDataPtr;
sendData.cbData = Marshal.SizeOf(songData);

IntPtr msnHandle = FindWindow("MsnMsgrUIManager", null);
MessageBox.Show(SendMessage(msnHandle, WM_COPYDATA, IntPtr.Zero, ref sendData).ToString());

Marshal.FreeHGlobal(songDataPtr);
}
}
}

758 名前:756 mailto:sage [2008/03/06(木) 18:16:53 ]
あれ、なぜか書けない…。間が飛んでる…

759 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 22:39:53 ]
そのまま放置とはどういう了見だ

760 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 12:40:24 ]
ワロタ

761 名前:756 mailto:sage [2008/03/08(土) 20:39:33 ]
すみません。何か突然書き込めなくなったので…。
解決しました。リンク先のCのソースは送信データが間違っていて、
Cのままコンパイルしても動かないものでした。
正解が
yuuan.net/blog/index.php?itemid=257
にありました。

762 名前:デフォルトの名無しさん [2008/03/10(月) 03:11:16 ]
しつもんです。

Graphics g = pictureBox1.CreateGraphics();
mypen = new Pen(Color.White);
fillbrush = new SolidBrush(Color.Black);


g.FillEllipse(fillbrush, 10, 140, 400, 400);
g.DrawEllipse(mypen, 10, 140, 400, 400);


pictureBox1.BackColor = Color.Red;

とやると、せっかくかいた円が消えてしまうのですが、
どうすれば消えないでかけるのでしょうか?

背景の色の設定と、円を書く順番を変えても意味ありませんでした。


763 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 03:23:50 ]
>Graphics g = pictureBox1.CreateGraphics();
なにこれ

764 名前:デフォルトの名無しさん [2008/03/10(月) 03:27:44 ]
>>763
pictureBox1に円を書きたかったのでこうしたんですけれど、
必要ないんですか?



765 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 03:35:20 ]
コントロールを継承したクラスでOnPaintメソッドをオーバライドする
CreateGraphics()じゃなくてOnPaintに渡されるe.GraphicsのGraphicsで描画する

766 名前:デフォルトの名無しさん [2008/03/10(月) 03:44:49 ]
>>765
???
すいません、もう少し分かりやすく説明してもらえませんか?

767 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 03:53:17 ]
おいおい・・・

768 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 04:18:29 ]
人間やめろ。

769 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 05:14:01 ]
>>766
君にはまだ早い
C#の基礎を理解してから来なさい

770 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 11:55:04 ]
>>768
>>769
「現在のウィンドウのメッセージの存続期間だけ有効です。」
を具体的に説明してくれ。

771 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 12:59:21 ]
おいおい・・・

772 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 13:13:41 ]
人間やめろ。

773 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 14:18:21 ]
>>770
君にはまだ早い
C#の基礎を理解してから来なさい

774 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 14:48:31 ]
ここ、もう相談スレじゃないよな…



775 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 17:23:26 ]
本スレ行けよ

776 名前:無知な人間 mailto:sage [2008/03/10(月) 17:34:46 ]
WinXPのC#.NET2003での質問ですが、
DDLのChangedで動的に選択したインデックスが上手く取得できません
どうしたらよろしいでしょうか?

777 名前:デフォルトの名無しさん [2008/03/10(月) 18:11:18 ]
ファイト

778 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 18:45:10 ]
笑えばいいと思うよ

779 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 14:30:22 ]
何、このスレ

780 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 10:59:40 ]
垂直同期をとるためにVsync待ちをしたいと思い調べたところ

C++では
IDirectDraw::WaitForVerticalBlank
IDirectDraw::GetVerticalBlankStatus
IDirentDraw::GetScanLine
などを使うようなのですが、
これらの機能をC#で使用する方法はあるでしょうか?

また、C#で垂直同期をとる手法として一般的なものがあれば
教えていただけないでしょうか

781 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 12:57:50 ]
Managed DirectX

782 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 21:40:54 ]
ずいぶん懐かしい言葉だなー。
垂直同期待ちって。

783 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 21:42:50 ]
液晶全盛、リフレッシュレートいじり放題のこのご時勢にVSync待ちはないだろ

784 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 21:54:57 ]
へーCRTのリフレッシュレートが「いじり放題」じゃなかったなんて知らなかったよw

むしろ液晶の方がそういう面では不自由なデバイスのはずだと思ってたけど



785 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 22:43:07 ]
液晶のリフレッシュレートが弄りやすいかどうかなんて話してないんだが

786 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 23:26:20 ]
へーじゃあ「どんな話」をするつもりだったのかとっくり語ってもらおうじゃないの。
いやまあできないなら無理すんなよw

787 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 23:51:20 ]
液晶全盛 かつ リフレッシュレートいじり放題という意味で、
液晶全盛 だから リフレッシュレートいじり放題という解釈ではないということだと思う。

788 名前:783 mailto:sage [2008/03/14(金) 00:07:04 ]
おまえら俺の言葉が足りなくて悪かった
言いたい事は>>787さんのいう通りだ

おやすみ

789 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 01:33:35 ]
いや普通はそう解釈するよ
揚げ足を取ろうとするなら別だけど

790 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 04:35:47 ]
>>781
解決しました
有り難うございました

791 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 08:04:13 ]
>>789
君も頭悪いなw
>>788は図らずも自分を擁護できる発言をする奴がいたからそれを利用してるだけ。

そんなことねえだろ、と言いたいのなら、>>783の意図が>>787の通りだとして(それでも全然かまわないが)
「なぜ」「このご時勢にVSync待ちはない」という結論に繋がるのか説明してみな。

792 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 08:10:25 ]
必ずいい方向に脳内補完する人と必ず悪い方向に脳内補完する人が
この世の中にはいるんだな。
なぜ分かれるかというと性格がいいか悪いかなんだな。

793 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 08:37:00 ]
>>788は利用してるのか?


794 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 11:40:10 ]
Vistaは垂直同期取ってるんじゃなかったっけ



795 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 12:21:13 ]
もうそろそろカスはほっとこうぜ

796 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 18:29:31 ]
>>795
Vistaのことをひどく言うのはやめてあげてください。

797 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 18:34:44 ]
Vistaは、悪くない
悪いのは、サンプルプログラムのフォント関連部分と>>791の頭

798 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 18:38:22 ]
まあ>>797がそういう「負け惜しみ」はみっともないと思う程度の恥の意識もない奴だ、
というのはよくわかったよw

799 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 18:39:43 ]
うわ、反応早ww

800 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 18:50:14 ]
反応早かったら何?
っていうか、どうしてこの手の馬鹿ってのは自分の言葉を自分に適用しようとしないのかねw
一言で言えば恥を知らないからだろうけどさ。

そんなことはどうでもいいから>>791に書いた疑問を説明してみてよ早く。

801 名前:783 mailto:sage [2008/03/14(金) 20:59:24 ]
ちょっとおまえら俺の事はもうスルーしてC#の話ししてくださいホントお願いします


802 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 21:22:54 ]
C#の話はC#スレでやりましょう

803 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 11:31:51 ]
テアリング避けでVsync待ちしたいこともあるけど、
漏れのやり方が悪いのかビジーループになるんで非ゲームでは
あんまり使いたくないな・・・

804 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 18:57:26 ]
もうリフレッシュレート論争やめようや



805 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 19:20:24 ]
続けたい奴は続けていいよ
どうせ糞スレだし

806 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 19:26:10 ]
中途半端に機能してるから紛らわしいw

807 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 17:02:16 ]
>>784で書いた自分の勘違いを認めたくないだけだろ
こういうバカは何言っても食いついてくるからほっとけばよろし

808 名前:デフォルトの名無しさん [2008/03/19(水) 17:35:42 ]
ここで質問ですよ
リッチテキストボックスに画像貼り付けたり、背景を自前で描画したりやりたいんですが
WndProcのWM_PAINTを捕らえても文字の上に描画されてしまいます
文字の下に描画できませんか?

809 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 18:48:37 ]
つWPF

810 名前:デフォルトの名無しさん [2008/03/19(水) 19:44:09 ]
>>809製品?

811 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 21:14:14 ]
ググレ押忍

812 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 21:38:24 ]
>>807
それって>>783のことだと思うけどね。
こういうバカ?
それって君とか>>783みたいなバカのこと?w

813 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 21:39:32 ]
>>808
そんなの簡単だろ・・・と思ってやってみると意外とできないねこれ

814 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 11:21:46 ]
Func<T,TResult>に共通化されつつある今、
Converter<T>やPredicate<T>などを使う意味はあるのでしょうか?



815 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 11:22:30 ]
意味を明確にできる

816 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 13:13:34 ]
>>814
前からいちいち定義するのがいやでDelegate<Result,Param1,Param2>とか普通のメソッドの型の順番にあわせて使ってたんだが、
Funcniそのまま使えないんだよなぁ・・・どうしよう

817 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 20:49:21 ]
DataGridViewでNullValueが設定されている列のセルの値を、プログ
ラムでDBNull.Valueに設定したとき、セルにNullValueの値を表示す
るにはどうしたらいいのですか?

MSDNライブラリには、DBNull.Valueを設定するだけではできないと書
いてあるけど...

セルの値がDBNull.Valueで、セルの表示はNullValueの値にする方法
を教えてください。


818 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 21:08:56 ]
変換は行われないってのはDataSourceNullValueがDBNull.Valueで(ryってところの解説だぜ?

819 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 21:43:29 ]
>>818
ありがとうございます。よく読んだらその通りでした。
その列の型はstringで、DataSourceNullValueを設定してないため、MSDNライブラリの
「DataSourceNullValue が DBNull.Value で、セルの ValueType が参照型」に見事に
合致してました。
DataSourceNullValueをstring.Emptyにして試してみます。



820 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 18:48:31 ]
コレクション要素の変更をコレクションのオーナーに通知する方法
はないですか?オーナーをコレクションとしてラッピングするくらいしか
思いつかなくて。

821 名前:デフォルトの名無しさん [2008/03/24(月) 18:55:21 ]
その方法でいいんでない?
何か問題があるのか?

822 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 19:09:34 ]
IBindingListでも実装しとけ

823 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 19:55:39 ]
>>820
そういう用途だとObservableCollection使っておくといいんじゃないかね。
ttp://msdn2.microsoft.com/ja-jp/library/ms668604.aspx

824 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 14:57:38 ]
配列の配列にアクセスする方法について教えていただけないでしょうか?
 int data = new int[5][5];
に数値データが入っているとして、例えば全要素を表示させることを考えます。
その際あえて、ポインタを使ってアクセスすることを考えてます。
(ポインタなんて使わず、添字を使えばいいというのはわかっていますが、 あくまで、勉強のためということで。。。)
ポインタ(*p)を使う方法はわかるのですが(ソースの上半分)、ポインタのポインタ(**p)を使ったやり方が(ソース下半分)がわかりません。
ちなみに具体的にはソース中の<<<<data>>>の部分の書き方がわかりません。
(もしかしたら、ぜんぜん違うのかもしれませんが。。。) わかる方教えていただけないでしょうか?よろしくお願いします。m(_ _)m

        //とりあえず うまくいった ポインタ を使う方法
fixed (int* p = &data[0][0]) {
for (int* px = p; px != p + 5; px++) {
for (int py = *px; py != *px + 5; py++)
Console.Write("<" + (int)&py + "," + py + ">");
Console.WriteLine();
}
}

        //うまくいかない ポインタのポインタ を使う方法
fixed (int** p = <<<<data>>>) {
for (int** px = p; px != p + 5; px++) {
for (int* py = *px; py != *px + 5; py++)
Console.Write("<" + (int)py + "," + *py + ">");
Console.WriteLine();
}
}




825 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 16:01:03 ]
>>824
ポインタなんて使わず、添字を使え
こうですか?


C#でわざわざポインタなんて勉強する価値無し

826 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 16:15:55 ]
int*[] temp = new int*[data.Length];
for (int i = 0; i < temp.Length; i++) {
 temp[i] = (int*)(void*)Marshal.UnsafeAddrOfPinnedArrayElement(data[i], 0);
}
fixed (int** p = temp) { ...
こうじゃね
本気でこんなの書く奴がいたら頭おかしい

827 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 18:05:17 ]
>>824
上も全然ダメ。めちゃくちゃ。
コンパイル通りゃいいってもんじゃないよ・・・

828 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 20:47:06 ]
そこまでやるならC++/CLI使えって話しだな

829 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 23:24:50 ]
MSも unsafe 使えと推奨している。
www.microsoft.com/japan/msdn/columns/csharp/csharp10182001.aspx

830 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 23:36:12 ]
その記事,すごく客観的で秀逸だよな

831 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 23:58:45 ]
この記事には続きがあって、その記事とセットで初めて客観的と言える。
www.microsoft.com/japan/msdn/columns/csharp/csharp11152001.aspx

832 名前:824 mailto:sage [2008/04/02(水) 18:38:08 ]
>>826
具体的なソースをご提示いただき、ありがとうございます。

>>827
上のソースも、ポインタの使い方に間違いがありますか。。。
一応、ほしい結果は得られたので、正しいかと思ったのですが。。。

>>828
もちろん、その通りですが、あくまで勉強ということで。。。。

>>829
この記事読みました。
実際に簡単なループをまわして何パターンかのソースで確認したところ、配列とポインタとでそんなに大きく処理時間がかわらないようです。
(逆にポインタが遅い場合もありました。。。)

ポインタのポインタは関数の文字列型の引数に使う程度で、やっぱりあまり出番がないんでしょうか。。。。


833 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 22:22:26 ]
  |┃三        / ̄\
     |┃         |     |
     |┃          \_/
 ガラッ. |┃            |
     |┃  ノ//   ./ ̄ ̄ ̄ \
     |┃三    /  ::\:::/:::: \   
     |┃     /  <●>::::::<●>  \. 
     |┃     |    (__人__)     |  
     |┃三   \    ` ⌒´    /  
     |┃三   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ \

834 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 11:43:48 ]
C++とC#の違いを教えて下され



835 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 12:00:13 ]
全然違うので説明が逆に難しい。

836 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 12:09:15 ]
JAVAとC#の違いを教えて下され

837 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 12:13:29 ]
中途半端に似てるから鬱陶しい
特にJavaのジェネリックの糞さには発狂しそうになる

838 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 12:15:36 ]
>>836
Sunが作ったのがJava。
Microsoftが作ったのがC#。

839 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 12:46:37 ]
JavaとJ#の違いを教えて

840 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 12:54:39 ]
JavaをWindowsに最適化したのがJ#

841 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 00:05:48 ]
そーいや大学の研究科目でjavaを使ったGUIとかいうのがあったがどうにもなあ
「最終的には1000行を超えるコード〜」とか「毎年大人気の科目」とか意味の分からん宣伝ばっかで萎えた。
そんなん個人でもうやってるって話だし。チームプログラミングとかを前面に押し出してたなら魅力があっただろうに

842 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 00:07:50 ]
学部一回生向けの授業?

843 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 00:21:35 ]
>>841
大学でチームプログラミングなんて教えれる先生がいないって。

844 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 02:23:01 ]
>>842
三回生向けだからあれなわけで
一回生でそこまでやったらそれは別にいいと思うけどね



845 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 12:48:39 ]
大学でチーム開発してもできるやつが全部やっちゃうから意味なし。

>>842
学部一回生でそんな高級なことしたら単位が全然でないじゃないか!
学部一回だとこんなもんだ。
・電源の入れ方、終了のしかた。
・エディタのつかいかた
・ファイル操作のしかた
・ほーむぺーじをつくろう
・一番最後に hello world(全角スペース入れてコンパイル通せないヤツ多発)


846 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 13:05:54 ]
これは酷いww

847 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 13:11:51 ]
>>845
卒論を二人で一つ書く大学もあるらしいからな
ありえる

848 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 19:44:54 ]
一回目のCの授業でHelloWorldコンパイルまで行ったけどwwwwwwww

849 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 20:33:05 ]
どこの底辺専門学校だよ。

850 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 20:43:21 ]
>>847
XP卒論ですか
新しいな

851 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 22:14:42 ]
院なら別に共著って普通じゃねえ?


852 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 00:40:02 ]
>>847
二人で作業したからといって、労力が半分になるわけでもないし、
二人で作業したからといって、二倍の完成度になるわけでもない。

むしろ独りよがりな内容にならなくて良いんじゃないか。まさにXPだな。

853 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 12:19:14 ]
>>851
普通一人一本じゃないか?


854 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 22:42:45 ]
え?



855 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 22:47:26 ]
お菓子を食べながら卒論を書くんですね
わかります

856 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 23:04:21 ]
いいえビールです

857 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 00:27:09 ]
早く終えて生ハムメロンでも食べなはれ

858 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 01:37:06 ]
何だか腹減ってきた

859 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 10:09:29 ]
>>855
シュークリーム分は大事ですよ?

860 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 18:40:17 ]
ArrayListのテンプレート版はないの?

861 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 19:07:11 ]
System.Collections.Generic 名前空間の List<T>

862 名前:デフォルトの名無しさん [2008/04/22(火) 17:02:02 ]
C#のおかげで少しだけC++のテンプレートが解ったような気がした

863 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 17:06:17 ]
>>862
そりゃ気のせいだな、ぶっちゃけ別物できる事の範囲が違いすぎる、つかなんだこのスレ
昔の重複スレの残骸?

864 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 00:30:32 ]
「すこしだけわかったような気がした」って言っただけなのに・・・



865 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 00:33:40 ]
気にスンナ






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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