★初心者にVisual C++ ..
232:デフォルトの名無しさん
08/08/21 15:43:32
>STLのstring型やwstring型は利便性においてはCString型にあるマルチバイトとユニコードの相互変換機能が無い分劣りますが、
>スレッドセーフである為classやtypedef内の変数に宣言するのに向いています。
>マルチスレッドで文字列を扱う際にはstring型かwstring型を使いましょう。
大嘘やん。標準にはスレッドの概念が無いし、スレッドセーフかどうかは実装依存になる。
CStringも使い方さえ間違わなきゃマルチスレッドで使える。
URLリンク(msdn.microsoft.com)
233:デフォルトの名無しさん
08/08/21 15:47:26
なーんだ
234:デフォルトの名無しさん
08/08/21 15:48:29
そして、VC++のstd::stringはどうかというと、こうなっている。
URLリンク(msdn.microsoft.com)
ちゃんとやらないとだめだという点でCStringと互角。
235:デフォルトの名無しさん
08/08/21 19:32:26
charに0〜255の数値を設定することはできるようですが
char[]にintやfloat等の数値を設定したり取得するにはどうすればいいですか?
236:デフォルトの名無しさん
08/08/21 19:39:53
union使うかビットシフトかキャストで。
目的による。
237:デフォルトの名無しさん
08/08/21 20:50:24
型について学び直せ。
238:デフォルトの名無しさん
08/08/21 21:13:58
文字列として受け取って変換するとかの話?
239:デフォルトの名無しさん
08/08/21 23:59:01
>>236
int i=1234;
char ic[50];
ic = (char[50])i;
こうですか?
キャストできませんでした
240:デフォルトの名無しさん
08/08/22 00:28:12
一体何がしたいんだ
241:デフォルトの名無しさん
08/08/22 01:03:46
冗談きつすぎるだろこれは…
242:デフォルトの名無しさん
08/08/22 09:30:00
int型をchar型に入れなきゃならない理由を述べよ。
243:デフォルトの名無しさん
08/08/22 09:46:01
>>239
あえてそういう風にキャストしたいのなら、例えば・・・
*(int *)&ic[0] = i;
とか
244:デフォルトの名無しさん
08/08/22 10:00:39
&と[0]は説明のためにあえて入れただけでなくてもいける
245:デフォルトの名無しさん
08/08/22 10:10:37
memcpyでいいじゃん
246:デフォルトの名無しさん
08/08/22 18:43:37
>>242
ネットでデータ送るときに、パケットサイズを固定長にしたいときとか
247:デフォルトの名無しさん
08/08/22 18:54:16
>>243
ありがとうございます。 下記のようにしたところ
int i=256;
char ic[50];
*(int *)&ic[0] = i;
char[]の最初の4バイトにそれらしい値が入るようになりました
int=32bit char=8bit なので期待通りの結果が得られてる ような気がします
これはcharの参照をintのポインタのポインタにキャストしてるんでしょうか?
char[]に入れることはできましたがintに戻すにはどうすればいいかわからんので
もっと勉強が必要なようです ありがとうございました
248:デフォルトの名無しさん
08/08/24 09:34:37
C++を仕事で扱い始めて自宅でも勉強したいと思っています。
そこで質問なのですがVISUAL STADIOの学生用の安いものとそうでないものとの間で機能に差はありますか?
249:デフォルトの名無しさん
08/08/24 09:46:05
>>248
C++の勉強よりも、英語を始めとした一般常識を身につけることをこそ、お勧めします。
250:デフォルトの名無しさん
08/08/24 14:12:06
>>248
仕事してるんじゃないのか?
なで学生用なんだ
経費で落とせないのか?
251:デフォルトの名無しさん
08/08/24 14:29:10
EEならフリーで学生じゃなくても手に入れられます。
252:デフォルトの名無しさん
08/08/24 15:53:05
EE(笑)
253:デフォルトの名無しさん
08/08/24 16:01:34
っGCC/G++/MINGW
254:248
08/08/24 19:08:08
愚かなのでわかりません(´・ω・`)
あくまで個人で勉強したいので…
255:デフォルトの名無しさん
08/08/24 20:09:08
gcc makefileのあたりからじっくり、やったほうがいい腕になるよー
256:デフォルトの名無しさん
08/08/24 21:16:22
>>254
Visual Studio 2008のAcademicはProfessionalと同じ。
だから、同じのが欲しければProfessionalを買え。
違うのがほしければそれ以外を選べ。
257:デフォルトの名無しさん
08/08/24 22:54:44
Visual Studio Express Edition でググれ
と一言書いてやれば済むのに
おまえらほんとに卑屈だな
258:248
08/08/25 06:30:55
>>256
>>257
ありがとうございます。
259:デフォルトの名無しさん
08/08/25 12:12:39
質問させてください・・・
www.geocities.jp/ky_webid/win32c/010.html
このページの、
・最初にクリックした点から、次にクリックした点までを結ぶ直線を描くプログラムを作って下さい。
という例題は、どの様に書いたらいいのでしょうか?
if文を使うのかと思ったのですが、頭が悪くてswitch文とうまくあわせられません・・・
大変申し訳ありませんが、どなたか教えてもらえないでしょうか?もうだめぽ・・・><
260:デフォルトの名無しさん
08/08/25 12:17:57
>>259
そのページを読んでいるのだから直線を描画するプログラムは作れるよね?
そのページの前提としてクリックした座標を取得するプログラムも作れるよね?
後は組み合わせるだけだから頭の良し悪しは関係ない。
261:デフォルトの名無しさん
08/08/26 00:47:46
dllのインクルードというかリンクの仕方を教えてください
262:デフォルトの名無しさん
08/08/26 00:52:05
久々にVC++(2008)を使っているんだけど、
構造体のデータを簡単に表示とかいう拡張機能
できたりしていない? マネージドじゃない状態で。
PHPとかPerlとかやってるとさ、print_r(オブジェクト)で
オブジェクトのプロパティとか値がずらずら表示されて便利なんだよね。
標準のC++にないのはわかる。デバッグ用にそういう拡張
されてないかなぁと。
デバッガみれ? それしかないかな?
263:デフォルトの名無しさん
08/08/26 01:05:18
C++はイントロスペクティブでないから無理ぽ
ってSteve Yeggeが要ってた。
pdb漁ってBinaryHackするとかしか思い浮かばないヨ
264:デフォルトの名無しさん
08/08/26 01:09:16
プログラム中なら、hoge.(ココでCTRL+SPACE)
デヴァグ中なら、ローカル変数とかそういうの。
それ以外は知らん。
265:デフォルトの名無しさん
08/08/26 09:41:11
>>261
そのDLLに対応したインポートライブラリとリンクするか
実行時にAPIでロードして呼び出す。
インポートライブラリはDLL作成時にできるが、
DLLからLIB.EXE等を使って作ることもできる。
266:259
08/08/26 14:17:55
すみません・・・マジで悪いみたいですオレは理解力がなさ過ぎる・・・
上記みたいな感じでいけるかと思ったんですが、error C2196: case の値 '513' は既に使用されています。
と出て動きません・・・ボタンクリックの1回目と2回目を分けるには、どげんしたらいいんでしょうか・・・
プログラム分けてコピペさせていただきます・・・
>>260
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
HDC hDC;
PAINTSTRUCT ps;
int x[2] = {0,0};
int y[2] = {0,0};
switch(msg)
{
case WM_LBUTTONDOWN:
x[0] = LOWORD(lp);
y[0] = HIWORD(lp);
return 0;
case WM_LBUTTONDOWN:
x[1] = LOWORD(lp);
y[1] = HIWORD(lp);
return 0;
267:259
08/08/26 14:20:35
case WM_PAINT:
hDC = BeginPaint(hWnd, &ps);
MoveToEx(hDC, x[0],y[0],NULL);
LineTo(hDC, x[1], y[1]);
EndPaint(hWnd, &ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd, msg, wp, lp);
}
すんません下記みたいな感じ、でした・・
268:デフォルトの名無しさん
08/08/26 14:36:45
case WM_LBUTTONDOWN:が2個あるぞ。
どっちかはWM_LBUTTONUPの間違いだなんてことない?
269:デフォルトの名無しさん
08/08/26 14:37:46
>>266
case WM_LBUTTONDOWNが2個あったら、怒られるだろう
あと、それだとx[2], y[2]が、WndProc()抜けると消滅する
static int x[2] = {0,0};
static int y[2] = {0,0};
static int index = 0;
switch(msg)
{
case WM_LBUTTONDOWN:
x[index] = LOWORD(lp);
y[index] = HIWORD(lp);
index = index ? 0 : 1;
return 0;
WM_PAINTで、ボタンクリックが2回目以降のみ描画する・・・
とか、詰めなきゃいけないところは、まだあるけど
とりあえず、こんな感じでどう?
270:デフォルトの名無しさん
08/08/26 14:41:00
それ、いつまでもindexが0だと思うんだ。
271:デフォルトの名無しさん
08/08/26 14:41:39
と、入れ替えるのか、失礼
272:デフォルトの名無しさん
08/08/27 16:34:08
Visual C++ 2008 EE で、C++ではなくC言語を使うにはどうすれば良いのでしょうか
273:デフォルトの名無しさん
08/08/27 16:38:15
ソースファイルの拡張子を.cppから.cに変える
274:デフォルトの名無しさん
08/08/27 17:22:17
Visual C++ 2008で、フォームを複数使用しているのですが、
変数の値を他のフォームに渡すことは可能ですか?
275:デフォルトの名無しさん
08/08/27 17:46:46
可能です。
276:デフォルトの名無しさん
08/08/27 23:03:05
CodeBlocksでこれのVC++のコンパイル諸々を使うためにVisual C++ 2008 EEを入れたんですが
コンパイル時にkernel32.libが開けないと言われます
Visual C++ 2008 EEを標準でインストールした場合のkernel32.libの場所はどこでしょうか
C:\Program Files\Microsoft Visual Studio 9.0\VC\lib 配下あたりだと思ったのですが
そのあたり検索しても見つかりません
277:デフォルトの名無しさん
08/08/27 23:15:11
C:\Program Files\Microsoft SDKs\Windows\v6.0A\lib
278:276
08/08/27 23:33:57
>>277
ありがとうございます
279:デフォルトの名無しさん
08/08/28 08:45:12
>>275
どうやって渡すのか教えて下さい
280:デフォルトの名無しさん
08/08/28 09:09:18
ケースバイケース
281:デフォルトの名無しさん
08/08/28 09:30:15
アンケートの質問を複数のフォームに書いて、最終的にその回答
(はい、いいえ、どちらでもない)を質問のフォームとは別の
フォームに出力したいと思っています。フォーム1の質問で集めた回答を
それぞれの変数に入れ、その値をフォームに2にも引き継ぎ、変数にはフォーム1と
フォーム2の値が入っているようにしたいのですが・・・教えていただけませんか?
282:デフォルトの名無しさん
08/08/28 09:43:53
受け渡しするpublicなメソッド書くとか、プロパティにして読み書きすればいいじゃん。
普通のことなのに、何がひっかかってるのかがわからん。
283:デフォルトの名無しさん
08/08/28 10:23:19
ご回答ありがとうございます。
プログラミングはC言語を2ヶ月ほどしか学んでいなく、
Visual C++ 2008 EEも使用して2日しか経過していない
ので分かりませんでした。publicやメソッドの意味を
調べようと思います。
284:デフォルトの名無しさん
08/08/28 11:14:08
まずC++/CLIを勉強しないとな。
つか.NET使うんならC#の方がいいぞ。
285:デフォルトの名無しさん
08/08/28 18:55:08
.netつかうならどう考えてもC#のほうが…
C++.net好んでつかってるやついるの?
いたら何がいいのか教えて欲しいくらい
C++のメリットドブにすててまで.netする意味がわからない
286:デフォルトの名無しさん
08/08/28 18:58:41
でもC++/CLIはマジで最強だよ
287:デフォルトの名無しさん
08/08/28 19:04:27
>>285
283のようなやつは時々現れるが、
単にC++→フォームアプリケーションでプロジェクト作っただけで、
好みではなく気付いていないだけだと思う。
288:デフォルトの名無しさん
08/08/28 19:42:19
C#はフリーの逆アセツールでソースが丸見えなのが嫌でC++使ってまふ
289:デフォルトの名無しさん
08/08/28 19:52:23
>>286
C++習熟してて
なおかつC#とかで.netつかってるなら
本当に最強かもしれんね
>>288
あとランタイム配布とかめんどくさいの考えると
本気で配布するソフトはあまりC#つかわないのよね
XNAのやる気のなさに絶望して近頃C++しかつかってない
290:デフォルトの名無しさん
08/08/28 19:53:24
C++/CLIは逆汗してもソースでないの?
291:デフォルトの名無しさん
08/08/28 19:57:08
やっぱVC++6.0が一番頭よさそうに見えるからつこてる
292:デフォルトの名無しさん
08/08/28 21:27:59
ライブラリとかじゃない、普通のプログラムをデバッグしようとしているのですが、
Debugging information for 'regsvr32.exe' cannot be found or does not match. Symbols not loaded.
Do you want to continue debugging ?
というメッセージが出ます。(開発環境は英語版のVC++9です)
Yesを選択しても、
To register a module, you must provide a binary name.
という メッセージが出て結局失敗します。
このエラーメッセージの意味は、regsvr32.exeを引数なしで呼び出したためだ
というのは調べてわかったのですが、このあとどうすればよいのかよくわかりません。
ツールの中などで、regsvr32.exeを削除するような操作が必要なのでしょうか?
regsvr32.exeはOLEコントロールを登録/解除するために使うらしい、というのも
書いてあったのですが、まったく意味がわかってません。
どうかよろしくお願いします。
293:デフォルトの名無しさん
08/08/28 22:42:44
regsvr32.exeをデバッグしてるって
マイクロソフトの中の人ですか?
294:デフォルトの名無しさん
08/08/28 23:05:59
>>293
結構大きなフリーのライブラリのソースをダウンロードしてきてコンパイルしたのですが、
コンパイル終わって実行する前に、登録するために使うプログラムを選択しろみたいな
メッセージが出てきて、適当にデフォルトのを選択しておいたところ、292みたいな状態になって
しまいました。
ずっとLinux使ってたので、もしかしてすごく見当はずれな質問してるかもしれませんが、
いろいろ検索してもなにも引っかからなかったし、どうすればよいか、ヒントでもよいので
ください。
295:デフォルトの名無しさん
08/08/29 03:44:16
String^ s = "A";
for( int i=0; i<26; i++ ){
〜何か操作〜
func( s );
}
こんな感じで、func()に、「A〜Z」まで文字列を渡したいのですが、どんな操作をするとスマートに出来ますでしょうか?
296:デフォルトの名無しさん
08/08/29 03:56:27
func(static_cast<wchar_t>(L'A' + i).ToString());はどう?
iの使い道がほかになければ、こういうループにするという手もある。
マジックナンバー26が消えるのがいい(もっとも、'Z' - 'A'でも消せるけど)。
for ( wchar_t i = L'A'; i<='Z'; i++ ) {
func( i.ToString() );
}
297:295
08/08/29 04:19:47
他にも使用していたので、前者を使わせてもらいました。
ありがとうございます。
298:デフォルトの名無しさん
08/08/29 11:04:43
>>292
>ライブラリとかじゃない、普通のプログラムをデバッグしようとしているのですが、
>>294
>結構大きなフリーのライブラリのソースをダウンロードしてきてコンパイルしたのですが、
どっちなんだ。
299:デフォルトの名無しさん
08/08/29 18:20:27
ダイアログボックスでボタン配置したときは
プロパティからデフォルトボタンに設定できるけど
CreateWindowで配置したボタンを
デフォルトボタンにするにはどうしたらいいですか?
300:デフォルトの名無しさん
08/08/29 18:30:13
作った後?
作るときなら、BS_DEFPUSHBUTTON
301:デフォルトの名無しさん
08/08/29 18:43:58
>>300
作ったあとに
デフォルトボタンにしたり、しなかったり したいです
302:デフォルトの名無しさん
08/08/29 19:14:06
あとでスタイル変えるのは SetWindowLongでできるけど、
どうなるかはわからん、他のボタンのDEFも外さないと無理かも?
見た目はDM_SETDEFID送ればいいみたいだけど。
303:デフォルトの名無しさん
08/08/29 19:18:01
BM_SETSTYLE でもいけた。まあいろいろやってみ
304:デフォルトの名無しさん
08/08/29 19:28:50
>>298
すいません。
結構大きなライブラリのソースをダウンロードしてきて、それをコンパイルした後、付属の
サンプルコード(こいつは結構小さい普通のプログラム)をコンパイルしようとしたんです。
なんでどっちも本当です。
結局まだわからないので、スタティックライブラリを自分で作って勉強してみてます。
でもregsvr32.exeなんて使わないっぽい。
スタティックなライブラリをデバックするときって、regsvr32.exeを使いますか?
手順としてはこんな感じ。
(1)ライブラリ作成(名前はStaticLibrary.libとします)
(2)regsvr32.exe \i StaticLibrary.lib
(3)このライブラリをつかうサンプルプログラムを作成してデバッグ。
305:デフォルトの名無しさん
08/08/29 19:32:48
それはない。
regsver32の対象になるのはDLLだけ。
306:デフォルトの名無しさん
08/08/29 20:29:23
>>304
exeのプロジェクトのプロパティの「デバッグ」の「コマンド」がregsvr32になってるのかな。
空にしてok押してみて。”$(TargetPath)”が入ると思う。
新しいプロジェクトを作るときのウィザードで選択を間違えたのかな。
307:デフォルトの名無しさん
08/08/30 01:12:35
>>304
ありがとうございます。おっしゃるとおりになってました。
そこを空にして、追加のインクルードパスにboostを追加して、F7でビルドするとビルドできました。
その後、同じソリューションの中のほかのサンプルプログラムをコンパイルするごとに追加の
インクルードパスにboostを追加する、という作業が必要だったのですが、これはしょうがないですか?
どこかで設定すれば同じソリューション内なら一度の追加ですむとか、そういうことはできないですか?
308:デフォルトの名無しさん
08/08/30 12:47:12
VS2008を使っているのですが、newで確保したクラスの動的配列の内容を
デバッガで全て表示させるにはどうしたらよいのでしょうか?
STLのstringやvectorだと上手く表示されているのですが、何かいい方法があるのしょうか?
どなたか教えて下さい。
309:デフォルトの名無しさん
08/08/30 15:57:21
変数の後ろに、カンマと数字で
310:デフォルトの名無しさん
08/08/31 13:09:13
>>309
最初何のことだか分からなかったのですが、ググって見てようやく分かりました。
御回答どうもありがとうございました。
一応他の方の参考になるかもしれないのでリンク張っておきます。
URLリンク(support.microsoft.com)
他にもautoexp.datを使う方法もあるみたいですね。
URLリンク(www.cycleof5th.com)
URLリンク(blogs.wankuma.com)
311:デフォルトの名無しさん
08/08/31 17:21:03
某動画を見ながらVC++2008をインストールしたのですが
新規作成-プロジェクトの
「VisualC++」の「空のプロジェクト」実行で
ソース、リソース、ヘッダーファイルが出なく(組み込まれなく?)なりました
どこかさわってしまったらしく元に戻せません
超初歩的だと思いますが宜しくお願いします。
312:デフォルトの名無しさん
08/08/31 17:41:32
「空のプロジェクト」なんだから、そういうのが無くて当たり前。
313:311
08/08/31 18:34:37
URLリンク(www.nicovideo.jp)
この動画の1’28”くらいのところなんですが
空のプロジェクトなのに3ファイルが組み込まれてるんです
なにか設定を変えているとかでしょうか?
314:311
08/08/31 18:43:15
連投すいません
他の説明動画で解決できました。
前の動画は編集されてたのかな?
315:デフォルトの名無しさん
08/08/31 19:11:35
こんな動画まであるのか。
ホントになんでもあるなw
316:299
08/08/31 23:41:36
>>300
BS_DEFPUSHBUTTON も設定しましたがリターンを押しても反応しません
>>302
DM_SETDEFIDを
SendMessage(ウインドウのハンドル, DM_SETDEFID, (WPARAM)ボタンのID, (LPARAM)0 );
で送ってもデフォルトになってないような?
>>303
SendMessage(ウインドウのハンドル,BM_SETSTYLE, (WPARAM)BS_DEFPUSHBUTTON,(LPARAM)0);
にしてみましたがやはりだめです
配置してるボタンはウインドウ上に1つだけです
ひょっとしてデフォルトボタンはダイアログでしか設定できないのでしょうか?
317:デフォルトの名無しさん
08/08/31 23:45:49
Enter打つとボタンが押されたことになるって挙動が欲しいなら、
ボタンのIDをIDOKにして、メッセージループにIsDlgMessageを組み込むじゃなかったっけ。
318:デフォルトの名無しさん
08/09/01 00:55:14
テキストボックスに入力中にリターン押したときに
ある関数を実行したいんですが
ダイアログのときはデフォルトボタンで代用してました
VBとかでいうところのkeydownイベントのときにキーコードがリターンか調べて
リターンなら処理をする みたいな挙動がほしいです
IsDlgMessageでググったら日本語のページがひとつもないといふ
319:デフォルトの名無しさん
08/09/01 01:55:10
じゃあ、IsDialogMessageでググってみて
320:デフォルトの名無しさん
08/09/01 04:19:22
>>315
そして、
本と同じで、こういう動画も初学者向であふれるんだろなw
321:デフォルトの名無しさん
08/09/01 17:48:26
>>319
ググったけどよくわからんかった
モードレスダイアログにしてIDOK受けるみたいな感じに解釈したんだけど
コントロールのサブクラス化のほうが理解しやすかったんでそっちにしました
ありがとうございました
322:デフォルトの名無しさん
08/09/01 19:49:31
すいません。
これからVisual C++ 6.0を勉強をしようと思っているんですが、
初心者向きのわかりやすい参考書があれば教えて下さい。
よろしくお願いします。
323:デフォルトの名無しさん
08/09/01 20:12:44
>>322
本題(参考書の紹介)にレスできなくてごめん。
これから勉強するのに、なんでvc6なのだ?
vc6はc++の規格が固まる前のものでオススメでない。
vc9(vs2008)でいいじゃないか。
324:デフォルトの名無しさん
08/09/01 21:15:53
VC6使ってるけどC++の規格で困ったことなんかないな
325:デフォルトの名無しさん
08/09/01 21:21:02
>>323
そうなんですか?
しかし会社で使用する開発環境が6.0らしいんですが・・・
vs2008はOSが2000なのでインストール出来ませんが、
vs2005ならインストールしています。
vs2005を勉強すればvs6.0にも応用出来るのでしょうか?
そういうことでしたらvs2005で勉強してみます。
326:デフォルトの名無しさん
08/09/01 21:24:29
会社で使うという事情なら6.0にしておけ。
327:デフォルトの名無しさん
08/09/01 21:25:37
ちゃんとライセンスがあるのか心配なレスだなしかしw
328:デフォルトの名無しさん
08/09/01 21:33:29
そうですね。
やはり6.0を勉強します。
話は戻りますが、初心者向きのわかりやすい参考書が
あれば教えて下さい。
329:デフォルトの名無しさん
08/09/01 21:40:02
VCの場合はCかC++がある程度使えないと初心者以前なので
勉強してから出直して来てください。
330:デフォルトの名無しさん
08/09/01 21:44:23
山本信雄のシリーズは入りとしては最高
でも、Cがある程度使えなかったらわかりません
>>329
VC++とC++ってそこまで違うものですか?
331:デフォルトの名無しさん
08/09/01 21:53:29
C++はプログラミング言語
VC++はマイクロソフト社製の開発環境
332:デフォルトの名無しさん
08/09/01 21:59:50
そっか
VC++はVSのC++コンパイラ群のことだと思ってた
333:デフォルトの名無しさん
08/09/01 22:08:30
ライセンスなんてそんなに(・ε・)キニシナイ!!
334:デフォルトの名無しさん
08/09/01 22:12:31
libviscawinの使い方教えてください
ていうかどこで聞けばいいですか?
335:デフォルトの名無しさん
08/09/01 22:19:35
VC++単体パッケージにはコンパイラしかついてないのか
336:デフォルトの名無しさん
08/09/01 22:59:15
>>332
いやまあその理解でもあまり困らないと思う。
337:デフォルトの名無しさん
08/09/01 23:25:10
まぁ、VC6と言うとMFCを使えることを想定されるな。
338:デフォルトの名無しさん
08/09/02 00:11:16
win32だったらprograming windows (ペゾルド) C言語を知っている前提
MFCだったら標準口座MFC6.0(シルト) C++のクラスぐらいまで知っている前提
339:デフォルトの名無しさん
08/09/02 07:41:32
main( )で始まるプログラムとMFC使ったプログラムは勝手が違うな
340:デフォルトの名無しさん
08/09/04 01:35:06
ポインタをヘッダファイルで定義して、複数のソースから使用します。
そこでヘッダ宣言時に"_declspec(selectany)"で書くと、リンカエラーもなくビルドできます。
この"_declspec(selectany)"とは、どういったものなのでしょうか?
341:デフォルトの名無しさん
08/09/04 01:52:49
>>340
その通りの効果。リンク時に重複した定義を許し、1つにまとめる。
URLリンク(msdn.microsoft.com)
342:デフォルトの名無しさん
08/09/04 21:03:54
WM_PAINTメッセージの処理で、クライアント領域の左側を白、右側を黒に塗り潰すとして、
再描画が必要な領域で条件分岐して、
343:デフォルトの名無しさん
08/09/04 21:06:21
途中で送信してしまいまして、すいません。
WM_PAINTメッセージの処理で、クライアント領域の左側を白、右側を黒に塗り潰すとして、
再描画が必要な領域で条件分岐して、白黒それぞれ描画するか判断するのか、
描画が必要ない領域を塗り潰しても、結局システムは何もしないと思って
両方とりあえず描画するのか、どちらが一般的なんでしょうか
344:デフォルトの名無しさん
08/09/04 21:55:55
領域を指定する
345:デフォルトの名無しさん
08/09/05 13:16:31
クライアントエリアの中は全部描く
クリッピングは速度のためにある
346:デフォルトの名無しさん
08/09/06 10:23:30
昨日勉強始めました。
LINK : fatal error LNK1181: 入力ファイル 'object\library.obj' を開けません。
というエラーが出るのですがlibrary.objを検索してもHDにはありませんし、
解決するようなサイトが見つかりませんでした。
なにか解決方法ありましたらお願いします。
環境はVisualC++2008 Expressで、コードはチュートリアル用にダウンロードしたもの。
元のコードはVisualC++6で書かれたようです。
347:デフォルトの名無しさん
08/09/06 10:40:55
それ理解できないなら別のことやった方がいい
348:デフォルトの名無しさん
08/09/06 11:08:18
どっかでひろってきたサンプルのコンパイル方法か
349:デフォルトの名無しさん
08/09/07 21:02:29
>>273について誰か教えてください。よく理解できません。
350:デフォルトの名無しさん
08/09/07 21:07:28
>>349
URLリンク(d.hatena.ne.jp)
351:デフォルトの名無しさん
08/09/07 21:11:23
特に指定がない場合はコンパイラが拡張子見てどっちか判断する
352:デフォルトの名無しさん
08/09/07 23:33:38
授業でbccを使って書いたプログラムのソース(問題.c)をVisual C++で流用しようとしたら
1>cl : コマンド ライン error D8045 : C ファイル '.\問題.c' を /clr オプションと共にコンパイルできません
というエラーが出てコンパイルが完了しません。どうしたらよいでしょうか?
353:デフォルトの名無しさん
08/09/07 23:48:54
プロジェクト作るときにWin32を選ぶ。
CLR選んだらCは使えない
354:デフォルトの名無しさん
08/09/08 00:02:52
>>353
ありがとうございます。
しかし今度は
「プリコンパイル ヘッダー ファイルが旧バージョンのコンパイラで作成されています。また、C++ のプリコンパイル済みヘッダー ファイルを C で使用しています (その逆も考えられます)。」
というエラーがありました。
355:デフォルトの名無しさん
08/09/08 00:10:12
>>354
空のプロジェクト作って追加するのがいいと思うけど、
cppのプロジェクト作って追加したのなら、ソリューションエクスプローラーのとこで
該当ファイル右クリックしてプロパティ出して、C/C++のプリコンパイルヘッダーの項目のとこで
プリコンパイル済みヘッダーを使用しない、にする。
あるいはプロジェクト全体でこの設定をしてもいい。
356:デフォルトの名無しさん
08/09/08 00:24:59
>>355
ありがとうございます。
何とか上手く行きましたが、最後にscanfの宣言をしてくださいというエラーが出ました。
これはどういうことでしょうか?
357:356
08/09/08 00:25:56
正しくは「'scanf' の宣言を確認してください。」でした。
358:356
08/09/08 00:33:44
すみません。自己解決しました。
Visual C++2005からの仕様変更が原因だったみたいですね。。
お騒がせしました。長らくのお付き合いありがとうございました
359:デフォルトの名無しさん
08/09/08 00:34:45
それは2005以降出るよ。
詳しくは、そのエラーの行でF1押して出たページの「CRT のセキュリティ強化」を読むといい。
その関数使う事が決まってるなら無視してもいいし、気になるならヘルプに出なくする方法も書いてある。
scanf以外にも、printf系、str〜系で出る。
360:デフォルトの名無しさん
08/09/08 01:34:31
移植性?なんだそれ?そんなの知らん!
俺はMSと心中するんだと言う気持ちならscanf_sなど_s系が付いた関数を使えば良いよ
361:デフォルトの名無しさん
08/09/08 10:26:31
すんません
VC++6.0(MFC)でテキストエディタ作れと言われたのですが、
最初の最初でつまづいてます。
プロジェクト新規作成→MFC→SDIアプリ→→で、初期のスケルトン作成。
その後ですが、IDR_MAINFRAMEのフォームの白い部分(メニューバーを除く全部
の領域)を全体的にテキスト入力欄にするにはどう操作すればいいですか?
ダイアログベースのプログラムならテキストボックス置けばいいだけですが、
SDIアプリケーションの場合はどうするのでしょうか?
362:デフォルトの名無しさん
08/09/08 10:32:15
>>361
MFCだといくつかのやり方があって、どういう点を学習してるかによるが、、、
CViewをCEditViewに替えるだけでいけるけど、、、
Editコントロールを貼り付けるのなら、メンバーにCEditでも置いて
ウィンドウのOnCreateで一緒にCreateしてやって、OnSize時に
CEditをクライアントエリアと同じ大きさにしてやればいい。
363:デフォルトの名無しさん
08/09/08 12:04:29
>>362
ありがとうございます。
なんとか後者の方法でエディットボックス設置はできました。
あとは
・起動時にウィンドウのクライアント領域と合わせる
・リサイズ時にも合わせる
のようにしたいですが、ウィンドウサイズの初期値設定、クライアント領域の現在値の取得などはどのようにすれば良いですか?
364:デフォルトの名無しさん
08/09/08 12:10:38
クライアントのサイズはGetClientRect()というのがあるけど、
WM_SIZEのハンドラ、OnSizeの引数に幅と高さもあるから、それそのまま使えばいい。
起動時にリサイズ(WM?SIZE)も来るから、起動時のことは考えなくてもいい。
365:デフォルトの名無しさん
08/09/08 16:42:03
>>364
ありがとうございます。
試行錯誤した結果、やはりCEditViewにすることにしました。
URLリンク(www.vcppclub.com)
ここを見たら1行も書かずに、読み込み/保存機能はできてしまったのですが、疑問が。
ファイル読み込みのダイアログを出す→ユーザーが選択したファイルを読み込む→テキストエリアに表示
保存も同様。
これらに必要な処理がどこにも書かれていないような気がするのですが。
調べていた段階で、メンバ関数 OnFileOpen() を作成し、
GetOpenFileName();でダイアログを出し、
CFile型に読み込む手順が必要そうだったのですが、
自動生成されたソースではどこにも書かれていません。
にもかかわらず読み書きできるのが疑問です。
(サイトのサンプルはMDIですが、SDIでもほとんど同じのようです)
366:デフォルトの名無しさん
08/09/08 17:33:51
その辺はMFCとDocumentViewアーキテクチャの話だからなあ。
CWinAppからCDocument、CEditViewの操作はMFCの中に含まれている。
もちろん、自分で変更することも可能。
367:デフォルトの名無しさん
08/09/08 18:35:50
派生した部分しか見てないんだろ
368:デフォルトの名無しさん
08/09/08 21:37:06
オリビア派生
369:デフォルトの名無しさん
08/09/09 02:47:07
VisualStudioのエディタのタブや改行の記号表示について質問があります.
デフォルトの表示を変更したいのですがどのようにすればよいのでしょうか?
具体的には改行文字を$にタブ文字を>---という風に変更したいのですが
370:デフォルトの名無しさん
08/09/09 06:11:23
ひとりごとです
371:デフォルトの名無しさん
08/09/09 10:49:53
CEditViewでの、現在表示されている文字列を格納しているメンバは何ですか?
入力されたものを文字列型にコピーして保存やらなにやらいろいろやりたいのですが。
逆に文字列型に格納された文字列を表示する方法も。
そういったテキストバッファの操作のしかたがいまいち分からないです
372:デフォルトの名無しさん
08/09/09 11:00:09
エディットコントロール自身がバッファを持ってる
普通は直接バッファいじらないでメンバ関数使ってアクセスする
373:デフォルトの名無しさん
08/09/09 11:18:51
普通はCDocumentの派生クラスに自分でデータ構造作ってビューはその表示方法書いたりするけど
CEditViewは特殊だからな。GetEditCtrl()でCEditのインスタンスが取れるのでそれを操作すればいい。
374:デフォルトの名無しさん
08/09/09 11:28:37
typedef struct tagTest {
unsigned int x :1;
} Test;
このようなコードを見かけたのですが、「:1」は何を意味しているのでしょうか。
375:デフォルトの名無しさん
08/09/09 11:31:25
>>374
ビットフィールド
376:374
08/09/09 11:43:07
素早い回答、ありがとうございました。
377:デフォルトの名無しさん
08/09/09 13:53:02
>>372-373
なるほど。
CEditのメンバ関数見るとそれらしいものがあるようですね。
しかし、GetLine()のように、行ごとに取得してくる関数はあるみたいですが、
「とりあえず改行も含めて全体をCStringにコピー」するようなものは見当たらないです。
全部の行を走査してコピーする部分は自分で作成しないとダメですか?
378:デフォルトの名無しさん
08/09/09 14:02:47
全取得はGetWindowText()
これはCEditでも、CEditViewでも使える。
379:デフォルトの名無しさん
08/09/09 14:06:23
>>377
MSDNを見るときは、継承元のクラスのメンバも見よう。
GetWindowText()で取れるんじゃね?
って書いてたら先を越されたw
380:デフォルトの名無しさん
08/09/09 14:28:49
>>378-379
おぉ ありがとうございます!
MSDNの見かたを訓練するようにします。
ところでもうひとつ質問が。
MainFrameのメニュー選択によりそれらの動作をさせたいのですが、
void CMainFrame::On????(){
}
↑ここの記述で、
MainFrameのほうからViewを操作するにはどのようにすれば良いですか?
C(アプリ名)Viewクラスのインスタンス名が分かれば「名前.関数名」のような形
で呼び出せると考えたのですが、
どこにも宣言部分が見当たらないようです。
381:デフォルトの名無しさん
08/09/09 15:12:49
>>380
えーと、SDIだったよな?
CFrameWnd::GetActiveView()でどうか。
382:デフォルトの名無しさん
08/09/09 15:24:53
>>381
CViewのポインタが帰ってくるようで、継承して作られたC???Viewの関数は使えないようです。
CFrameWnd::GetActiveView()->関数();
このようにしてもビルドが通らないです。
383:デフォルトの名無しさん
08/09/09 15:32:12
>>382
GetWindowtext()が見つけられないようだったから、わざわざCFrameWnd::GetActiveView()の
書き方にしたのに、そしたらこれかよ・・・
CなんたらEditView* pView = (CなんたらEditView*)GetActiveView();
でいいだろ、ちょっとは考えろよ。
384:デフォルトの名無しさん
08/09/09 15:36:11
メニューから直接よべる
385:デフォルトの名無しさん
08/09/09 19:30:54
>>383
未熟ですみませぬ・・・
おかげさまで思った通りのものができました。
386:デフォルトの名無しさん
08/09/10 11:58:44
お世話になります。VC++6でダイヤログベースのプログラムを作っています。
ダイヤログにボタンを新設し、Classウィザードを使ってON_BN_CLICKEDメッセージ関数を使って
ボタンがおされた事はプログラムで取得できるようにできました。
ボタンを何秒間押したかを調べたいのですが、ボタンが離されたメッセージがなく、
どうやって作ったらいいかわかりません。
どのようなメッセージを使えばいいのでしょうか?
よろしくお願いいたします。
387:デフォルトの名無しさん
08/09/10 12:04:58
CButtonをサブクラス化して自分でLBUTTONDOWNとLBUTTONUPの時刻の差を取るしかないんじゃないかなあ
388:デフォルトの名無しさん
08/09/10 12:32:58
ボタンのイベントは押した時じゃなくて、離した時に発生する気がしたけど
389:デフォルトの名無しさん
08/09/10 15:12:46
数日前にVC++ 2008 Express Editionを使い始めた初心者です。
URLリンク(homepage3.nifty.com)
を参考にWindowsフォームアプリケーションのテンプレで作成したのですが、
一度目のビルドは普通に実行されて表示されるものの、少しでも書き換えた後(内容に一切変化がない場合でも)
以降ビルドを行おうとするとexeファイルが見つからないと表示され、エラーが発生します。
CやC++は以前から触れていたのですが、VisualStudioの操作に関しては
いまいち分からないので原因が分かりません。
どなたか分かる方は折られるでしょうか?よろしくお願いします。
390:デフォルトの名無しさん
08/09/10 15:16:29
なんかおかしいね。
PCの時計はくるってない?
391:デフォルトの名無しさん
08/09/10 16:59:39
EXE だけど DLL としても使えるバイナリってどうやって作ればいいですか?
392:デフォルトの名無しさん
08/09/10 18:07:37
VC6で、2003以降のXmldocumentクラスに相当するものってありますか?
393:391
08/09/10 19:31:29
自己解決しました。とりあえず
__declspec(dllexport)
付けて宣言しとけばEXEでビルドしてもエクスポートされるんですね。
394:デフォルトの名無しさん
08/09/10 19:42:43
VC++ 2008 Proを使っています。
デバッグでプログラムを実行させると出力欄に、
「'System.NullReferenceException' の初回例外が ImageRecognize.exe で発生しました。」
と表示されるのですが、これがどの行で発生したかを調べるにはどのようにしたらいいでしょうか?
どなたか教えていただけると嬉しいです _ _
395:デフォルトの名無しさん
08/09/10 19:45:00
ヌルポ
396:394
08/09/10 19:47:11
すみません、メニューのデバッグ→例外を設定することで出来るようになりました。
お騒がせいたしました。
397:デフォルトの名無しさん
08/09/11 01:08:30
CreateProcessで新規のルートプロセスを発行した後、
親プロセスはWaitForSingleObject(hHandle, 0)を実行して
即終了させようと思っています。(UNIXのデーモンプロセス生成のような感じ)
ここでWaitForSingleObject()のタイムアウト時間を0秒に設定すると
何か問題あるでしょうか?
398:デフォルトの名無しさん
08/09/11 01:20:13
そのwaitに一体何の意味が?
399:デフォルトの名無しさん
08/09/11 01:25:50
>>398
形式的に入れた方がいいのかと思ったのですが、
もしかして即終了させるならば必要ないですか?
400:デフォルトの名無しさん
08/09/11 08:08:02
何のために待つのか考えろよ
401:デフォルトの名無しさん
08/09/11 09:40:54
VC++ 6.0で、
xmlファイルを解析して読み込む/書き込む仕組みを作らなくてはならないのです
が、手探りで困っております。
検索してみると、VC2003以降になればXmldocumentクラスなるものが使えるよう
ですが、
VC6.0ではmsxml.hを使わなくてはならないようです。
これについての資料やサンプルがweb上にあまり無くて困っています。
また、xercesのライブラリを使う手段も打診されているのですが、
これについてはどのようにすれば良いでしょうか?
ダウンロードしても構成ファイルが大量にあり、これらをどう組み込むのが検討
が付きません。
また、VC6用のサンプルのプロジェクトファイルは同梱されていたものの、なぜ
かビルドが通らないようです。
こちらから入手したものです。
URLリンク(xerces.apache.org)
次レスに続きます
402:デフォルトの名無しさん
08/09/11 09:42:05
xerces-all.dswを開いてビルドすると
エラー内容
C:\Liblary\xerces-c-src_2_8_0\src\xercesc\util\Platforms\Win32\Win32PlatformUtils.cpp(691)
: error C2039: 'InterlockedCompareExchangePointer' : '`global
namespace'' のメンバではありません。
C:\Liblary\xerces-c-src_2_8_0\src\xercesc\util\Platforms\Win32\Win32PlatformUtils.cpp(691)
: error C2065: 'InterlockedCompareExchangePointer' : 定義されていない識
別子です。
cl.exe の実行エラー
外部のライブラリを使用するプログラムを作ったことが無いので、そういった部
分の基本から教えていただけると幸いです。
403:デフォルトの名無しさん
08/09/11 09:51:27
>>401
VC2008とboostいれようぜ。
そしたら簡単。serializationとか
404:デフォルトの名無しさん
08/09/11 09:55:05
VC2008が無料で2005より軽いことをしらんのか?
405:401
08/09/11 09:57:19
すんません
業務で、VC6と指定なのです。
406:デフォルトの名無しさん
08/09/11 10:02:12
この辺参照。
これ使うとXMLの扱いがとっても簡単になりますね
基本的にはシリアライズしたいクラスのメンバにserialize関数を追加するだけです
URLリンク(d.hatena.ne.jp)
URLリンク(d.hatena.ne.jp)
407:デフォルトの名無しさん
08/09/11 10:04:40
>>405
では、boostをいれれば? コンパイルできるかは知らないけれど。
でも、msxml.hを使うのが普通ですね。標準機能なので。
408:デフォルトの名無しさん
08/09/11 10:18:04
ありがとうございます。
boostを研究してみます。
409:デフォルトの名無しさん
08/09/11 10:18:40
この辺にMSXMLの使い方かいてありますよ。
あとはMSのサイトで調べれば完璧じゃないですか?
URLリンク(www.utj.co.jp)
URLリンク(www.utj.co.jp)
URLリンク(www.sutosoft.com)
URLリンク(www.sutosoft.com)
URLリンク(hp.vector.co.jp)
URLリンク(www.s34.co.jp)
410:デフォルトの名無しさん
08/09/11 10:23:01
>>408
boostが動かせる(コンパイルできる) かどうかのコンパイラ別の対応表がどこかにあったのですが
忘れてしまいました。boostのホームページのどこかにあったはずです。
XMLを扱う簡単さでは、boostの方が上と思いますが
VC6の機能からなるべくはみ出ないようにするには、MSXMLと思います。
411:デフォルトの名無しさん
08/09/11 11:24:48
やはりVC6でビルドしようとすると、「ブロックが大きすぎてコンパイルできません」と出ます。
あきらめてmsxmlのほう使います。
詳しい資料ありがとうございました。
412:デフォルトの名無しさん
08/09/11 15:42:25
>>411
MSの機能以外を使って良いなら、いったんVC2008とboostのバイナリパッケージをインストールして
serializationを使ってXML操作DLLやLIBを作成してVC6でそれを利用するという手をある。
上位のライブラリをVC6で使えるかはよくわからないけど、
DLLにしてあればMinGWやBCCやVCで共通に使えるので平気と思う。
413:デフォルトの名無しさん
08/09/11 15:45:08
boostのバイナリパッケージはここにある。次に対応している。
Visual C++ 7.1 (Visual Studio 2003), 8.0 (Visual Studio 2005), and 9.0 (Visual Studio 2008)
URLリンク(www.boostpro.com)
414:デフォルトの名無しさん
08/09/11 17:15:00
このサイトで解説している、以下の部分
URLリンク(www.sutosoft.com)
// ●ファイルから読み込む。●
lpXMLDoc->put_async(VARIANT_FALSE);
VARIANT FilePath;
::VariantInit(&FilePath);
FilePath.vt = VT_BSTR;
V_BSTR(&FilePath) = ::SysAllocString(L"test.xml");
VARIANT_BOOL result;
lpXMLDoc->load(FilePath, &result);
::VariantClear(&FilePath);
わざわざファイル名を指定するのにVARIANT型を使うのは何故ですか?
CString型でパス名指定したりして読めれば楽なのですが・・・
実行ファイルと同じフォルダにtest.xmlを置いても、読み込みできていないよう
です。
::VariantInit〜::VariantClearで囲うことの意味、
V_BSTR(&FilePath) と、一見関数に見えるものに代入演算子が付いている意味など、
VARIANT型を扱う処理が全体的に分からず困ってます。
415:デフォルトの名無しさん
08/09/11 18:00:39
DOM(Document Object Model)、COM(Component Object Model)の約束なのでしかたがないのでは?
Microsoft社が提唱する、部品化されたプログラムを作成・利用するための基盤となる技術仕様。
特定の機能のみを持つプログラム部品を組み合わせることでアプリケーションソフトの開発が容易になる。
この仕様に基づいてデータのやりとりができるプログラム部品のことをCOMコンポーネントと呼ぶ。
COMコンポーネントは開発に使った言語やコンポーネントのある場所などに拠らず、
どの言語からでも、どこからでも利用することができる。
ネットワークを通じて別のコンピュータ上にあるCOMコンポーネントを利用する技術をDCOMと言う。
これらの技術はWindowsだけでなく、UNIXやMac OSにも移植されている。
コンポーネント開発が楽にできるよう改良された次世代のCOM+の開発が進んでおり、
Windows DNAの中核技術として期待されている。
URLリンク(bizex.goo.ne.jp)
416:デフォルトの名無しさん
08/09/11 19:01:57
そういうのはVBで扱う前提だからVCだとめんどくさい
417:デフォルトの名無しさん
08/09/11 19:58:31
CComVariantとか使うべき
418:デフォルトの名無しさん
08/09/11 23:08:34
char str[20]とかいうのがあって
strが"abcd%EFG"だったときに
%以前の文字を削る(str="EFG"にする)にはどうしたらいいですか?
419:デフォルトの名無しさん
08/09/11 23:31:26
>>414
#importでのraw_interface_onlyやめろ。
それを無くすと、高水準なラッパを作ってくれてめちゃくちゃ楽になる。
例えば、loadメソッドならVARIANTやBSTRを使わず文字列を直接渡せるようになる。
420:デフォルトの名無しさん
08/09/11 23:32:59
size_t length = strlen(str);
char * rp = str; // read
char * wp = str; // write
while (rp != '\0') {
421:デフォルトの名無しさん
08/09/12 11:37:10
>>419
詳しく教えてください。
#importから、raw_interface_onlyを削除しました。
しかし、あいかわらずloadメソッドではVARIANT型、VARIANT_BOOL型のふたつの
引数が要求されます。
IXMLDOMDocument* を定義してから、インスタンスを生成し、ファイル名を指定
して読み込み、ノードを指定してい読み込んでくるまでの
一連の流れを教えていただけると幸いです。
422:デフォルトの名無しさん
08/09/12 11:46:14
初心者スレでやることとは思えない
423:デフォルトの名無しさん
08/09/12 11:56:30
コピペ
つ
pDoc->load(_variant_t(L"URLリンク(majissuka.com)"),
424:デフォルトの名無しさん
08/09/12 11:59:33
ファイルなら絶対指定では
file:///C:/windows/test.txt
かな? test.txtでもいいとはおもう。
425:デフォルトの名無しさん
08/09/12 12:13:02
>>418
> char str[20]とかいうのがあって
> strが"abcd%EFG"だったときに
> %以前の文字を削る(str="EFG"にする)にはどうしたらいいですか?
>
char *p;
p = strchr(str,'%');
p++;
strcpy(str,p);
426:デフォルトの名無しさん
08/09/12 12:20:56
これでいけたけど・・・
#include <msxml.h>
#include <comdef.h>
#include <atlbase.h>
int main(){
CoInitialize(NULL);
IXMLDOMDocument* lpXMLDoc;
CoCreateInstance(CLSID_DOMDocument, NULL, CLSCTX_INPROC_SERVER, IID_IXMLDOMDocument, (void**)&lpXMLDoc);
// ●ファイルから読み込む。●
VARIANT_BOOL result;
lpXMLDoc->put_async(VARIANT_FALSE);
lpXMLDoc->load(_variant_t(L"test.xml"), &result);
// ●ノード検索●
IXMLDOMNodeList* lpNodeList;
BSTR NodePath = ::SysAllocString(L"Test/Item");
lpXMLDoc->selectNodes(NodePath, &lpNodeList);
::SysFreeString(NodePath);
long lLength;
lpNodeList->get_length(&lLength);
for (int i = 0; i < lLength; i++){
IXMLDOMNode* lpItem;
lpNodeList->get_item(i, &lpItem);
BSTR str;
lpItem->get_text(&str);
USES_CONVERSION; printf("%s\n", W2A(str));
SysFreeString(str);
lpItem->Release();}
lpNodeList->Release();
lpXMLDoc->Release();
CoUninitialize();}
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4668日前に更新/181 KB
担当:undef