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

VC♯.NET統合スレッド

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
VC♯だけのスレッドです
VB、JAVA厨は要りませんのでご了承
0237デフォルトの名無しさんNGNG
どう見ても夏房でしょう
0238デフォルトの名無しさんNGNG
>>232
非マネージド型(or 非マネージド型メンバからなるstruct)で、
単一のスコープの寿命で事足りるなら、stackalloc しとけばGC
動かさないですみますけど。

struct aaa
{
 public int aa;
 public int bb;
 public int sum() { return aa+bb;}
}

unsafe void test()
{
 aaa* fib = stackalloc aaa[100];
 int sum1 = fib[1].sum();
}
0239デフォルトの名無しさんNGNG
質問です。
listViewのアイテム欄に表示しきれない文字列を複数行に分けて表示したいのですが、
どうしたらいいのでしょうか?
0240デフォルトの名無しさんNGNG
ListViewのDetailモードのことかな?
それだったら改行はできなかったと思うんだけど。
0241デフォルトの名無しさんNGNG
>>240
そうです、Detailsです。
Detailsでは改行はできないのですか。。。
レスサンクスです。
0242デフォルトの名無しさんNGNG
まぁ、確かに改行したい時はあるな。
0243デフォルトの名無しさんNGNG
VC++netで
checklistboxを使いたいんですけどツールボックスの中にはありませんよね
これをデザインで視覚的に操作しながら編集するには?
0244デフォルトの名無しさんNGNG
>>243
スレタイ見て書き込めよヴォケが。
それとも誤爆?
0245デフォルトの名無しさんNGNG
>>236
。・゚・(ノД`) ∩ヘーヘーヘー
0246デフォルトの名無しさんNGNG
VC#でDDEクライアントを作りたいのですが、どのように作ればよいでしょうか。
いろいろ検索したのですが見つかりませんでした。

誰かご教授ください(ノД`)
0247デフォルトの名無しさんNGNG
>>246
こんなん見つけた。
当たり前といえば当たり前だけど、Win32使っとる。

ttp://www.debreuil.com/dotnet/DDE/
0248246NGNG
>>247
レスありがとうございます。

VB6からの移行で右も左も分からずやっています・・・
ソースを見るとなんとなく分かりそうです。
神様ありがとう(゚∀゚)
0249デフォルトの名無しさんNGNG
ageてしまった・・・鬱

ゴメソ(ノД`)
0250241NGNG
またまた聞いてもいいですか?
listViewのDetailsモードのようなビジュアルで
改行しても違和感ないようなフォームって
どれを使えばいいと思いますか?
0251デフォルトの名無しさんNGNG
pictuerBoxに貼り付けた画像に対して矩形を
描画する方法を教えてくだされ(ドラッグしながら
マウスを動かすと矩形が大きくなるやつ)。
また、確定した矩形を消去する方法も。
0252デフォルトの名無しさんNGNG
反転モードで矩形書く。
.NETではよくしらん
0253デフォルトの名無しさんNGNG
//Graphicsオブジェクトの作成
Graphics g = PictureBox1.CreateGraphics();
//Penオブジェクトの作成
Pen pen = new Pen(Color.Black, 1);
blackPen.DashStyle = DashStyle.Dot
//(10,20,100,80)の長方形を描く
g.DrawRectangle(pen, 10, 20, 100, 80);
//リソースを開放する
pen.Dispose();
g.Dispose();

これで四角形が書ける。
消し方は知らん。
0254デフォルトの名無しさんNGNG
メモリーイメージに頼っちゃダメだよ
メモリーイメージに頼る方法だとXORで描画という方法だ
XORで四角を書いて描き、もう一度同じ四角を書いて消す
これが基本
マウスの移動イベントに合わせてこれを行うわけだけど
マウスの他のイベントもきっちり制御しないとゴミが残るよ

それやるよりは描画データを持ってた方が10000倍楽だよ
移動や拡大縮小実装するのも簡単だし、、
描画データを持ってれば何でも可能
0255デフォルトの名無しさんNGNG
DataGridってフォーカスが当たってるところ意外って一行目しか見えないの?
0256デフォルトの名無しさんNGNG
>>254
描画データを持っとくというのはメモリイメージって言葉に
当てはまるような気がしないでもないんだが。
むしろ描画状態に頼っちゃダメってほうがしっくり…
0257デフォルトの名無しさんNGNG
.NETって、XOR描画するのにはRegion.Xor()を使うしかないんだね。

ちなみにXOR(排他的論理和)演算を知らない人のための紹介
描画対象の色ビットが1100で、描画する線の色が1010の時、
XORだと、実際に描画使われる色は1001となる。
つまり、両方のビットが一致しないと真にならない。
したがって、どんな色で書かれていても、必ず線が見える。
普通に書くと、青い画像に青で線を書いたら見えないが、
XOR描画なら必ずみえる。

1100
1010
--------------
1001

これのもうひとつのメリットは、もう一度同じ色で線を書くと
ビット状態が元に戻るということだ。
つまり、描画した線が消える。

1001
1010
--------------
1100
0258デフォルトの名無しさんNGNG
排他的論理和だから0110だね
0259デフォルトの名無しさんNGNG
1100
1010
--------------
0110

1001
1010
--------------
0011
0260デフォルトの名無しさんNGNG
2つめの例の意味がなくなってるということに気づいていないかな…
0261デフォルトの名無しさんNGNG
つかXOR描画で色ってあったっけ
0262デフォルトの名無しさんNGNG
>>250
ListViewItemを継承してどうにかこうにかすれば
改行できるアイテム作れるかも…と思ってやってみたけどダメぽ。

でもまぁ、どうしてもというのなら、
上みたに楽して作ろうと思わなければ、出来るには出来るよ。

Controlを継承してチマチマとコンポーネント開発でGo。
0263デフォルトの名無しさんNGNG
色ってなんだ色って…
単なるビット列として見ての話なんだから、色があるもないも関係なし。
0264デフォルトの名無しさんNGNG
色情報のビットの話なんだからいいんじゃねーの?
0265デフォルトの名無しさんNGNG
あ、うーん、「色の話自体」はいいんだけど、
>つかXOR描画で色ってあったっけ
って表現がなんかずれてるような気がしたもんで…
0266デフォルトの名無しさんNGNG
初歩的な質問で申し訳ないですが、
javaやc++のvectorのような、可変長の配列を使用するには
どうすればいいのでしょうか?
ご教授お願いします(;´д⊂
0267デフォルトの名無しさんNGNG
>>266
なにが死体のかを言ったほうがよさげ
0268デフォルトの名無しさんNGNG
>>266
1.1 System.Collections.ArrayList
2.0 System.Collections.Generic.List<T>
0269266NGNG
>>267
某書籍(c++&java)を参考にリバーシを開発しようとしてまして。
石の変更点を記録するために可変長の配列を用いてみようとしております。
>>268
ありがとうございます。
ヘルプなど見て試してみたいと思います。
0270デフォルトの名無しさんNGNG
RSACryptoServiceProvider使って、
秘密鍵で暗号化して公開鍵で複合化するのは無理ですか?
0271デフォルトの名無しさんNGNG
復号
0272デフォルトの名無しさんNGNG
>>271 間違った。スマソ
0273デフォルトの名無しさんNGNG
>>266
System.Collections.ArrayListを使え

//エナメレータアクセス
IEnumerator en = anArrayList.GetEnumerator();
while (en.MoveNext())
{
Foo foo = (Foo)en.Current;
...
}
//インデクスアクセス
for (int i = 0; i < anArrayList.Count; i++)
[
Foo foo = (Foo)anArrayList[i];
...
}

//要素の更新方法
anArrayList.Add(foo); //追加
anArrayList.Remove(foo); //削除
anArrayList.RemoveAt(10); //インデクスによる削除
anArrayList.Insert(3, foo); //インデクスによる挿入
anArrayList[10] = foo; //更新
anArrayList.Clear(); //要素のクリアー

0274デフォルトの名無しさんNGNG
>>270
無理
0275デフォルトの名無しさんNGNG
>>274 (ノД`) サンクス
0276デフォルトの名無しさんNGNG
後悔鍵暗号ないのか...
0277デフォルトの名無しさんNGNG
>>276は意味を勘違いしてると思われ
0278デフォルトの名無しさんNGNG
あるプロジェクトの *cs ファイルを他のプロジェクトと共有して、
一方のプロジェクトで変更されたらもう一方でも反映されるようにしたいのですが、
「プロジェクト」−「既存項目の追加」で追加するとコピーが作成されてしまいます。

うまく共有するにはどうすればいいのでしょうか?
0279デフォルトの名無しさんNGNG
>278
DLLにしたほうがいいと思います.
0280デフォルトの名無しさんNGNG
サーバ側ではBeginWriteを、
クライアント側ではBeginRead使って
通信を行おうと思っているのですが、
BeginWriteとBeginReadは常に1対1で対応しますか?
0281デフォルトの名無しさんNGNG
>>280
TCP の場合、しません。何をどうやってもできませんので、
相互に送出単位を認識できるようにちゃんとプロトコルを設計しましょう
(改行で区切るとか、バイト数を先に送るとか)。
0282デフォルトの名無しさんNGNG
>>281
ありがとうございました。
UDPなら対応するのですか?関数名は変わりますが。
0283デフォルトの名無しさんNGNG
>>282
UDP はメッセージ型なので、
メッセージが分断されたり連結されたりすることはありませんが、
ルータやファイアウォールを(双方向には)通過できないとか、
パケット(メッセージ)が失われたり、
順序が変わっても文句を言えないという低レベルな仕様になってますけど、
その辺大丈夫ですか?
0284デフォルトの名無しさんNGNG
>>283
メッセージの順番はどうでもいいのですが、
失われるのは困るのでやめておきます。
ありがとうございました。
0285デフォルトの名無しさんNGNG
元となるクラスの型のオブジェクトからは呼び出せるが、継承したクラスの型のオブジェクトからは
呼び出せない関数を作りたいのですが、どうすればいいでしょうか?

例えば public class Hoge と、それを継承した public class HogeHoge : Hoge があり、
Hoge には AAA() が実装されているとすると、

Hoge hoge = new Hoge();
HogeHoge hogehoge = new HogeHoge();

hoge.AAA(); // OK
hogehoge.AAA(); // エラー

といった感じにしたいです。
0286デフォルトの名無しさんNGNG
ブラウザに.NET Passportのログイン機能を持たせたいんだが、
検索しても、asp.netの情報しか見つからない。
何か知っていることがあったら教えてくれ
0287デフォルトの名無しさんNGNG
>>285
どうしてそんな腐った設計にしたいの?
0288デフォルトの名無しさんNGNG
>>285
最初に自分自身のクラス名を判定すればいいじゃん
0289デフォルトの名無しさんNGNG
>>288
コンパイル時に撥ねたいんじゃないか?
0290373NGNG
メンバメソッドにしなきゃいいじゃん.
インターナルクラスにしてpraivateで定義
0291デフォルトの名無しさんNGNG
privateで同名のメソッドを定義する。
シグニチャが同じだったらnewとかいったかな。
ちがったらoverloadとかいったかな。
0292デフォルトの名無しさんNGNG
VC#2002において、System.Windows.Forms.Menuを継承したクラスを
プロパティエディタ上でSystem.Windows.Forms.FormのMenuプロパティのリストに表示させる
こんなことは出来ますでしょうか?
0293デフォルトの名無しさんNGNG
System.Nullable<T>
T?
t??
0294デフォルトの名無しさんNGNG
Windows.Formにプロパティを加えたんだけど、
デザイナのプロパティウィンドウには表示されませんね。

基底クラス(Windows.Form)に加えたプロパティは
派生クラス(Windows.Form)のデザイナに反映される
みたいだけど、自分自身ならなぜだめなのかなぁ。
0295デフォルトの名無しさんNGNG
VS2003.NETを使っています。
C#でDLLを作ろうと思うのですが、
新規プロジェクト作成を選んだ後、テンプレートから
どれを選択すればよいのでしょうか?

拡張ストアドプロシージャDLLというのがありますが
これで大丈夫ですか?
他の言語からも呼び出すことができるのでしょうか・・・?
よろしくお願いいたします。
0296デフォルトの名無しさんNGNG
拡張ストアドプロシージャDLLはVisualC++のテンプレートでした・・・
C#ではDLLは作れないのでしょうか・・・
0297デフォルトの名無しさんNGNG
クラスライブラリでは駄目なの?
0298デフォルトの名無しさんNGNG
>>297
できればDLLがいいんです。
ネイティブコードからダイレクトに呼ばれることもあるので・・・
0299デフォルトの名無しさんNGNG
作成するプロジェクトを選択する画面でクラスライブラリを選択して
ビルドすれば、DLLが吐き出されるよ。
0300デフォルトの名無しさんNGNG
>>299
本当ですか?
ありがとうございます。
他の言語からも呼び出せますよね?
0301デフォルトの名無しさんNGNG
呼び出せると思うけど、当然.NET Frameworkは必須
0302デフォルトの名無しさんNGNG
長い処理をするとフォームが固まってしまうので
フォームを再描画したいと思い、
this.Invalidate()やthis.Update()を試したのですが
結局「応答なし」となってしまいだめでした。
(応答なしでも実際は動いています)

せっかくプログレスバーをつけてもこれでは意味がないので、
よい方法が有りましたら教えてください。よろしくお願いします。
0303デフォルトの名無しさんNGNG
>>302
その長い処理を別スレッドでやれば?
0304デフォルトの名無しさんNGNG
>302
.NET解説書にはWindowsメッセージの話し載ってないのか?
1.マルチスレッド
2.処理中メッセージ処理
3.処理中強制的にウィンドウ描画

楽なのは2.場合によっては1
0305デフォルトの名無しさんNGNG
>>303-304
ありがとうございます。やってみます!
0306デフォルトの名無しさんNGNG
クラスライブラリ中に埋め込まれた画像を、クラスライブラリ中のメソッドから取得しようとしてるのですが上手くいきません

プロジェクト名「ClassLibrary」に埋め込みリソースとして「BackGround.bmp」を追加した状態で

System.Reflection.Assembly assm = System.Reflection.Assembly.Load(this.GetType().Assembly.GetName());
System.IO.Stream stream = assm.GetManifestResourceStream("ClassLibrary.BackGround.bmp");
Bitmap bmp = new Bitmap(stream);

とやろうにもstreamがnullと返ってきます。どこが駄目なのかイマイチわからないのでご教授願えませんか?
0307デフォルトの名無しさんNGNG
カレントディレクトリがずれてるんでは?
0308デフォルトの名無しさんNGNG
すまん勘違い
0309デフォルトの名無しさんNGNG
どうでもいいが、
>System.Reflection.Assembly.Load(this.GetType().Assembly.GetName())
はないだろ。
0310デフォルトの名無しさんNGNG
>>306
漏れのコード見るとこんな感じ。
System.Reflection.Assembly myAssembly = System.Reflection.Assembly.GetExecutingAssembly();
img = new Bitmap( myAssembly.GetManifestResourceStream(url) );
0311デフォルトの名無しさんNGNG
なーんか、リソース名が間違ってるとかそんなんじゃない?
0312306NGNG
>310
Windowsアプリケーションだとそのコードで埋め込みイメージを取得できました
が、クラスライブラリで同じコードを記述してもエラーが返ってくるんです
0313デフォルトの名無しさんNGNG
ほんとにリソースの含まれてるクラスライブラリと、
問題のコードは同じアセンブリ(クラスライブラリ)?
0314306NGNG
解決しました

GetManifestResourceStream("ClassLibrary.BackGround.bmp");
の「ClassLibrary」をプロジェクトの「アセンブリ名」ではなく「規定の名前空間」にしたら
きちんと取得できました。
アセンブリ名と名前空間名を違うものにしていたのが原因なのですかね

皆様サンクスです
0315デフォルトの名無しさんNGNG
http://www.syncfusion.com/Products/tools.aspx
こういうコンポーネントってソースコードを組み込んだほうがいいのか
DLLをEXEと一緒に配るのとどっちがいいの?
後者だと、勝手に使われそうな悪寒もするんだが・・・
0316デフォルトの名無しさんNGNG
いやそもそもきちんとリソース名を指定したらいいだけの話で。
アセンブリと名前空間というものを正しく理解する事ね。
0317デフォルトの名無しさんNGNG
>>314
既定の名前空間にしたらきちんと取得できたといってる時点で
まだちゃんと理解できてないな。
アセンブリ名と名前空間を違う物にしていたのが原因て…

確かにそういえないことはないが、問題の本質は
名前空間名を指定しなければならないところで違う物を指定していたということだ。
0318デフォルトの名無しさんNGNG
EXEでも勝手に使われるが?ってのは置いといて…
まあ普通はDLLにしとくような気がするけど、別にそうしなければならない理由はないかな。
開発時の管理面等考えると、ライブラリにする方がいいとは思う。
0319デフォルトの名無しさんNGNG
C++で書かれたDLLを、C#から呼び出したいのですが、
C++のstd::string と、 C#のSystem.Stringの互換性がなくて
うまく呼び出せません・・・
関数は下記のようになっています。
int foo(int, string, string);
また、もう一つこのようなものも用意されています。
int foo2(int, char*, char*);

これをC#から呼び出す方法はあるでしょうか?
どちらも機能は同じなのですが、
System.String.ToCharArray()を使ってもchar*にならないし
手が出ません・・・
良い知恵がありましたら教えて頂けると助かります。
よろしくお願いします。
0320デフォルトの名無しさんNGNG
Managedで皮かぶせれば?
0321デフォルトの名無しさんNGNG
https://s.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/cpcondefaultmarshalingforstrings.asp
0322デフォルトの名無しさんNGNG
>>320
包茎は嫌づら
0323デフォルトの名無しさんNGNG
C#&VC#.NETをある程度マスターするのってどれぐらい時間が掛かる?

ん〜、MSNメッセンジャーみたいなものを最終目標にするとしたらどれぐらいかな?

C++、VC++はほとんど使えず、Java、VBはそこそこ使える状態です。

C#は完全に趣味としてしか使わないから、
習得にかなり時間の掛かるような代物なら手を出さないほうがいいかと思って。
経験者の判断を仰ぎたいです。
0324デフォルトの名無しさんNGNG
VB、Javaはそこそこ使えるってんなら、そこいらの入門書とか
Webの解説ページとか自分で読んで判断したらいいんじゃないの?
趣味なら余計に。

誰も君の実力なんて知らないよ。
0325デフォルトの名無しさんNGNG
>>324
たしかに判断しろってのは無理があるorz
じゃぁ質問変えて、おまいだったらどのくらい掛かった?学習当初のレベルも合わせて教えてたも。
0326デフォルトの名無しさんNGNG
>>325
漏れは 324 じゃないけど、C++ 暦 12〜13 年位、Java は趣味程度、
その他 Cobol 以外の言語ならなんでもござれってな感じの職業プログラマだけど、
C# は大体 1〜2時間でだいたい使えるようになったよ。

言語としては Java と同程度に分かりやすく、複雑さも少なく、記述性も高いのでとっつきは良いよ。
あと例によって Microsoft 謹製のしっかりしたドキュメントが用意されてるから、
WEB漁ったりヘンな入門書買ったりする手間も少ないし。
0327デフォルトの名無しさんNGNG
>>326
へぇー(・∀・)
やっぱ他の言語を熟知してるっていうアドバンテージは大きいなぁ。

C#はC++っぽいところがあるみたいでちょっと手こずるかなーって思ってたんだけど、
それなら挫折しなそうだし習得も早いかも。早速挑戦してみます。ありがとうございます。
0328デフォルトの名無しさんNGNG
>>323
Javaと同程度に使えるようになるのに3日くらいあれば十分じゃないか?
言語仕様は小さいし。ライブラリを覚えるのは別だが。
0329デフォルトの名無しさんNGNG
例えば、カンマが何個かある文字列をsplitでカンマでわけてとりだそとしています。
カンマの数が決まっていないので、もしない範囲をしていしたら落ちてしまいます。
どうすれば回避できるのでしょうか?
0330デフォルトの名無しさんNGNG
???
splitで返った配列の要素分処理したらいいんじゃないのか?
そういうことじゃないのか?
0331デフォルトの名無しさんNGNG
言語仕様は2時間くらいで覚えた。ライブラリは、まだまだかかりそう。
0332デフォルトの名無しさんNGNG
言語仕様の部分だけなら、Javaを分かってる人間なら短時間で
大体理解できるだろうな。
細かいところを含めるとある程度はかかるけど。
まあ結局一番時間かかるのはライブラリだな。
033370NGNG
まぁライブラリは大枠捕らえて後はその都度引けばいいかんね。
んで、その大枠のってるの何かありまふか...
本でもサイトでもいいでふ...
0334デフォルトの名無しさんNGNG
C#は簡単でしょ。
いきなり業務のプログラムも組めたよ。
JavaやC++をしってれば即興でオケー
0335デフォルトの名無しさんNGNG
俺もCをちょっと、Delphi、phpのみの経験で
業務アプリが出来ました。

まあ業務アプリは実装部分は
大した事やらないですからね。
せいぜいマルチスレッド処理で
ちょっとてこずった位。
でも判っちゃえばやりやすかった。
0336デフォルトの名無しさんNGNG
業務プログラムの場合、仕様を決めるまでが地獄だからねえ。
仕様さえ固まれば技術的には楽々。
■ このスレッドは過去ログ倉庫に格納されています