★初心者にVisual C++を教えるスレ★ Part31
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2008/07/31(木) 18:02:28お兄ちゃんお姉ちゃん達が優しく、時には厳しく回答してくれるスレッドです。
■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう、特にWindowsForm、MFC、Win32アプリケーションの区別。
・できるだけ具体的に。
質問の仕方については次のページが大変参考になります。
http://www.hyuki.com/writing/techask.html
■回答するにあたって
・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。
(MSDNのどの項目だとか、何のキーワードでGoogleするとか)
・ネタや煽りは軽く流しましょう。
過去スレ、関連スレなどは>>2-5辺り。
0153デフォルトの名無しさん
2008/08/14(木) 02:58:31キー入力フックして入力内容をだますってことか?
それともソフトがキーが入力されたように振舞うってことか?
それなら最悪DDKとかめんどくさいのに手を出さないとだめかもな
どっちにしても何が言いたいのかよくわからん
エスパーな人よろしく
0154デフォルトの名無しさん
2008/08/14(木) 09:33:08キーを送るのはウィンドウに限ればメッセージ送るだけでいいかもしれない。
0155デフォルトの名無しさん
2008/08/14(木) 11:44:08MMORPGとかで不正行為する用か、三国人!
0156デフォルトの名無しさん
2008/08/14(木) 16:24:45例えば、1つのアプリケーションなのですが扱う機能が違う為に2つのウィンドウを開いて同時に使う、という場合には
どのようにしたらいいのでしょうか?
同じプロジェクト内ではなく、別々のプロジェクトでソースを書いていかなくてはならないのでしょうか?
またその際は、ハンドルの名前も別々にしなくてはならないのでしょうか?
0157デフォルトの名無しさん
2008/08/14(木) 17:04:09「一つのアプリケーション」が「一つの実行モジュール」を指すなら、逆に寧ろプロジェクトは一つにしないと(一般的には)ダメ。
一つのソースで複数のウィンドウの面倒を見るか、別のソースに分けるかは、使用するライブラリ次第。
# まぁ、普通分けるだろうけれど。
つーか、扱う機能が違うのに「一つのアプリケーション」にする理由がないなら分けた方が使い易くないか?
0158デフォルトの名無しさん
2008/08/14(木) 17:28:32ゲームパッドの入力をキー入力に変えたいのか?
だったら無理せずJoyToKey使え。
0159デフォルトの名無しさん
2008/08/14(木) 20:53:15PICとPCをUSBで接続していて、親指先が+で他4本が−のスイッチで組み合わせによるPCへのキー入力をしたいのですが、
PICまではできてるんですが、PCのキーボードでキーを押した時と同じようにPC上に送出する関数というかメッセージというか流れが知りたいのです。
0160デフォルトの名無しさん
2008/08/14(木) 21:00:26その辺の流れがちょっとわからないのですが、キーダウンメッセージはアクティブなウィンドウに対して受取分岐がソフト上にある場合に機能するもの
なんですよね。キーが押されたメッセージ事態を作り出すにはどうすればいいんでしょうか?
0161デフォルトの名無しさん
2008/08/14(木) 23:47:50どれをアンスコすればいいのかわかりません
C++をアンスコすれば全てアンスコされるのではなく、C++と一緒に複数同時にインスコされてました
それぞれ個別にアンスコしないといけないようです
C++ アンスコでぐぐっても的したページがヒットしません
どれを消すべきかわかる方いましたらお願いします
0162デフォルトの名無しさん
2008/08/14(木) 23:48:280163デフォルトの名無しさん
2008/08/14(木) 23:49:440164デフォルトの名無しさん
2008/08/15(金) 01:35:200165デフォルトの名無しさん
2008/08/15(金) 01:56:310166デフォルトの名無しさん
2008/08/15(金) 07:03:44Microsoft .NET Framework 3.5
Microsoft .NET Framework 3.5 Language Pack - 日本語
Microsoft Visual C++ 2008 Express Edition - 日本語
Microsoft Windows SDK for Visual Studio 2008 Express Tools for .NET Frameword
Microsoft Windows SDK for Visual Studio 2008 Express Tools for Win32
Microsoft Windows SDK for Visual Studio 2008 Headers and Libraies
MSDN Library for Microsoft Visual Studio 2008 Express Edition
Microsoft Silverlight
0167161
2008/08/15(金) 09:12:270168121
2008/08/15(金) 16:16:15以下のページに記載されている方法を試しましたが、効果がありません。
http://homepage3.nifty.com/endou/tips/04/tips39.htm
本体のウィンドウでは、このような現象は起きません。
開発環境はVC++ 2008 Express Editionです。WindowsXP SP3で動作確認しています。
0169デフォルトの名無しさん
2008/08/16(土) 13:39:15そこで質問なのですが、VisualStudio2008にはEmacsのようにtabキーを押したときに必要なだけ字下げする機能がありますか?
0170デフォルトの名無しさん
2008/08/16(土) 20:18:080171デフォルトの名無しさん
2008/08/16(土) 20:22:56とりあえずキーバインド設定は変更したのか?
0172デフォルトの名無しさん
2008/08/16(土) 20:48:58std::cout << std::toupper('a') << '\n';
std::cout << toupper('a') << '\n';
この二つは何か違うのでしょうか?
上のやつは #include <cctype> しないといけないようだが・・・
0173169
2008/08/16(土) 21:20:11どうもありがとうございました。
0174169
2008/08/16(土) 22:53:11データの保存など他のキーの設定もEmacsのものになってしまいました。
インデントだけをEmacsのものにする方法はありますか?
0175デフォルトの名無しさん
2008/08/17(日) 02:19:20コマンド検索のとこに「インデント」っていれて
適当なコマンドと設定を入れ替えろ
あと、プログラマ志望なら
今のうちにEmacs操作覚えた方が良いぞ、楽だから
vi派って訳じゃないんだろ
0176デフォルトの名無しさん
2008/08/17(日) 02:51:420177デフォルトの名無しさん
2008/08/17(日) 04:41:460178デフォルトの名無しさん
2008/08/17(日) 06:58:46Microsoft Visual C++ 2008 再頒布可能パッケージ (x86)をダウンロードしてきて
インストールしたのですが、インストールディレクトリが”一番空き容量が多いドライブの直下”に
インストールされてしまいます。これは仕様なんでしょうか?
0179デフォルトの名無しさん
2008/08/17(日) 10:39:000180デフォルトの名無しさん
2008/08/17(日) 11:17:04一時ファイルのようで、展開されたファイルは削除しても問題ないっぽいです。
お騒がせしました
0181デフォルトの名無しさん
2008/08/17(日) 13:53:54ファイル → 新規作成 → プロジェクト → Win32 コンソールアプリケーション
プロジェクト → 新しい項目の追加 → C++ファイル
として、
stdio.hをインクルードして文字列を表示させる簡単なコードを書いて実行したのですが、
コマンドプロントみたいなウィンドウが一瞬開いてすぐに閉じてしまったため
文字列をよく確認出来ませんでした。
どうしたら開いたままにしておけるのでしょうか?
0182デフォルトの名無しさん
2008/08/17(日) 14:31:25どうするんだろ
出力ウィンドウにも何も出ない?
0183デフォルトの名無しさん
2008/08/17(日) 15:16:03っていうのが4行と、
あともう1行、
「プログラム○○はコード0(0×0)で終了しました。」
っていうのが出ます。
コード0っていうのはreturn 0にしたからだと思うんですが…。
0184デフォルトの名無しさん
2008/08/17(日) 15:19:070185デフォルトの名無しさん
2008/08/17(日) 15:35:48同じく初心者で、昨日から始めたんですが
returnの前に、文字を入力する関数を入れることで対処してます。
Cだと
scanf("%d",n);
とかなんですが。
0186185
2008/08/17(日) 15:38:07今見たら
scanf("%d",&n);
でした。もちろん、先にnは宣言するものとして。
でもC++だと入力するための関数違うと読んだ気も。
0187デフォルトの名無しさん
2008/08/17(日) 15:40:480188デフォルトの名無しさん
2008/08/17(日) 15:45:39とりあえず、
・確認したいだけなんだったら、stderrでメッセージ出せる
・あと処理の最後に無限ループ入れる
0189デフォルトの名無しさん
2008/08/17(日) 15:46:25ガチで知らなかったんだがw
0190デフォルトの名無しさん
2008/08/17(日) 15:50:17いかにうまくボケるかを競いあう
ここはそういうスレの一つだと思い込んでいる
0191デフォルトの名無しさん
2008/08/17(日) 16:01:39ガチで知らなかったんだがw
0193デフォルトの名無しさん
2008/08/17(日) 16:42:45PostMessage(hDlg,0x500,123,456);
なぜだ?
0194デフォルトの名無しさん
2008/08/17(日) 16:52:28調子乗んな
0195デフォルトの名無しさん
2008/08/17(日) 20:53:270196デフォルトの名無しさん
2008/08/18(月) 10:52:14getchar()でいいじゃん。わざわざ変数を用意する必要があるscanf()を使うのはナンセンスだ。
>>188
無限ループってあんた、エコじゃないな。
>>181
cmd動かしておいて、コマンドラインから動かすって手もあるよ。
0197デフォルトの名無しさん
2008/08/18(月) 10:58:29まあデバッグ必要ないときはCtrl-F5だが。
0198デフォルトの名無しさん
2008/08/18(月) 17:12:40test.tx は見つかり test.txt は見つかりません。
しかし、_findfirst("tes*.txt", &searchData) で検索した場合には
test.txt も test.txtx も見つかります。
Q1. ドキュメントには書いてないのですが、この関数は拡張子を3文字しか見ないのでしょうか。
Q2. 4文字以上の拡張子に対応したファイル検索関数にはどんなものがありますか。
0199デフォルトの名無しさん
2008/08/18(月) 17:45:36>getchar()でいいじゃん。
あらほんと。今度からこっち使います。
ありがとう。
0200デフォルトの名無しさん
2008/08/18(月) 18:39:010201デフォルトの名無しさん
2008/08/18(月) 20:15:09getchar()で良いでしょ
0202デフォルトの名無しさん
2008/08/18(月) 23:10:13たしかWindowsが隠して格納してる8.3なファイル名がひっかかるんだな。
Short Filenameってやつ。findfirstしてあらためて排除するとか。
0203デフォルトの名無しさん
2008/08/19(火) 02:02:38何か意味があるのですか?
0204デフォルトの名無しさん
2008/08/19(火) 02:21:430205デフォルトの名無しさん
2008/08/19(火) 12:28:520206デフォルトの名無しさん
2008/08/20(水) 05:52:40Eula.1041.txt
globdata.ini
install.exe
install.ini
install.res.1041.dll
VC_RED.cab
VC_RED.MSI
vcredist.bmp
しかも作成日時が2007年11月20日。
二週間ほど前にPC買い替えたばかりだからこの作成日時はおかしいと思う。
調べてたらvisualC++が関係してるっぽい。
これなに?
0207デフォルトの名無しさん
2008/08/20(水) 08:00:590208デフォルトの名無しさん
2008/08/20(水) 09:56:200209デフォルトの名無しさん
2008/08/20(水) 11:36:280210デフォルトの名無しさん
2008/08/20(水) 12:32:562005は初めから入ってたんだけど、これって勝手に更新したりするものなの?
2008なんてインストールした覚えがないし、気味わるいからアンインストールしたいんだけど。。
0211デフォルトの名無しさん
2008/08/20(水) 12:47:25とりあえずそのファイル群は再配布可能なやつだと思うから
なんかのソフトが必要としたんじゃないの?
2008というのは2007/11/20だからそう思ったんだけど。
0212デフォルトの名無しさん
2008/08/20(水) 13:03:48一時ファイルだけ削除しておく。
>>207-210サンクス
0213デフォルトの名無しさん
2008/08/20(水) 13:03:53VisualStudioプリインストールなんてどこで売ってるの??
> これって勝手に更新したりするものなの?
しない。
0214デフォルトの名無しさん
2008/08/20(水) 13:06:36visualC++2005Redistributableというのが初めからはいってた。
0215デフォルトの名無しさん
2008/08/20(水) 13:12:580216デフォルトの名無しさん
2008/08/20(水) 19:01:210217デフォルトの名無しさん
2008/08/20(水) 19:23:170218デフォルトの名無しさん
2008/08/20(水) 20:57:37よくバグってメモリリークしたり、既に解放済みのアドレスを解放したりしてます。
そういうのって、PCに悪影響は無いんでしょうか?
0219デフォルトの名無しさん
2008/08/20(水) 21:11:170220デフォルトの名無しさん
2008/08/20(水) 21:28:19最初から入ってたのは2005。
今日気づいたら2008がインストールされてた。
まぁ気にしないことにする。
0221デフォルトの名無しさん
2008/08/20(水) 21:35:34BUFFALOの
ttp://buffalo.jp/products/catalog/multimedia/chideji/streamtest.html
をインストールしたときに一緒についてきたみたい
0222デフォルトの名無しさん
2008/08/20(水) 22:02:47気付いたらってどういう意味だおいw
0223デフォルトの名無しさん
2008/08/20(水) 23:41:28もう放っとこうぜ
>>218
OSがうまくやってくれる、たぶん
0224デフォルトの名無しさん
2008/08/21(木) 13:36:39MFCを勉強しようと思って
http://www.kumei.ne.jp/c_lang/mfc/mfc_01.htm
のページのコードをコンパイルしてみて
うごいたのですが
プロジェクトの設定は「MFCを使用しない」に
なっていても問題ないみたいなのです。
MFCを使っているのに「MFCを使用しない」でよいのでしょうか?
0225デフォルトの名無しさん
2008/08/21(木) 13:48:07そんな設定どこにあった?
基本的にMFCを使うかどうかはヘッダのincludeとリンクするライブラリで決まる。
0226デフォルトの名無しさん
2008/08/21(木) 14:05:37なるほど。MFCを使用するかしないかを変更することによって
リンクするライブラリやコード生成のオプションが変わるみたいです。
なのでMFCを使用するかしないかの設定はあくまで
テンプレートということですね。
やっぱウィザードに頼っているとだめっすね。
0227デフォルトの名無しさん
2008/08/21(木) 14:16:49なんかMFCマスターした気がする
0228デフォルトの名無しさん
2008/08/21(木) 14:19:550229デフォルトの名無しさん
2008/08/21(木) 14:26:170230デフォルトの名無しさん
2008/08/21(木) 14:38:500231デフォルトの名無しさん
2008/08/21(木) 14:57:30にCStringはマルチスレッドに対応してないって書いてあるんだけど
マジで?
やべーじゃん。
0232デフォルトの名無しさん
2008/08/21(木) 15:43:32>スレッドセーフである為classやtypedef内の変数に宣言するのに向いています。
>マルチスレッドで文字列を扱う際にはstring型かwstring型を使いましょう。
大嘘やん。標準にはスレッドの概念が無いし、スレッドセーフかどうかは実装依存になる。
CStringも使い方さえ間違わなきゃマルチスレッドで使える。
ttp://msdn.microsoft.com/ja-jp/library/h14y172e.aspx
0233デフォルトの名無しさん
2008/08/21(木) 15:47:260234デフォルトの名無しさん
2008/08/21(木) 15:48:29http://msdn.microsoft.com/ja-jp/library/c9ceah3b.aspx
ちゃんとやらないとだめだという点でCStringと互角。
0235デフォルトの名無しさん
2008/08/21(木) 19:32:26char[]にintやfloat等の数値を設定したり取得するにはどうすればいいですか?
0236デフォルトの名無しさん
2008/08/21(木) 19:39:53目的による。
0237デフォルトの名無しさん
2008/08/21(木) 20:50:240238デフォルトの名無しさん
2008/08/21(木) 21:13:580239デフォルトの名無しさん
2008/08/21(木) 23:59:01int i=1234;
char ic[50];
ic = (char[50])i;
こうですか?
キャストできませんでした
0240デフォルトの名無しさん
2008/08/22(金) 00:28:120241デフォルトの名無しさん
2008/08/22(金) 01:03:460242デフォルトの名無しさん
2008/08/22(金) 09:30:000243デフォルトの名無しさん
2008/08/22(金) 09:46:01あえてそういう風にキャストしたいのなら、例えば・・・
*(int *)&ic[0] = i;
とか
0244デフォルトの名無しさん
2008/08/22(金) 10:00:390245デフォルトの名無しさん
2008/08/22(金) 10:10:370246デフォルトの名無しさん
2008/08/22(金) 18:43:37ネットでデータ送るときに、パケットサイズを固定長にしたいときとか
0247デフォルトの名無しさん
2008/08/22(金) 18:54:16ありがとうございます。 下記のようにしたところ
int i=256;
char ic[50];
*(int *)&ic[0] = i;
char[]の最初の4バイトにそれらしい値が入るようになりました
int=32bit char=8bit なので期待通りの結果が得られてる ような気がします
これはcharの参照をintのポインタのポインタにキャストしてるんでしょうか?
char[]に入れることはできましたがintに戻すにはどうすればいいかわからんので
もっと勉強が必要なようです ありがとうございました
0248デフォルトの名無しさん
2008/08/24(日) 09:34:37そこで質問なのですがVISUAL STADIOの学生用の安いものとそうでないものとの間で機能に差はありますか?
0249デフォルトの名無しさん
2008/08/24(日) 09:46:05C++の勉強よりも、英語を始めとした一般常識を身につけることをこそ、お勧めします。
0250デフォルトの名無しさん
2008/08/24(日) 14:12:06仕事してるんじゃないのか?
なで学生用なんだ
経費で落とせないのか?
0251デフォルトの名無しさん
2008/08/24(日) 14:29:100252デフォルトの名無しさん
2008/08/24(日) 15:53:05■ このスレッドは過去ログ倉庫に格納されています