トップページ⇒tech
1001コメント263KB

C♯, C#相談室 Part37

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2007/01/18(木) 17:55:45
(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。

前スレ
C♯, C#相談室 Part36
http://pc10.2ch.net/test/read.cgi/tech/1165656839/

過去スレは>>2-5あたり。
※スレタイに「#」を入れても消えちゃうので新スレ立てる人は要注意だ。
0153デフォルトの名無しさん2007/01/25(木) 02:39:25
>>152
あり得ない
0154デフォルトの名無しさん2007/01/25(木) 08:06:03
>>152
その通りなんだけど、>>153みたいに誤解してる人間が多いね何故か。
0155デフォルトの名無しさん2007/01/25(木) 09:14:19
>>133
ありがとうございます
参考にしてみます。
0156デフォルトの名無しさん2007/01/25(木) 14:44:44
C#でレイヤードウィンドウ使いたいときはAPIでUpdateLayerdWindowを呼ばないと駄目(´・ω・`)?
0157デフォルトの名無しさん2007/01/25(木) 16:15:05
GetGUIThreadInfoのAPI使ったサンプルってありませんか?
0158デフォルトの名無しさん2007/01/25(木) 17:06:48
>>156
yes

>>157
pinvoke.netでも見てみれば?
0159デフォルトの名無しさん2007/01/25(木) 21:03:14
グラフ理論を確かめたいので、
グラフ表示用のライブラリが欲しいのですが、
有りますでしょうか?
0160デフォルトの名無しさん2007/01/25(木) 23:41:47
ドトネット用のソフトあったけど忘れたw
馬鹿な答えで申し訳ないがどこかにあるよ。
ただしサイトは英文だった。
0161デフォルトの名無しさん2007/01/25(木) 23:47:25
C用のをDllImportするほうが現実的かも
0162デフォルトの名無しさん2007/01/26(金) 00:20:56
graphlayout でぐぐる。java だけど。
0163デフォルトの名無しさん2007/01/26(金) 05:56:35
つ【Graphviz】
0164デフォルトの名無しさん2007/01/26(金) 09:59:23
ぬこでもわかるC#出たけど読んだ人います?
0165デフォルトの名無しさん2007/01/26(金) 10:59:23
ゾウリムシでも分かる言語なので読んでない
0166デフォルトの名無しさん2007/01/26(金) 15:04:32
COMでLPIDISPATCHを受け取る関数があって
.NETのラッパーだとobject型で受け取るんです。
で実際に入ってるのはSystem._ComObjectなんですけど
このSystem._ComObjectを元のインターフェイス(のラッパー型)に変換するにはどうすればいいんでしょうか?
0167デフォルトの名無しさん2007/01/26(金) 15:56:40
インポータ使うか手動で必要なインターフェイス定義してキャスト。
あるいはリフレクションでも出来たかもしれない。
0168デフォルトの名無しさん2007/01/26(金) 18:47:23
>>164
本出たのか
猫のサイトを覗いてみたけど,CやC++を知ってる人向きな感じがした
0169デフォルトの名無しさん2007/01/29(月) 09:29:05
質問です。
timerなどのようなコントロールを作成することは出来るのでしょうか?
又、そういったソースなどはMSDNなどのサイトに置いてあるんでしょうか?
もしあるのでしたら、urlやググるキーワードなど教えていただけたら有り難いです。
0170デフォルトの名無しさん2007/01/29(月) 11:55:45
>>169
できる。というかSystem.Windows.Forms.Timerとか揃ってる。
サンプルソースくらいどこかにころがってるでしょ
とりあえずVC#Expressインストールして付属のMSDN読むのがお勧め
0171デフォルトの名無しさん2007/01/29(月) 12:04:55
http://www.koders.com/csharp/fidC6DDFAA5D78849154F79C51CAA282B0D60D61DD3.aspx
0172デフォルトの名無しさん2007/01/29(月) 18:36:43
ビジュアルを持たないコンポーネントを作りたいのか?
0173デフォルトの名無しさん2007/01/29(月) 19:01:49
ぬこならわかるC#
0174デフォルトの名無しさん2007/01/29(月) 19:11:42
いろいろ調べてみたのですが、わからないので教えてください。

現在作りたいもの
 Windows Media Encoder SDKを使ってAVIをWMVにエンコードするC#コンソールプログラム

やろうとしていること
 エンコード処理の終了イベントを取得してプログラムを終了させる。

困っていること
 Visual C# Express Edition上でデバッグ実行をすると正常にイベント処理されるが、
 CTRL+F5で実行すると、終了処理イベントを取得できない。このとき、開始イベントは
 取得できている。もちろん、コマンドラインからExe叩いても同じ。

行っていること
 このサイトにあるサンプルを単純にコピペして使ってます。
 ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmencode/htm/capturingeventscsh.asp
 唯一違うのは、エンコードしているファイルに音声がないので、SrcAudの処理部分はコメントアウトしています。

デバッグ実行ではイベントの割り込みがデバッガによって頻繁に行われると理解していて、そのため、イベントキュー内の
イベントが正常に処理されるのでは?と思ったのですが…。

何かヒントでもわかればと思っています。お願いします。


0175デフォルトの名無しさん2007/01/29(月) 19:34:38
2つ同時にエンコードとかしてないか?
あと途中でオブジェクトの寿命終わったりしてないか?
0176デフォルトの名無しさん2007/01/29(月) 20:00:55
別IDですが、174です。

>>175

えっと、二つ同時にとかはしていません。
ただ、途中でオブジェクトの寿命が終わってるのは可能性ありそうです。
が、オブジェクトの寿命ってどうやって延命するんでしょうか。。。?

調べてみます。
0177デフォルトの名無しさん2007/01/29(月) 20:01:34
ビルドは確実にできてる?
0178デフォルトの名無しさん2007/01/29(月) 20:08:27
>>177

はい。ビルドはできてます。
Exeも更新されています。
0179デフォルトの名無しさん2007/01/29(月) 20:12:44
「終了処理イベントを取得できない」てどういう意味?
いつまでも終了しないの?
0180デフォルトの名無しさん2007/01/29(月) 20:14:59
>>179

はい。そうです。
イベントごとに何かメッセージを出力させるようにして確かめたのですが、
Debug時には最後まで表示されるのですが、通常実行時には、いつまでたっても、
Whileループの中を回っていました。。。
0181デフォルトの名無しさん2007/01/29(月) 20:22:32
  _   ∩
( ゚∀゚)彡 おっぱい!Volatile!
 ⊂彡

0182デフォルトの名無しさん2007/01/29(月) 20:38:16
VistaにVSインストールしたら報告してね!
01831692007/01/29(月) 20:54:42
>>170,172
スミマセン、timerのようなという表現は適切じゃなかったですね。
>>172さんの仰る通り、ビジュアルを持たないコントロールを作りたい、ということです。
例えば、サーバから定期的なメッセージをクライアントに送るようなアプリケーションがあったとして、
そのメッセージをイベントとして受け取れるようなアプリケーションが作れないか、と考えています。
こちらはまだC♯を触り始めたばかりで、これはあくまで習作なのですが。
0184デフォルトの名無しさん2007/01/29(月) 21:23:54
>>182
起動するたびに Run as Administrator してねって言われるよ
0185デフォルトの名無しさん2007/01/29(月) 21:24:19
ほんとかよ。
0186デフォルトの名無しさん2007/01/29(月) 21:25:55
たしか、for Vistaっていうバイナリ出てなかったっけか?
0187デフォルトの名無しさん2007/01/29(月) 22:09:55
列挙型
enum A : int
{
 a
}
でint b = (int)aと
aにキャストがいるのは何でなの
intだっつってるのに
0188デフォルトの名無しさん2007/01/29(月) 22:10:41
あ、int b = (int)A.a
ですね
0189デフォルトの名無しさん2007/01/29(月) 22:14:39
A.a は A 型であって int とは相互変換できるってだけだから
0190デフォルトの名無しさん2007/01/29(月) 22:27:04
なるほどダウンキャストがいるってことですね
トンクスです
0191デフォルトの名無しさん2007/01/29(月) 22:27:44
>>183
System.Window.Forms.Timer じゃないTimerがあるよ。
でも、その用途にTimerはオススメしないけど。
0192デフォルトの名無しさん2007/01/29(月) 22:31:45
だからTimerじゃないと(ry
0193デフォルトの名無しさん2007/01/29(月) 22:32:43
>>190
クラスツリーとしてはAはEnumの子で、EnumとInt32は兄弟だから、ダウンキャストとは言わんな
01941922007/01/29(月) 22:33:28
なんだよ…orz
0195デフォルトの名無しさん2007/01/29(月) 23:51:21
>>181

ありがとうございます。
意味を理解しました。
で、解決しました。

ん〜、確かに…言われてみれば納得です。

マルチスレッドなプログラムや組み込み系のプログラムはあまりやったことが
なかったもので(←言い訳です)、今回は非常に勉強になりました。

0196デフォルトの名無しさん2007/01/30(火) 16:41:48
「コンテキストメニューをあるタイミングで表示→項目をユーザが選択」
という事はどうすればよいのでしょうか。

通常、ユーザが右クリックしてコンテキストメニューを開きますが
ここはプログラム側でコンテキストメニューを表示し、ユーザに選択を
促そうと思っています。

this.ContextMenuStrip.Show();
とやると、一瞬コンテキストメニューが表示されますが、次の処理へ
進んでしまい、ユーザが選択をする事が出来ません。
0197デフォルトの名無しさん2007/01/30(火) 17:16:38
次の処理へ進む?もしかしてアクティブ状態じゃないんじゃない?
0198デフォルトの名無しさん2007/01/30(火) 17:18:34
そうでもないな、ユーザーがマウスで何かしてる、とか?
0199デフォルトの名無しさん2007/01/30(火) 17:29:07
ContextMenuStripはWindowだから
Showしたあとにどこかのコントロールに
フォーカス合わせちゃってるんじゃないのか
0200デフォルトの名無しさん2007/01/30(火) 17:30:03
ContextMenuStrip -> ContextMenu
0201デフォルトの名無しさん2007/01/30(火) 18:13:54
>>190
enum A : intは継承とは違うぞ
形式が似てるだけ
0202デフォルトの名無しさん2007/01/30(火) 19:18:03
>>197>>198>>199
そんな高度な話ではなく、this.ContextMenuStrip.Show();
の次の行に制御がいってしまいました、という話だと思う。
イベントドリブンが解ってないという話。

>>196
コンテキストメニューを Show() したら、選択なりキャンセルなりされて
イベントが来るまで何もしないようにプログラムを作ればOK。
0203デフォルトの名無しさん2007/01/30(火) 19:26:46
ContextMenu は自分でトラッキングするけどContextMenuStripはしないという話か・・・
0204デフォルトの名無しさん2007/01/30(火) 21:43:21
>>196
普通はコンテキストメニューのShow()で右クリックのイベントはおしまい。
で、コンテキストメニューアイテムのクリックイベントに処理を書く。
その間、他の処理は何も出来ないようにするのはどうかと思う。
メニューアイテムに「キャンセル」作るなんで考えない方がいいよ。

Explorerでファイルやフォルダを右クリックして試してみ。
0205デフォルトの名無しさん2007/01/31(水) 09:38:32
ContextMenuStripはいろいろ困るんだよなぁ。AppBarでうまく表示できないとか。
0206デフォルトの名無しさん2007/01/31(水) 15:52:04
FormからFormをつくってTopmostで表示したらそっちにフォーカスが逝っちゃうんですが逝かないようにするにはどしたらいいでしょう?(´・ω・`)
0207デフォルトの名無しさん2007/01/31(水) 16:40:03
2.0ならやっとというかShowWithoutActivationプロパティが付いたので
これをオーバーライド。
じゃないならSetVisibleCoreのbase呼ぶ前あたりにShowWindowで
アクティブにせずに表示。
02082062007/01/31(水) 16:47:03
ShowWithoutActivationは実装し呼ばれることも確認したんですが、trueかえしてもフォーカスロスとしてるっぽいです...
ShowWindowあたり見てみます。
02092062007/01/31(水) 16:54:55
フォームを表示して、新しく表示されるフォームがactivateされず、元のフォームがフォーカスをロストすることはありえる?
0210デフォルトの名無しさん2007/01/31(水) 16:59:58
実際にそうなってるんならありえるんだろが
0211デフォルトの名無しさん2007/01/31(水) 17:11:53
>>209
現象を確認した。TopMostを指定するとShowWithoutActivation無視される。
一応MSにフィードバックしといてや。by Designか直さんやろうけど。

基本的なやりかたは以下のように。

[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
const int SW_SHOWNOACTIVATE = 4;
protected override void SetVisibleCore(bool value) {
 if(this.ShowWithoutActivation && this.TopMost && !this.Visible && value) {
  ShowWindow(this.Handle, SW_SHOWNOACTIVATE);
 }
 base.SetVisibleCore(value);
}

書き捨てなのでもうちょいほかのプロパティとの整合性あわせて。
0212デフォルトの名無しさん2007/01/31(水) 17:16:50
>>204
だがエクスプローラの右ドラッグには「キャンセル」がありまする。
これきっと、メニューの外側を適当にクリックしてメニューを消すと
ファイルの選択が解除されるからだな。
02132112007/01/31(水) 17:16:53
と思ったらなおらねぇ。
…あれだ、ひょっとしたらTopMost指定するとアクティブになる仕様かも…
0214デフォルトの名無しさん2007/01/31(水) 17:37:33
TopMostはSetWindowPosをSWP_NOACTIVATEなしで使ってた希ガス
だからTopMostもSetWindowPosでやるしかないんじゃないかね
0215デフォルトの名無しさん2007/01/31(水) 17:41:26
>>212
ドラッグ後に出るメニューはドラッグというアクションへの操作だろ。
右クリックはまだアクションを指定していないからキャンセルはおかしい。
0216デフォルトの名無しさん2007/01/31(水) 17:47:18
>>214
ごにょごにょして眺めてみた。っぽいなぁ。
0217デフォルトの名無しさん2007/01/31(水) 18:50:13
TopMostのままでShowWindow(SW_SHOWNOACTIVE)でよりあえずフォーカス動かなくなったようです(´・ω・`)
なんか汚いコードになってますがとりあえずはしのげそうです。

ただ今度はFormオブジェクトを作ってから初めてhandleから見そうなメソッド呼び出しでWM_CREATEがとんできてそのときにLocationがいじられるという現象が出てるがなぁ・・・orz
0218デフォルトの名無しさん2007/01/31(水) 20:00:31
VB的な解法であれだけど、コンストラクタでActiveForm取得しといて
OnShownでそいつにFocusしてやれば、実際の動作はともかく見た目的には
目的を達成できるよ。
0219デフォルトの名無しさん2007/02/01(木) 12:12:35
>>218
そうすると元もフォームのフォーカスが一度外れることになるので問題出ることがある。
0220デフォルトの名無しさん2007/02/01(木) 12:43:10
やれやれ読解力がない人って困るな。。
0221デフォルトの名無しさん2007/02/01(木) 22:13:53
こんばんわ。初書き込みです。
C#を最近、始めたばかりでド素人なのですが、
質問に答えてもらえるのでしょうか??
0222デフォルトの名無しさん2007/02/01(木) 22:15:00
前置きはいいので質問をどうぞ
0223デフォルトの名無しさん2007/02/01(木) 22:16:08
>>221
質問はこちらへどうぞ
http://pc10.2ch.net/test/read.cgi/tech/1168271508/l50
0224デフォルトの名無しさん2007/02/01(木) 22:19:33
ここも質問スレだろ
でも始めたばかりなら>>223
0225デフォルトの名無しさん2007/02/01(木) 22:23:38
C# 3.0って、VisualC#2005で使えるの?
0226デフォルトの名無しさん2007/02/01(木) 22:24:50
なぜググらないんですか?
0227デフォルトの名無しさん2007/02/01(木) 22:26:05
>>225
Visual Studio 2007(仮称)までお待ちください
0228デフォルトの名無しさん2007/02/01(木) 22:37:20
>>227
現状はコマンドラインのコンパイラも無いの?
0229デフォルトの名無しさん2007/02/01(木) 22:51:47
なぜ吊らないの?
0230デフォルトの名無しさん2007/02/01(木) 22:54:06
嘘つくんじゃねえよ

http://ja.wikipedia.org/wiki/Microsoft_Visual_Studio

>NET Framework 3.0に対応させるための Visual Studio 2005 extensions for .NET
>Framework 3.0 (WCF & WPF), November 2006 CTPとVisual Studio 2005 extensions
>for .NET Framework 3.0 (Windows Workflow Foundation)が現在、配布されている。
0231デフォルトの名無しさん2007/02/01(木) 23:03:25
クマー
0232デフォルトの名無しさん2007/02/01(木) 23:19:24
Visual Studio 2005 extensions for .NET Framework 3.0で、C#3.0使えるようになるの?
0233デフォルトの名無しさん2007/02/01(木) 23:30:28
C#と.NET Frameworkのバージョンは別物
0234デフォルトの名無しさん2007/02/01(木) 23:35:00
だから、C#3.0が、たまたまバージョン番号が同じ3.0であるだけの
Visual Studio 2005 extensions for .NET Framework 3.0
で使えるのかどうかを聞いている。
0235デフォルトの名無しさん2007/02/01(木) 23:42:29
ttp://msdn2.microsoft.com/en-us/netframework/aa904594.aspx
0236デフォルトの名無しさん2007/02/01(木) 23:48:38
ttp://www.microsoft.com/downloads/details.aspx?familyid=1e902c21-340c-4d13-9f04-70eb5e3dceea&displaylang=en
0237デフォルトの名無しさん2007/02/01(木) 23:56:36
で、結局Visual Studio 2005 extensions でC#3.0は使えるの?
0238デフォルトの名無しさん2007/02/01(木) 23:59:51
こたえはNOだグリフ
0239デフォルトの名無しさん2007/02/02(金) 00:00:01
むりだろw
0240デフォルトの名無しさん2007/02/02(金) 00:00:40
ラクダ式とかの奴じゃないの?
0241デフォルトの名無しさん2007/02/02(金) 00:03:04
今はまだ、C#3.0の処理系は存在しないってことでおk?
0242デフォルトの名無しさん2007/02/02(金) 00:05:21
C OMEGAとかLINQならあるよ。
0243デフォルトの名無しさん2007/02/02(金) 00:07:48
C OMEGAとかLINQって、C#3.0の処理系なの?
0244デフォルトの名無しさん2007/02/02(金) 00:15:28
プレビュー版のC#3.0コンパイラなら出回ってるな。
仕様どおりコンパイルできない場合があるみたいだけど

>>234
C#3.0やLINQは.NET Framework 3.5の機能
0245デフォルトの名無しさん2007/02/02(金) 00:18:41
ttp://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1103160&SiteID=1
0246デフォルトの名無しさん2007/02/02(金) 00:19:47
.NET Framework 3.5って、プログラミング言語(C#3.0)の処理系を含むの?
0247デフォルトの名無しさん2007/02/02(金) 00:23:01
ttp://www.microsoft.com/downloads/details.aspx?FamilyID=1ff0b35d-0c4a-40b4-915a-5331e11c39e6&DisplayLang=en
0248デフォルトの名無しさん2007/02/02(金) 00:24:09
で、結局、今はまだ、C#3.0の処理系は存在しないってことでおk?
0249デフォルトの名無しさん2007/02/02(金) 00:25:27
何故読まない。
0250デフォルトの名無しさん2007/02/02(金) 00:26:28
自分で調べようともしないお前には存在してても使いこなせないから気にすんな
0251デフォルトの名無しさん2007/02/02(金) 00:26:54
結論

今はまだ、C#3.0の処理系は存在しない
0252デフォルトの名無しさん2007/02/02(金) 00:29:21
それでいいよ。
カエレ
■ このスレッドは過去ログ倉庫に格納されています