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


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

★初心者にVisual C++を教えるスレ★ Part31



1 名前:デフォルトの名無しさん [2008/07/31(木) 18:02:28 ]
Visual C++入門者・初心者からの質問を、
お兄ちゃんお姉ちゃん達が優しく、時には厳しく回答してくれるスレッドです。

■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう、特にWindowsForm、MFC、Win32アプリケーションの区別。
・できるだけ具体的に。

質問の仕方については次のページが大変参考になります。
www.hyuki.com/writing/techask.html

■回答するにあたって
・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。
 (MSDNのどの項目だとか、何のキーワードでGoogleするとか)
・ネタや煽りは軽く流しましょう。

過去スレ、関連スレなどは>>2-5辺り。

642 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 11:15:59 ]
コンソールプログラムからCreateWindow関数を呼ぶとできます。

643 名前:641 mailto:sage [2008/10/02(木) 11:39:08 ]
>>642
ありがとうございます。

644 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 12:18:40 ]
そんなに簡単に呼べたっけ?
ライブラリとインクルード用意すれば呼べそうな気もするけど、
mainとwinmainで全然作りが違う気がする

645 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 12:25:00 ]
一つのプロジェクトの中には、一つのmain関数しか定義できないのですか?
だとすると、directxなどのライブラリを用いるサンプルソースを試すにはその
都度、プロジェクトを作成しなといけないと思うのですが、ソリューション内の
プロジェクト全てに同じインクルードパスとライブラリパスを適用するような
ことは出来ますか?

646 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 12:41:45 ]
パスの設定はVC++そのものの設定でやればいいだろう。
lib指定が面倒だったらヘッダーに#pragma comment入れとけばいいし

647 名前:645 mailto:sage [2008/10/02(木) 13:02:32 ]
>>646
ありがとうございます。
#pragmaはコンパイラによって挙動が違ったような気がするので
見送りかな。linuxでもコンパイル出来るようにしときたいので。

648 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 13:13:28 ]
>>647
LinuxではDirectX使えないよ
そもそもここはVisualC++のばりばり環境依存のスレです


649 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 13:28:45 ]
>>644
#include <windows.h>

int main(void)
{
HWND myWindow = CreateWindow(
TEXT("STATIC"),
TEXT("hogehoge"),
WS_OVERLAPPED,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
NULL,
NULL
);
ShowWindow(myWindow, SW_SHOW);
MessageBox(NULL,TEXT("ok"),TEXT("close"),MB_OK);
return 0;
}


650 名前:640 mailto:sage [2008/10/02(木) 13:40:43 ]
一応自分なりに調べてみてGetProcessMemoryInfo()という関数があるのがわかりました。
プロセス終了時に取得したPROCESS_MEMORY_COUNTERS構造体のメンバのうち、
PeakWorkingSetSize と PeakPagefileUsage の合計値が
プロセスで実際に使われた最大メモリ使用量という事でいいのでしょうか?

というか、ゲームに使われる全てのファイルサイズの合計超えてます^^;
こういうものなのでしょうか?プロの人は本当にどうしてるのか気になります。
一度大きくメモリを確保してプログラムで小出しにするなんちゃってアロケート実装とかですかね?



651 名前:647 mailto:sage [2008/10/02(木) 13:45:51 ]
>>648
directxはあくまで例で言っただけで、openGL使うと思います。
混乱させてすみませんでした。

652 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 13:46:00 ]
テストプログラム作って実測だろうが
机上で計算しても何の意味もない

653 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 13:59:01 ]
lib指定のpragmaはcomment文なので、他には影響なさそうだけどね。

654 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 14:00:34 ]
>>641 は入門用にglutから入ればそんな心配も出てこなかったろうに。

655 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 14:01:06 ]
>>652
>>650は実測はしてはみたけどそれが正しい方法なのか知りたいって事でしょ
俺もメモリ関係よくわからんから知りたいわ

656 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 14:05:12 ]
>一度大きくメモリを確保してプログラムで小出しにするなんちゃってアロケート実装とかですかね?

こんなこと言うくらいだから知ったかぶりして余計な心配してるだけだろ

657 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 14:05:17 ]
GUIって「ぐい」ってよみますよね。
無知な後輩から馬鹿にされたんですが。師ねよ。

658 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 14:06:53 ]
>>656
Windowsはともかく、家庭用ゲームの開発だと大抵はそういう手法とってるよ
Windowsのメモリ管理なんてまともにやってるゲーム会社なんてないんじゃね?

659 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 14:06:57 ]
自動で付けられるコードの「 { 」を次の行にする設定ってあるんでしょうか?

660 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 14:10:17 ]
>>659
C言語で { を勝手に改行されたら逆に困りますよ



661 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 14:14:03 ]
C++クラスの追加とかの自動で挿入されるコードについて、ってこと?

662 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 14:17:34 ]
具体的に言うと
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
て感じです

そもそも後者の方は一般的ではないんでしょうか?
もしそうなら今の設定に慣れるように努力します

663 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 14:20:33 ]
俺は後者だよ。その方が見やすい。別に手動で改行すればいいじゃん。

664 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 14:28:00 ]
自動でできる設定はないですか・・・。
分かりました手動で頑張ってみます
どうもありがとうございました

665 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 22:29:37 ]
ツール→オプション→テキストエディタ→C#→書式設定→改行→新しい行にメソッドの始めかっこを配置する

にチェック

ではないか
C++/CLIの設定ってあるのかね?

666 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 23:20:17 ]
自分で探せ

667 名前:デフォルトの名無しさん [2008/10/02(木) 23:33:03 ]
あるレジストリキーの直下にある複数のレジストリキーの
リストを取得する関数はありますか?
具体的には↓のtest直下にあるtest1、test2、test3の名称を取得したいです。

 test\test1
    \test2
    \test3

668 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 23:41:52 ]
apiにはそういう機能がないから第三者が作った関数を探してるということ?

669 名前:デフォルトの名無しさん [2008/10/02(木) 23:50:43 ]
test以下に何があるかわかんない場合だよね
RegOpenKeyEx と RegQueryInfoKey と RegEnumValue で列挙できたと思う
詳しい使い方忘れた、ググれ

670 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 23:51:36 ]
>>668
そういうAPIを探していたのですが見つからないので
自作しかないでしょうか?



671 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 23:55:52 ]
>>669
ありがとうございます。それらのAPIを調べてみます。

672 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 00:31:05 ]
RegEnumKeyExという関数を見つけました。
これで取得できそうです。

673 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 01:22:01 ]
#define ANYARGS ...
と言う宣言は、可変長引数を表しているのですか?
'...'でググッたら死ねましたorz

674 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 01:48:13 ]
レジストリ触るのが怖くて未だにINIファイルな俺

675 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 07:49:35 ]
そう予測したのなら、可変長引数でググってみればいいじゃない

676 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 11:18:54 ]
>>673
名前と ... から考えるとそうだろう


677 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 13:01:50 ]
今Vista(x64)マシンでVC++.net2008を使いコンパイルしたのを
ノーパソのXP(x86)にもってきてみると動きませんでした
動かない理由は
1.x64でコンパイルしたから
2.MS土台のバージョンが古いから
3.そもそもXPでは動かない
どれでしょうか?

678 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 13:08:52 ]
クイズかよ

679 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 13:12:15 ]
ワロタw

680 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 13:12:24 ]
あと2008は2005と違って日数制限があって完全フリーじゃないんですよね?



681 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 13:16:15 ]
2008 expressはフリー゜

682 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 13:20:20 ]
AnyCPUなら動くよ…
fw入ってないんだろう

683 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 13:20:24 ]
そうですか
677 ノーパソに2008入れてないのがまずいのかな〜

684 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 13:21:48 ]
>>682
ノートはシングルコアでした

685 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 13:24:34 ]
ああ、ここVC++か
再配布可能なファイルredistなんたらが入ってるから
それ入れてみ

686 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 13:28:45 ]
やってみます
使う側も最新にしとかないとだめなんですねえ

687 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 13:36:14 ]
あと、ターゲットをx64にしてたら
動かすほうのOSも64bitじゃないと
動かないよ、当然だけど念のため

688 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 13:38:04 ]
了解

689 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 13:47:38 ]
あーあとコード生成の設定で/MTにすると追加無くても動くかもな。

690 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 13:54:58 ]
/MTですか
探して見ます



691 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 14:04:42 ]
結局、Debug版という落ちだったりして。

692 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 14:07:41 ]
>>674
俺は商用アプリでもなきゃレジストリ使わないな
インストーラーアンインストーラー不要で済むし

693 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 14:08:23 ]
いくらなんでもメッセージ見て気が付くだろ

694 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 21:11:03 ]
.netから *View.cpp はないんですよね
全部 *.cpp に書くんですか


695 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 21:20:11 ]
C++/CLIのことを言ってるならありゃ全部 *.hに書くんだぜ。
MVCとかMVPにしたいなら自分で勝手にrefクラスを分ける。

696 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 14:25:37 ]
C++勉強しようとインストールしたまでは良いのですが、コンパイルが出来ません
メニューにビルドの項目が無いのですが、どうやって追加するのですか?

697 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 14:30:07 ]
新規プロジェクトを作成して、書いたコードをプロジェクトに追加してからビルドする。

698 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 14:31:19 ]
>>696
メニューの、新規作成 -> プロジェクト でプロジェクトを作成しないと、ビルドはでないよ。

699 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 14:36:09 ]
>>697-698
親切にありがとうございます
無事にコンパイルが出来ました

700 名前: ◆3CnrSiNVYE mailto:sage [2008/10/04(土) 21:47:21 ]
pc11.2ch.net/test/read.cgi/tech/1222813731/31,32
で宿題を教えてもらったものですが、
Visual C++で
pc11.2ch.net/test/read.cgi/tech/1222813731/32
のソースコードで開くファイルを指定するにはどうすればよいでしょうか?

向こうのスレでは
pc11.2ch.net/test/read.cgi/tech/1222813731/71
という方法を教えられたのでコマンド引数にファイル名をフルパスで書いたのですが、うまくいきません



701 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 22:19:53 ]
あなたはプログラムをやらない方がいいと思うよ
とっととコンビにのバイトの面接でも受けにいけばいかがでしょうか。

702 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 22:24:13 ]
コンビ弐

703 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 22:27:46 ]
学校で聞け

704 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 22:32:32 ]
過去ログ読まないでいきなり質問するやつ

705 名前: ◆3CnrSiNVYE mailto:sage [2008/10/04(土) 22:43:46 ]
>>704
このスレのログは「ファイル」で検索して読みました。
読んでもわかりませんでした。

706 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 22:46:39 ]
この程度のことを自力でできないような奴にプログラマになられても迷惑だよ

707 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 22:53:44 ]
>>705
何がどううまくいかないのか説明して欲しい。
fopen()でNULLが返ってくるのか、
それとも他に何かエラーが出ているのか。

708 名前: ◆3CnrSiNVYE mailto:sage [2008/10/04(土) 23:05:14 ]
>>707
ソースコードは
#include<stdio.h>

void moji_line_count(const char *filename){
FILE *fp;
int prev='\n', moji, moji_count=0, line_count=0;

if((fp=fopen(filename, "rb"))==NULL) return;
for(;(moji=fgetc(fp))!=EOF;prev=moji,moji_count++) if(moji=='\n') line_count++;
fclose(fp);
if(prev!='\n') line_count++;

printf("File : %s\nCharacter count : %d\nLine count : %d\n\n", filename, moji_count, line_count);
}

int main(int argc, char *argv[]){
int i;

for(i=1;i<argc;i++) moji_line_count(argv[i]);
return 0;
}

なのですが、エラーが帰ってくるのではなく純粋にこのソースコードで開くファイルを指定する方法ががわからないのです

709 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:09:33 ]
コマンドラインに打ち込んだ文字列も書けよ

710 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:10:36 ]
>>708
ファイルを指定する方法は、
プロジェクトのプロパティ>構成プロパティ>デバッグ>コマンド引数で
ファイル名を指定する、と既にアドバイスをもらっているはずだけど。



711 名前: ◆3CnrSiNVYE mailto:sage [2008/10/04(土) 23:16:07 ]
>>710
適当なテキストファイルのフルパスを打ち込んで見ましたが、うまくいきませんでした
アドレスは
打ち込むのってこれであってますよね?
C:\\Documents and Settings\\ユーザー名\\デスクトップ\\テキストファイル.txt

712 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:17:26 ]
gccつかえ

713 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:19:19 ]
gcc

www.tdragon.net/recentgcc/

714 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:20:39 ]
コマンドライン使えないやつ

715 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:22:00 ]
>>711
何度も言うけど、うまくいかないという書き方は良くない。
何をやって何がうまくいかなかったのか丁寧に書くべき。

で、そのフォルダに「テキストファイル.txt」というファイルは置いてある?

716 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:23:24 ]
結局何がどううまくいかないのかがわからないんだが。
意図していた結果と、実際に得られた結果がどうなってるの?

717 名前: ◆3CnrSiNVYE mailto:sage [2008/10/04(土) 23:28:54 ]
>>715
すいませんでした。
Ctrl+F5でビルドしても「続行するには何かキーを押してください」とでてキーを押すと終了します。

ファイルは確かにデスクトップにおいてあります。

>>716
>>708のソースで求めているものは、
ファイルを1つまたは複数指定し、
各ファイルに含まれる行数と文字数を数えて画面に出力
なのですが、
ファイルを指定して各ファイルに含まれる行数と文字数を数えて画面に出すことができず、
終了してしまいます

718 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:30:42 ]
もう711で答え出てるじゃん

719 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:38:22 ]
>>717
コマンド引数を指定して、ファイルは存在するとしたら
プログラム自体がおかしい、となる。
そこでブレークポイントを置いてF5でデバッグ実行。

720 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:41:47 ]
あっちの71です。
ひょっとしてDocuments and Settingsの罠にかかってる?
argvの中身確認してみて。



721 名前: ◆3CnrSiNVYE mailto:sage [2008/10/04(土) 23:47:22 ]
>>720
argvをググりましたがさっぱりわかりません


722 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:48:53 ]
だめだこりゃ

723 名前: ◆3CnrSiNVYE mailto:sage [2008/10/04(土) 23:50:49 ]
ダメですか…

んじゃー退散します
つきあってくれたかたありがとうございました

724 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:51:37 ]
>>721
何がわからないのか説明(ry
あとデバッグ実行(ry

725 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:58:07 ]
argvの中身を確認しろと言われてググるとは…
プログラムは誰かに作ってもらったんだろうな。

726 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 00:18:23 ]
最初から宿題スレで作ってもらったと書いてあるやん

727 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 01:02:34 ]
\\

バカじゃねーのwww

728 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 01:16:41 ]
質問者も回答者も馬鹿
ホントゴミ溜め以下だなここは

729 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 01:18:23 ]
宿題やってもらう前に授業をちゃんと受けろと

730 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 01:39:36 ]
こういうのがいるから、ソフトのバグはいつまで経っても無くならないんだろうなあ……



731 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 08:26:38 ]
GUI環境でコンソールプログラムをやると
GUI環境とコンソール環境の両方の知識が必要になるから
最初はコンソール環境で始めた方がいい。
小さなプログラムコンパイルするのにいちいちプロジェクト作ったり
パラメータ渡すのに設定いじるとか
よくそんな面倒なことやってるなと感心する。

732 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 08:43:54 ]
学校と同じgccいれろよ

www.tdragon.net/recentgcc/

733 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 11:02:31 ]
>>731
MAKEFILE覚えないですむから比較的楽じゃね?

734 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 11:04:21 ]
いきなりデバッガ使えるからGUIに限る。
しかしデバッガ自体知らないのでは話にならんが。

735 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 11:07:01 ]
確かに、printfデバッグより楽だからいいよな
まあでも学生ならgccなりBolandのC++コンパイラーなり覚えた方がいいと思うが

736 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 11:30:02 ]
プロジェクトつくるまでもない規模ならMAKEFILEも必要ない

737 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 11:34:58 ]
プロジェクト作る程度の事がそんなに大変だともおもわんけどね

738 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 11:41:45 ]
プロジェクトがないとCやるのは不便
一ファイルに難行も詰め込んだら間違える

739 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 12:00:43 ]
まあ、ちょいとしたツールや宿題程度の問題なら、
cl main.c で充分だわな






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

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

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