09/06/19 12:39:29
Visual C++入門者・初心者からの質問を、
お兄ちゃんお姉ちゃん達が優しく、時には厳しく回答してくれるスレッドです。
■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう、特にWindowsForm、MFC、Win32アプリケーションの区別。
・できるだけ具体的に。
質問の仕方については次のページが大変参考になります。
URLリンク(www.hyuki.com)
■回答するにあたって
・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。
(MSDNのどの項目だとか、何のキーワードでGoogleするとか)
・ネタや煽りは軽く流しましょう。
過去スレ、関連スレなどは>>2-4辺り。
【過去スレ】
Part33 スレリンク(tech板)
Part32 スレリンク(tech板)
Part31 スレリンク(tech板)
2:デフォルトの名無しさん
09/06/19 12:40:01
Part30 スレリンク(tech板)
Part29 スレリンク(tech板)
Part28 スレリンク(tech板)
Part27 スレリンク(tech板)
Part26 スレリンク(tech板)
Part25 スレリンク(tech板)
Part24 スレリンク(tech板)
Part23 スレリンク(tech板)
Part22 スレリンク(tech板)
Part21 スレリンク(tech板)
Part20 スレリンク(tech板)
Part19 スレリンク(tech板)
Part18 スレリンク(tech板)
Part17 スレリンク(tech板)
Part16 スレリンク(tech板)
Part15 スレリンク(tech板)
Part14 スレリンク(tech板)
Part13 スレリンク(tech板)
Part12 スレリンク(tech板)
Part11 スレリンク(tech板)
Part10 スレリンク(tech板) ※
Part09 スレリンク(tech板) ※
Part08 URLリンク(pc5.2ch.net)
Part07 URLリンク(pc5.2ch.net)
Part06 URLリンク(pc5.2ch.net)
Part05 URLリンク(pc5.2ch.net)
Part04 URLリンク(pc5.2ch.net)
Part03 URLリンク(pc5.2ch.net)
Part02 URLリンク(pc3.2ch.net)
Part01 URLリンク(pc3.2ch.net)
3:デフォルトの名無しさん
09/06/19 12:40:19
【このスレの前身 VisualC++相談室 過去スレ】
part 1 URLリンク(piza.2ch.net)
part 2 URLリンク(piza.2ch.net)
part 3 URLリンク(piza2.2ch.net)
part 4 URLリンク(pc.2ch.net)
part 5 URLリンク(pc.2ch.net)
part 6 URLリンク(pc.2ch.net)
part 7 URLリンク(pc.2ch.net)
part 8 URLリンク(pc.2ch.net)
part 9 URLリンク(pc5.2ch.net)
【関連スレ】
■MFC相談室 mfc20d.dll■
スレリンク(tech板)
Win32API質問箱 Build80
スレリンク(tech板)
【C++】 DirectX初心者質問スレ Part23 【C】
スレリンク(tech板)
C言語なら俺に聞け(入門篇) Part 49
スレリンク(tech板)
【初心者お断り】ガチ規格準拠C専用スレ Part133
スレリンク(tech板)
C++相談室 part70
スレリンク(tech板)
C/C++の宿題片付けます 127代目
スレリンク(tech板)
【初心者歓迎】C/C++室 Ver.66【環境依存OK】
スレリンク(tech板)
4:デフォルトの名無しさん
09/06/19 12:40:37
【関連サイト】
猫でもわかるプログラミング
URLリンク(www.kumei.ne.jp)
MSDN ライブラリ ※変更された
URLリンク(msdn.microsoft.com)
Platform SDK Update ※変更された
URLリンク(www.microsoft.com)
URLリンク(www.google.co.jp)
Platform SDKの中で一番新しいのはこっち
Microsoft Windows Server 2003 R2 Platform SDK Web Install
URLリンク(www.microsoft.com)
(ISO版などあり)
これ以降、Platform SDK + .NET Framework SDKとして
Windows SDKが公開されていて、その中で一番新しいのはこれ。
Windows SDK for Windows Server 2008 and .NET Framework 3.5
URLリンク(www.microsoft.com)
少し前のバージョン(Vista + .NET 3.0の初期版)には日本語版もあったけど、
日本語化されているのは専ら.NET Framework部分だけ。
VC6対応の、最後のPSDKはここ。
URLリンク(www.microsoft.com)
5:デフォルトの名無しさん
09/06/19 13:46:33
Visual c++ で hello world と表示させる方法を教えてください。
ソースファイルに以下のプログラムを書いてもエラーが出ます。
ヘッダーファイルにも何か書かないとダメですか?
#include <stdio.h>
{
printf ("hello world\n");
return 0;
}
6:デフォルトの名無しさん
09/06/19 13:48:30
もう一度>>1をよく読み直せ
7:デフォルトの名無しさん
09/06/19 13:51:18
本当にこれだけ書いたのか?
8:デフォルトの名無しさん
09/06/19 13:52:15
>>5
mainがない。
9:デフォルトの名無しさん
09/06/19 13:52:34
#include <stdio.h>
int main(void)
{
printf ("hello world\n");
return 0;
}
10:デフォルトの名無しさん
09/06/19 13:53:48
>>7-8
#include <stdio.h>
main()
{
printf ("hello world\n");
return 0;
}
これだけ書きました。エラー1です。
11:デフォルトの名無しさん
09/06/19 13:54:57
>>9
エラーでませんでした。みなさん、ありがとうございました。
12:808
09/06/19 14:14:31
「スレ立てるまでも無い質問スレ」の
テンプレ作成してくれた>>809-812さん、スレ立てしていただいた>>818さん、
本当にどうも助かりました。このスレは、私の生きがいみたいなもので・・
立てられなくて困っていたので、本当に助かりました。どうもありがとう。
13:デフォルトの名無しさん
09/06/19 14:18:50
うひゃー。うれしいな。僕の居場所が一つ元に戻った( ´Э`)
14:デフォルトの名無しさん
09/06/20 20:38:54
VC2008(MFC)使ってるんだけど、デバッグが出来るメモ帳位にしか使えてないです。
もっと高度なIDEの使い方を勉強したいので、お勧めのサイトや本があったら教えて下さい。
15:デフォルトの名無しさん
09/06/20 21:34:16
MFCなのにメモ帳位にしか使えてないんなら
IDEを必要としていないと言うことだ。
必要もないのに勉強するだけ無駄
16:デフォルトの名無しさん
09/06/20 21:37:23
IDEの使い方の解説ってあんまりないな。
人の使いかを見てて「え、こんな機能あったの?」って気づくことがある。
17:デフォルトの名無しさん
09/06/20 23:48:30
Visual C++のExpressEditionって
C#とかVB.bet
などと違って
.netFrameworkとかいうやつ入れなくても動かせるの?
18:デフォルトの名無しさん
09/06/20 23:48:44
>>14
>もっと高度なIDEの使い方
具体的にはどんな使い方が君とっての「高度な」使い方になるのかな?
19:デフォルトの名無しさん
09/06/20 23:49:51
>>17
まずは試してみよ
20:デフォルトの名無しさん
09/06/20 23:55:02
>>19
質問の仕方悪くてすまん。
作成俺が必要かってことじゃなくて
作ったexeを実行するために必要かってこと。
.net必須だとexeネットで配布しても実行できない人多いよね。
C#とかVB.netだとHello World一行表示するプログラムでも.netFramewok必要だったが
C++は必要ない?
21:デフォルトの名無しさん
09/06/20 23:59:24
>>20
ライブラリをスタティックリンクしてEXEを作成すると、ランタイムライブラリの類は不要。単体で実行できる。
22:デフォルトの名無しさん
09/06/21 00:49:42
レスしてくれた人ありがとう。
>>18
ほんの一例なんだけど、ウィンドウにCWnd::SendMessage(Postも)とか良くするよね。
その時に、
#define WM_USER_EXAMPLE (WM_USER+1)
LRESULT OnUserExample(WPARAM, LPARAM);
ON_MESSAGE(WM_USER_EXAMPLE, OnUserExample)
LRESULT CExampleWnd::OnUserExample(WPARAM wParam, LPARAM lParam)
{
return 0;
}
こんなの、いちいち適所に書かなきゃ(コピペ)ならなくて面倒ですよね?
何か一つ忘れただけで、コンパイルエラーとかうっとうしいし。
これを一発で(綺麗に)入れてくれる機能とか?低レベルな使い方だったらゴメン。
あくまでも自分にとって高度なだけです。
後は自分が思いもつかないような便利な使い方が沢山ありそうなので、そういうのを
勉強したいと思いました。やっぱりMSDNコツコツ読むしかないですかね。
23:デフォルトの名無しさん
09/06/21 01:31:28
なんとなくできそうな気もするけど、やり方は僕にもわからない。
>#define WM_USER_EXAMPLE (WM_USER+1)
#define WM_USER_EXAMPLE (WM_APP+1) // こっちにしとき。
24:デフォルトの名無しさん
09/06/21 02:03:38
それはコードスニペットが近い機能だと思う。
そもそも、IDEの支援を当てにするなら、C#とかにしたほうがいい。
C++は、インテリセンスが運良く出て来れば万々歳って言語だから。
25:デフォルトの名無しさん
09/06/21 08:49:37
>>21
初心者ですみませんが、EXEファイルはどうやって作るんですか?
26:デフォルトの名無しさん
09/06/21 10:45:50
コード書いてビルド
27:デフォルトの名無しさん
09/06/21 17:53:23
DLLはプロジェクト分けてビルドしないといけないの?
28:デフォルトの名無しさん
09/06/21 18:06:44
分けなくてもいいよ
29:デフォルトの名無しさん
09/06/21 18:10:30
ソリューションは分けなくてもいいけど、プロジェクトは分ける
30:デフォルトの名無しさん
09/06/21 18:35:09
分けなくてもいいよ
31:デフォルトの名無しさん
09/06/21 19:25:13
具体的にどうやればできるんでしょうか?
dllはなんとかビルドできたんですがmainのほうのプロジェクトがビルドできません
32:デフォルトの名無しさん
09/06/21 19:34:48
具体的にどうできないのかを書かないなら一生ヘルプとgoogle先生とにらめっこしてろよ
ここはコミュニケーションが取れる人間のための場所だ
33:デフォルトの名無しさん
09/06/21 19:57:29
dllのほうのproject
[dll.h]
#ifdef DLL
#define DECLSPEC __declspec(dllexport)
#else
#define DECLSPEC __declspec(dllimport)
#endif
void DECLSPEC DLLFunc();
[dll.cpp]
#include <iostream>
#define DLL
#include "dll.h"
void DLLFunc() {std::cout << "DLLFunc()" << std::endl;};
34:デフォルトの名無しさん
09/06/21 19:58:11
mainのほうのproject
[main.cpp]
#include "dll.h"
int main(void) {
DLLFunc();
return 0;
}
・ソリューションエクスプローラー上でdll.hをコピー
・dllのほうのprojectのプロパティ->構成の種類をDLL
・依存関係でmainの依存先をdllに
・ソリューションのビルド
ここまでやったんですが、
・デバッグで使用する実行ファイル名を指定してください
といわれたので、何もいじらずにC:\WINDOWS\system32\regsvr32.exeを選択
したんですが、デバッグなしで開始したら
・DLLが指定されていません
と表示されてなにも実行されません
なにが問題なんでしょうか
35:デフォルトの名無しさん
09/06/21 19:59:04
書き忘れましたdll.hは実ファイルの方もmainのprojectにコピーしました
36:デフォルトの名無しさん
09/06/21 20:46:27
>>34
2つは同じソリューションだよね。
mainのほうをスタートアッププロジェクトにしている?
あと、regsvr32はこういう普通のDLLには無関係。
37:デフォルトの名無しさん
09/06/21 21:30:33
スタートアッププロジェクトをmainに設定したら期待通りに動きました
どうも有難うございました
38:デフォルトの名無しさん
09/06/22 07:53:32
VC6のリソースエディタにてダイアログボックスにタブコントロールをつけたのですが
画像のようにタブ内の編集を行いたいのです
どのようにすれば編集は可能なのでしょうか?
URLリンク(sakuratan.ddo.jp)
サンプルソースなどあると助かります
39:デフォルトの名無しさん
09/06/22 10:50:52
>>38
どうやったらその画面になるの?
ソースコードの画面から切り替えられないよ。
横レスすまん。
40:デフォルトの名無しさん
09/06/22 13:51:08
スレ勃てるまでもないスレでシカトされてしまったんでこっち来ました。
思いつきでこんなクラス書いてみました。
class CLocalTime
{
private:
char buf[32];
SYSTEMTIME SysTime;
public:
CLocalTime()
{
}
operator char *();
};
CLocalTime::operator char *()
{
GetLocalTime(&SysTime);
sprintf_s(buf, 31, "%04d/%02d/%02d %02d:%02d:%02d",
SysTime.wYear, SysTime.wMonth, SysTime.wDay,
SysTime.wHour, SysTime.wMinute, SysTime.wSecond);
buf[31] = '\0';
return buf;
}
これで、例えば printf なんかで使うときに、
printf("通過![%s]\n", (char *)CLocalTime());
ときちんとキャストすればちゃんと表示されるんですが、
printf("通過![%s]\n", CLocalTime());
だけで表示させるにはどうすればいいんでしょうか。operator CLocalTime &() を
追加してみましたがダメでした。CAtlStringA なんかは後者できちんと表示されています。
41:デフォルトの名無しさん
09/06/22 14:25:20
C++言語の質問だったらC++スレへ
42:デフォルトの名無しさん
09/06/22 18:31:26
>>40
「ダメ」だけだから無視される。エラーが出たならエラーメッセージ、そうでないならどうダメだったか書くのが常識。
43:デフォルトの名無しさん
09/06/22 20:31:33
>>40
CStringの定義を辿ってみろ。
メンバ変数が文字列へのポインタ1つしかない。
だから、可変個引数でもconst char*を渡したかのような振る舞いが可能になっている。
44:デフォルトの名無しさん
09/06/22 21:07:43
素直に class CLocalTime::ShowTime() 関数作る
45:デフォルトの名無しさん
09/06/23 16:20:56
private メンバ変数への値を返すのはいかがなものかと
46:デフォルトの名無しさん
09/06/23 17:30:15
>>40
キャストなしで可変長引数の関数にクラスを渡したら、
どのメンバ関数が呼び出されるんだろうと思って、MFCの
CStringで確認してみたら、クラスがそのまま値渡しされてる
だけだったな。
CStringの場合、クラスのメンバ変数がchar*だけだったから、
結果的にchar*の変数を渡したのと同じ動きになってた。
(const char*)でキャストすると、operator char*()が呼ばれて、
メンバ変数のchar*の変数を渡してた。(可変長引数の関数に
渡される値は結果的に同じ)
そのCLocalTimeは、メンバ変数が二つあるから、それが二つとも
スタックに詰まれて、おかしな動きになってるんだろうな。
47:デフォルトの名無しさん
09/06/23 17:59:16
ひょっとして1project 1クラスが基本なの
48:デフォルトの名無しさん
09/06/24 06:04:29
VC2008EEを使っています。
デバッグ中にアサートで停止した時に、実行したコードを1行ずつ巻き戻す事ってできないでしょうか?
49:デフォルトの名無しさん
09/06/24 06:29:00
>>48
巻き戻し自体はできない
しかし、現在の実行行(正確には次に実行する行)はアセンブラレベルではは eip レジスタに格納されているので、
逆アセンブラウィンドウを開いて、このレジスタの値を書き換えることで、
実行済みの行を含む任意の箇所にジャンプできる
この機能を使うことで、変数の値を書き換えながら、実行済みの行を無理やり再実行させたりできる…はず(うろ覚え)
当然、レジスタやメモリの値も自分で書き戻してやる必要があります
50:デフォルトの名無しさん
09/06/24 07:08:05
>>49
thx
レジスタやメモリいじるのは大変そうだ・・・。
51:デフォルトの名無しさん
09/06/24 15:37:45
ソリューション内でStdAfxを共有したい場合はどう設定すればいいんでしょうか?
52:デフォルトの名無しさん
09/06/24 17:01:51
>>51
お店に行き
10万支払う
53:デフォルトの名無しさん
09/06/24 17:12:03
どこのお店でしょうか?
54:デフォルトの名無しさん
09/06/24 17:52:26
>>53
ggrks
値段も
ggrks
55:デフォルトの名無しさん
09/06/25 00:00:28
普通のプログラム(hello world出力のみなど)をつくりたいときは、どのプロジェクトの種類を選んだらいいのですか?
56:デフォルトの名無しさん
09/06/25 00:05:51
コンソール アプリケーション
57:デフォルトの名無しさん
09/06/25 00:12:54
空のプロジェクト
58:デフォルトの名無しさん
09/06/26 18:18:00
C:\Documents and Settings\maria15\My Documents\Visual Studio 2008\Projects\aab\Debug
と
C:\Documents and Settings\maria15\My Documents\Visual Studio 2008\Projects\aab\aab\Debug
があるんだけど、なんで?
C:\Documents and Settings\maria15\My Documents\Visual Studio 2008\Projects\aab\Debug
にだけ、aab.exe があります。
これだけを配布すればいいんですか?
59:デフォルトの名無しさん
09/06/26 18:19:13
aab\Release\aab.exe を配布します。
Debug版はランタイムライブラリがないので動きません。
60:デフォルトの名無しさん
09/06/26 18:34:57
>>59
ありがとう。
aab\Release
のフォルダがありません。
どうすればファイル作成できますか?
61:デフォルトの名無しさん
09/06/26 18:38:54
aab\aab\
62:デフォルトの名無しさん
09/06/26 18:41:03
ツールバー or 構成マネージャを使って、アクティブを Debug から Release に切り替えろ。
63:デフォルトの名無しさん
09/06/26 19:00:57
>>61-62
\aab\Release
ができました。
フォルダの中に
aab.exe
aab.pdb
が作成されました。
両方ZIPでまとめて配布ですか?
64:デフォルトの名無しさん
09/06/26 19:02:19
exeだけ
65:デフォルトの名無しさん
09/06/26 19:08:27
>>64
わかりました(^^)!
66:デフォルトの名無しさん
09/06/26 19:42:05
(^^)<ホイミン!!
67:デフォルトの名無しさん
09/06/26 19:43:41
ねえ、今VC6で
しこしこMFCやってんだけどそろそろ
買い換えようと思うんだけど、VC6からVS2008に
あくまでMFC使用しかしないということで移行する価値ってある?
68:デフォルトの名無しさん
09/06/26 19:52:47
★2009年最新在宅ワーク!★☆13
URLリンク(doudu.youkoso.sa-suke.com)
69:デフォルトの名無しさん
09/06/26 20:16:10
VS2010がもうすぐ出る
70:デフォルトの名無しさん
09/06/26 20:55:22
そういうために評価版がある。
71:デフォルトの名無しさん
09/06/27 03:11:33
いくつかのCソースファイルとヘッダファイルとmakefile(よく分かりません)
が入ったフォルダを落としたんですが
こういう形であるソースコードをvisual studio 2003で
コンパイル、実行するにはどうすればいいですか?
72:デフォルトの名無しさん
09/06/27 03:15:43
コマンドラインで設定用のバッチファイルを呼んでからnmake
73:デフォルトの名無しさん
09/06/27 03:21:02
#include <stdio.h>
int main(void)
{
char a;
int x;
printf("数字は?");
scanf_s("%d",&x);
printf("文字は?");
scanf_s("%c",&a);
printf("数字は%dです。\n",x);
printf("文字は%cです\n",a);
return 0;
}
正常に動作しません。エラー、警告ともにでませんが、デバッグで異常がでます。
「
数字は?(:8と入力する)8
文字は?数字は8です。
文字は
です。
」
と出ます。文字の入力ができません。どうしてでしょうか?
74:デフォルトの名無しさん
09/06/27 03:22:05
>>72
すみません。
設定用のバッチファイルを呼ぶってどうすればいいんですか?
75:デフォルトの名無しさん
09/06/27 03:25:27
>>73
scanf()は使わんから細かい挙動を知らんけど、
表示から考えると、8のあとの改行が%cでよまれてるっぽいな。
76:デフォルトの名無しさん
09/06/27 03:33:39
>>75
本当ですね。
「
数字は?(8gと入力)8g
文字は?数字は8です。
文字はgです
」
と表示されます。やっぱり謎です。
77:デフォルトの名無しさん
09/06/27 07:40:10
スレ違いくさいけど
scanfは、標準入力から直接受け取らないで、バッファに一旦入力した文字を格納する。
8を入力したとき、バッファには"8","\n"が格納される
それをscanfが読み込んで、バッファには"\n"が残っている
で、次のscanfでは「入力待たなくてもバッファの残りを代入すればよくね?」と考えて改行を読み込んじゃう
8gと入れたときは\nをgに置き換えてるだけ
78:デフォルトの名無しさん
09/06/27 08:34:04
scanf関数は、罪作りな関数だと思うよ。
入門しか使わないくせに、癖が強すぎて入門者殺し
実用的なプログラ身ではscanf関数はまったく使わない
79:デフォルトの名無しさん
09/06/27 11:54:19
すいません。VC初心者です。
Visual Studio 2008 Express Edition と platform SDK で Win32プログラムを
作りたいんだけど、普通のC言語で作れますか?
80:デフォルトの名無しさん
09/06/27 11:57:24
>>78
どうせ初心者にはおまじないと大差ないレベルなんだから
安全な方法をブラックボックスとして与えればいいのにねー
なんでscanfなんだろう
81:デフォルトの名無しさん
09/06/27 12:22:03
C言語ができた当時はアセンブラレベルが当たり前だったから
scanf程度でも十分初心者に優しかった。
82:デフォルトの名無しさん
09/06/27 16:27:32
>>79
できる
83:デフォルトの名無しさん
09/06/28 10:25:18
vc++がc++0xに対応するのはいつごろなんですか?
template typedefとか使いたいんですけど
84:デフォルトの名無しさん
09/06/28 14:48:05
こんなところで日本語で質問しても誰も見てないと思うが
85:デフォルトの名無しさん
09/07/02 22:40:17
アラビア語じゃないとね
86:デフォルトの名無しさん
09/07/03 00:06:09
いちいち文字参照で書き込まないといけないから面倒臭いんだよね、2chだと
87:デフォルトの名無しさん
09/07/03 15:15:44
>>83
次のVisual C++ 2010から少しずつ始まる。
URLリンク(www.codeguru.com)
88:デフォルトの名無しさん
09/07/04 01:09:09
VC++2008EEでWin32アプリを作ってます。
ウィンドウに配置したコントロールのDisabledの値を変更するにはどうすればいいでしょうか?
89:デフォルトの名無しさん
09/07/04 01:23:24
>>88
EnableWindow
90:デフォルトの名無しさん
09/07/07 17:49:35
他人の作ったWindowsアプリのメンテナンスをすることになりました。(製作者は行方不明です)
が、最初のところでいきなりつまづいてしまいました。
プログラムのエントリポイントがどこにあるのかわからないのです。
ソースのあるフォルダ全体に対してgrepをかけてみたのですが、mainもWinMainも見あたらず、
リンカのオプションにも/ENTRYは使われていませんでした。
プロジェクトファイルにもEntryPointSymbolの記述がありません。
私はこれ以外にエントリポイントを指定する方法を知らないのですが、
あとはどこを見ればいいのでしょう?
環境はVisual Studio 2008です。
91:デフォルトの名無しさん
09/07/07 17:55:56
言語がC++なのは確かなことだと思うが、MFCで作成されたものならどちらのエントリポイントもソース中には存在しない。
92:デフォルトの名無しさん
09/07/07 18:05:05
>>90
MFCならプロジェクト名.cppにInitInstance()があるからその辺りがほぼエントリポイントだが、
そのレベルだととてもじゃないがメンテナンスは無理。
先ずはMFCアプリの解説本を読んで簡単なMFCアプリを作れるようになってからだと思う。
# 逆に言えば、エントリポイントなんて意識する必要ないことを知っていれば簡単なんだけどね。
93:デフォルトの名無しさん
09/07/07 18:22:46
すいません。書き忘れていましたが、InitInstanceもgrepで探したんですが存在しませんでした。
で、Visual StudioでF11を押したら、とりあえずエントリポイントっぽいところが出てきました。
恥ずかしいことに、ステップ実行にはブレークポイントが必須だと思い込んでいました。
いきなり頭からステップ実行できたんですね。
そのあと順にステップ実行していったら、別のDLLの中でインスタンスの初期化をしていました。
どおりで、ソースをいくら見てもわからないわけです。
とりあえず「MFC」でぐぐったら、どういう物なのかわかってきました。
ありがとうございました。
94:デフォルトの名無しさん
09/07/07 18:32:09
で、MFCなの?
.netだったりしてないよね?w
95:デフォルトの名無しさん
09/07/07 20:19:45
>>89
ありがとうございます。
もう一つ質問です。
2008EEのWin32アプリでは「クラス追加ウィザード」というのは使えないのですか?
使えない場合、自前でやる方法があれば教えてください。
96:デフォルトの名無しさん
09/07/07 21:20:01
質問です
input関数で.txtのデータを読み込むのですが
読み込んでTextBoxに表示させるとvbTabで空けた空白の長さが整わないのです
どうすれば整いますか?
FileOpen(1, fname, OpenMode.Input)
TextBox4.Text = "クラブ名" & vbTab & "男子部員数" & vbTab & "女子部員数" & vbCrLf & vbCrLf
Do Until EOF(1)
Input(1, club) : Input(1, dansi) : Input(1, josi)
TextBox4.Text = TextBox4.Text & vbTab & club & dansi & josi & vbCrLf
Loop
FileClose(1)
環境はVisual Basic 2008 Express Edition
Windows Formでやりました
97:デフォルトの名無しさん
09/07/07 21:23:26
>>96
スレ違い
98:デフォルトの名無しさん
09/07/07 21:31:26
>>97
だと思うなら誘導しろ。
99:デフォルトの名無しさん
09/07/07 21:36:24
>>98
VBのスレを知らんから誘導できん。すまんな。
100:デフォルトの名無しさん
09/07/07 21:43:30
すいません、スレタイちゃんと読んでませんでした
Visual まで読んで あっVB とか思い込んでました
101:デフォルトの名無しさん
09/07/08 02:06:18
連番のjpegファイルからmotion jpegのaviファイルを生成したいのですが、
そういう機能を持った商用の良いライブラリはないでしょうか。
PIC Video codec等はアプリケーションに見えるのですが、
ライブラリとして使えないものでしょうか。
102:デフォルトの名無しさん
09/07/08 10:17:00
OpenCV
103:デフォルトの名無しさん
09/07/08 20:27:55
vc++eeでwin32apiアプリケーションを作る勉強をしてるのですが
CppUnitを導入しようと思いまして、テストの出力を出力ウィンドウなどに送りたいと思います。
TRACEマクロはMFCじゃないと使えないようですし、何か方法あるのでしょうか?
コマンドプロンプトを起動してcoutしても出ないようですし。
よろしくお願いします。
104:103
09/07/08 20:34:31
すいません
見つけました
OutputDebugStringですね
散々探して見つからなくて、書き込んでちょっと探すと見つかる・・・
このパターンが多いな
失礼しまいた。
105:デフォルトの名無しさん
09/07/09 00:56:20
2日前にVS2008EEを入れてC++の勉強を始めました。
テンプレートの一番最初にあるWindowsフォームアプリケーションを選択して
フォームにボタンを置いてネットのサンプルをそのままコピペしたのですがコンパイルできません。
書き足したのはこの1行だけです。
(前略)
private void button1_Click(object sender, EventArgs e)
{
HWND hWnd = FindWindow("無題", null); //←追加
}
(以下略)
どう直せばいいんでしょうか?
106:デフォルトの名無しさん
09/07/09 02:18:43
>>105
その1行自体は<windows.h>をインクルードすればいいのだが、
フォームアプリケーション(というよりCLRプロジェクトすべて)は、
<windows.h>ベースの仕組みではないから、お前が見ているであろうサンプルすべてが参考にならないぞ。
107:デフォルトの名無しさん
09/07/09 02:37:34
URLリンク(opencv.jp)
動的輪郭に興味があり↑の物体追跡(Object Tracking)のサンプルコードを動かそうと思ったのですが、
warning C4305: '初期化中' : 'double' から 'float' へ切り詰めます。
warning C4305: '初期化中' : 'double' から 'float' へ切り詰めます。
warning C4305: '初期化中' : 'double' から 'float' へ切り詰めます。
error C3861: 'snprintf': 識別子が見つかりませんでした。
エラー 1、警告 3
となってしまいます。
opencvの設定についてはURLリンク(imagingsolution.blog107.fc2.com)を参照して行いました。
環境はVisual Studio 2008です。
問題点のご指摘よろしくお願いします。
108:デフォルトの名無しさん
09/07/09 06:01:38
たぶんそれVC用のソースじゃないから
VC用のソースを探すかVC用に修正して使う。
109:デフォルトの名無しさん
09/07/09 11:55:32
>>106
ありがとうございます。
VC++でぐぐっても、対象となるコンパイラのバージョンが明記されてないサイトが多くて困っています。
今のところVC++6.0やVS2005のサイトが多いでしょうか、
ある程度知識が付けば、ソースを見て判別できるようになると思うのですが。
最初に選ぶプロジェクトのテンプレートを変えれば、ヘッダの追加をしなくてもそのまま動く環境になりますか?
それとも2005用のソースを2008でコンパイルするには、毎回手直しが必要になってしまうものなんでしょうか。
110:デフォルトの名無しさん
09/07/09 13:15:51
>>109
いや、大抵のことはバージョン問わず使える。
VC++で作れるアプリには、ネイティブアプリとマネージアプリと2種類あって、これがまるで別物。
Windowsフォームアプリケーションのプロジェクトは後者。<windows.h>を使うのは前者。
VC++のプロジェクトの中では、Win32アプリケーションなどが前者に属する。
自分が何を使って作りたいのか決め、それについての解説だけを追わないと混乱する。
111:デフォルトの名無しさん
09/07/09 14:19:23
>>110
わかりました。
つまり、昔ながらのstatic xxx main関数があって、ソースの先頭に#include hoge.hが並んでいるような物が
今はネイティブアプリと分類されている、という解釈でよいでしょうか?
112:デフォルトの名無しさん
09/07/09 14:38:31
それは標準C/C++
113:デフォルトの名無しさん
09/07/09 18:17:12
あまりにも自分が無知すぎるので少しぐぐってきました。
「新しいプロジェクト」でテンプレートが5つのグループに分かれていますが、
CLRのグループに属しているのがマネージドアプリなんでしょうか。
すると一番下のWin32というのが、昔SDKと呼ばれていたものに相当するのかな?
古いサンプルを動かしたいときはMFCかWin32を選べばよさそうに思えます。
こんな理解で合ってますか?
114:デフォルトの名無しさん
09/07/09 18:41:18
その5つぐらい全部試してみたって1時間もかからないだろうし、
自分の目で確認したほうが人に聞くよりはるかに理解しやすい。
115:デフォルトの名無しさん
09/07/09 18:54:05
なんか初心者以前の質問が多いけど
最近はVCの入門書売ってないのか?
116:デフォルトの名無しさん
09/07/09 19:07:48
VS2008でC#を使う、みたいに特定の環境に向けた本ならたくさんあるけど、
移植とか移行とか処理系の世代間の差異を解説したものは少ないと思うよ
ライブラリの比較とか、ソースの記述方法の変化みたいな話はCマガジンとかでよく見る
117:デフォルトの名無しさん
09/07/09 19:44:31
いや、だからまず自分の環境用のそういう本買って初心者になれよって話だろ。
118:デフォルトの名無しさん
09/07/09 22:23:24
ここは入門者もOKのスレじゃん
119:デフォルトの名無しさん
09/07/09 23:33:39
初心者ですが質問いいでしょうか?
officeファイル(ppt,pptx,doc,docx)からファイルの情報(テキスト)を取得できる
プログラムは作れますか?
できればofficeの入ってないPCで実行したいです
120:デフォルトの名無しさん
09/07/09 23:35:03
スレ違い
121:デフォルトの名無しさん
09/07/10 01:03:46
どこのスレにいけばいいでしょうか?
122:デフォルトの名無しさん
09/07/10 08:36:41
>119
現実にそういうプログラムが存在するか調べる。
存在するならどうやってるか調べる。
123:デフォルトの名無しさん
09/07/10 10:57:53
>>122
初心者に優しくないのなら書き込むな。
立ち上げるな
124:デフォルトの名無しさん
09/07/10 11:30:07
ここは子供電話相談室か?
小学生なら小学校の教科書の範囲を勉強すればいいし
初心者なら入門書の範囲を勉強すればいい
教科書の範囲外は卒業してから
125:デフォルトの名無しさん
09/07/10 13:40:10
このスレ終了
126:デフォルトの名無しさん
09/07/10 13:53:58
>>119
取り出したい情報による。
ファイルサイズとか更新日時なんてのはOfficeとか関係ないし
作者名や会社名は文字列がそのまま入ってるから、それっぽいデータなら
なんとか取り出せないこともない。
ちゃんとしたBuiltinDocumentPropertiesなんかの情報が欲しいんだと、
Officeのインストールされてないマシンではちょっと難しい。
それこそファイルのヘッダから構造体のポインタを追っかけるような
プログラムになると思う。初心者スレで質問してるレベルでは無理。
127:デフォルトの名無しさん
09/07/10 14:11:45
>>120>>122>>124
>初心者スレで質問してるレベルでは無理。
=初心者ぷっ!w
128:デフォルトの名無しさん
09/07/10 14:37:06
OOoでテキスト出力すれば良いんじゃね?
129:デフォルトの名無しさん
09/07/10 15:16:06
次レス予測
「会社のマシンなのでOOoとか勝手にインストールできないんです」
130:デフォルトの名無しさん
09/07/10 18:11:21
「OOoって何ですか?」ではないかと
131:デフォルトの名無しさん
09/07/10 19:46:26
>>119
どの程度のことをやりたいかにもよるが、いずれにせよ基本的に適当なライブラリを見付けてそれを使えと言うことになる。
ただし、2007形式のほうはXMLをZIPで固めただけなので、その手のライブラリがなくてもなんとかなるかもしれない。
参考: URLリンク(www.atmarkit.co.jp)
ただ、Officeの存在を当てにしていいならそのほうがずっと簡単。
OfficeそのものがプログラムからOffice形式のファイルを読み書きその他するライブラリとして機能する。
132:119
09/07/10 20:54:14
お返事ありがとうございます
OpenOfficeで開けばいいのですがそこを自動化するプログラムを作成したいです。
>>126
具体的には以下の情報です
docファイル 本文、作者、更新時間
pptファイル 使われているテキスト、ノート、作者、更新時間
>>131
2週間ほど勉強してdocx,pptxはそのzip展開して情報を取り出すことまでできました。
docファイルとpptファイルがどうしようか悩んでいます。
バイナリ仕様が公開されているようですがどうも理解できません
>>126さんにあるようにヘッダから構造体、ポインタを勉強。
又は、利用できるライブラリ(フィルターでいいんでしょうか?)を探す。
この方法でいいんでしょうか?
133:デフォルトの名無しさん
09/07/10 20:59:50
>131
そんなのとっくの昔にやってるってさ
134:デフォルトの名無しさん
09/07/10 21:23:49
>>132
XDOC2TXT 呼び出せよ 割と使っているのは多い
135:デフォルトの名無しさん
09/07/10 21:29:37
フィルタ活用事例
GoogleXdoc
Namazu for Win32
Hyper Estraier
Meadow2
MiGrep
VxEditor
smoopy
Transwise
EBView
サーチクロス
xdoc2txtはPDF,WORD,EXCEL,一太郎などの各種バイナリ文書から、テキスト要素を抽出する汎用テキストコンバータであり、
Windowsのコマンドラインで動作します。
xdoc2txtは各種文書の構造を直接解析しているため、単独で変換できます。
WORDや Acrobatなど、作成元のアプリケーションをインストールする必要はありません。
高速に動作するので、各種全文検索エンジンのフィルタに最適です。
ワープロ文書の種類は、拡張子から判別します。次の拡張子のファイルに対応しています。
リッチテキスト Microsoft WORD 2007(OOXML) Microsoft Excel 2007(OOXML) Microsoft PowerPoint 2007(OOXML)
.doc Microsoft WORD ver5.0/95/97/2000/XP/2003 Microsoft Excel ver5.0/95/97/2000/XP/2003
.ppt Microsoft PowerPoint 97/2000/XP/2003 OpenOffice.org Open Document
一太郎 ver5 一太郎 ver6 一太郎 ver7 一太郎 ver8/9/10/11/12
OASYS/Win 新松/松5/松6 Lotus 123 Windows3.1 Write Adobe PDF Webアーカイブ HTML
OutlookExpressのエクスポート形式
URLリンク(www31.ocn.ne.jp)
136:デフォルトの名無しさん
09/07/10 21:38:28
どうみてもVCとは全く関係ない展開なんだが
137:デフォルトの名無しさん
09/07/10 21:47:52
結局VC全然使う必要なかった
138:デフォルトの名無しさん
09/07/10 21:55:41
xdoc2txt調べてみます
ありがとうございました。
こういう質問はどこでするのが適切でしたか?
139:デフォルトの名無しさん
09/07/10 22:12:28
さすがにそれぐらい考えろや…
officeでもプログラムでも、いくらでもキーワード出るだろ
140:デフォルトの名無しさん
09/07/11 22:39:34
#pragma once
ってプリプロセッサですよね?
どうやってプリプロセッサで
インクルード1回だけ
ってのを実現しているのでしょうか?
141:デフォルトの名無しさん
09/07/11 22:42:08
>>140
一般的なインクルードガードの手法はご存じない?
142:デフォルトの名無しさん
09/07/11 22:45:41
質問です。
タスクトレイにアイコンを表示する方法を調べています。
調べてみたら、Shell_NotifyIconという関数を
使用すればいけることが分かりました。
とりえず、コンパイルだけ通してみようと試しましたが、
うまくコンパイルが通りません。
どうすれば、コンパイルを通せるようになるでしょうか?
エラーメッセージが
error LNK2028: 未解決のトークン (0A00000F)
"extern "C" int __stdcall Shell_NotifyIcon・・・・で参照されました。
error LNK2019: 未解決の外部シンボル
"extern "C" int __stdcall Shell_NotifyIconW・・・・で参照されました
Shell_NotifyIconを使用している関数の中身は
NOTIFYICONDATA notif;
Shell_NotifyIcon(NIM_ADD, ¬if);
しか書いていません。
環境はVC++2008 Express EditionのWindowsFormで作成しています。
よろしくお願いします。
143:140
09/07/11 22:49:33
>>141
存じ上げています。
#ifndef ***
#define
本ソース
#endif
ですよね。
プリプロセッサは
コンパイラに引き渡す前の字句の置き換えを行うものだと
いう認識なのですが、
そうだとすると
#pragma once
ではどうやっているのか不思議だなぁということです。
144:デフォルトの名無しさん
09/07/11 22:58:56
>>143
それなら話は簡単。内部的には同じことをやっていると思われ。
例えば/usr/include/stdio.hに#pragma oneceと書いてあったら、
#ifndef _USR_INCLUDE_STDIO_H
#define _USR_INCLUDE_STDIO_H
...
#endif
と書いてあると見做せばいいわけだ。
あとはここも要チェック。
スレを勃てるまでもないC/C++の質問はここで 11
スレリンク(tech板:686番),687
145:デフォルトの名無しさん
09/07/11 23:07:28
>>140
ようするにプリプロセッサが特別扱いで処理している。
字句の置き換えはやることの1つに過ぎない。
>>142
プロジェクトのプリパティのリンカの「追加の依存ファイル」のところにshell32.lib追加してみたら?
146:デフォルトの名無しさん
09/07/11 23:08:13
>>144
なるほど。
ファイル名を利用しマクロ化しているなどの実装が考えられるというわけですね。
ありがとうございました。
147:デフォルトの名無しさん
09/07/11 23:11:55
>>142
#include <shellapi.h>
#pragma comment(lib, "shell32.lib")
148:142
09/07/11 23:22:17
>>145
>>147
ご回答ありがとうございます。
>>147さんの方法でコンパイルが通りました。
ありがとうございました。
149:デフォルトの名無しさん
09/07/12 10:23:17
本屋に行ったけどCたすたすの本は少なく
#が多いんだけど
どっちで勉強してもいいんだろうか
MFCとかCOMとかAPIっていまさら何ですかね
150:デフォルトの名無しさん
09/07/12 11:08:52
>>149
そりゃ両方できた方がいい
MFCが必要かどうかは作りたい物によるけど、COMとAPIは知らんと話にならんぞ
151:デフォルトの名無しさん
09/07/12 11:41:42
ありがとうございます
じゃあ、その二つは早急に習得します
一か月ぐらいでかな
152:142
09/07/12 12:36:29
質問です。
前回と同じで、タスクトレイにアイコンを表示する方法を調べています。
今度はLoadImageという関数を使用している部分でコンパイルエラーになります。
エラーメッセージが
未解決のトークン (0A00000B) "extern "C" void * __stdcall LoadImageW
・・・・で参照されました
error LNK2019: 未解決の外部シンボル "extern "C" void * __stdcall LoadImageW
・・・・で参照されました。
fatal error LNK1120: 外部参照 2 が未解決です。
ソースは
HINSTANCE hInst = GetModuleHandle(NULL);
NOTIFYICONDATA icn;
icn.hWnd = hwnd;
icn.uID = 100;
icn.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
icn.uCallbackMessage = WM_USER + 1;
icn.hIcon = (HICON)LoadImage(hInst,
MAKEINTRESOURCE ( "IDI_ICONTRAY"), IMAGE_ICON, 16, 16, 0 );
Shell_NotifyIcon ( NIM_ADD, &icn);
環境はVC++2008 Express EditionのWindowsFormで作成しています。
前回と同様、何かをインクルードすればいいのでしょうか。
現在はwindows.hとshellapi.hをインクルードしています。
よろしくお願いします。
153:デフォルトの名無しさん
09/07/12 12:55:01
>>152
そういう質問ばかり増えるとおれらが困るので調べ方を教えておく
MSDNで目的の関数(ここではLoadImage関数)の解説を出す
URLリンク(msdn.microsoft.com)
最後のほうに
ヘッダーファイル xxxx.h をインクルード
ライブラリ xxxx.lib を使用
とか書いてある。それでもだめなら聞きに来なされれ
154:デフォルトの名無しさん
09/07/12 12:56:44
Formだったら.netのみでやった方が簡単な気がする
155:デフォルトの名無しさん
09/07/12 13:02:59
俺にはFormアプリケーションを作った経験はないんだが、Formアプリケーションって
APIを使う場合は必要なLibをいちいち全部自前でリンクしなきゃならないのかい?
156:デフォルトの名無しさん
09/07/12 13:13:52
俺もFormアプリは詳しくないけど
C言語系では必要なLIBは自分で指定すんのが基本だからな
宿題スレなんか見てると、よく数学ライブラリをリンクしないで
コンパイル通りませーんって泣いてる初心者がいるよなw
157:デフォルトの名無しさん
09/07/12 13:14:49
どんな形かは判らんが大抵使うよ宣言が要るんじゃないか
158:142
09/07/12 13:56:11
>>153
教えてくださったページで、無事コンパイルが通りました。
ありがとうございます。
159:デフォルトの名無しさん
09/07/12 14:30:21
>>149
C#はC++とは全く別の言語だぞ。名前がよく似ているだけで。
160:デフォルトの名無しさん
09/07/12 15:03:06
>>149
C#はクソ言語
・・・とまでは言わないけど、
Javaと同じでC++より楽に習得できる。
C++はバカには使えないほど高度(変態)な言語だが
使いこなせるヤツはもう本当にすごい。
ちなみに俺はまだまだまだまだ使いこなせてません。
161:デフォルトの名無しさん
09/07/12 15:27:24
つか、MFCくらいが一番面白い。
162:デフォルトの名無しさん
09/07/12 16:01:46
じゃあ三つとも覚えればいいんですね
API 始めたばっかだけど
163:デフォルトの名無しさん
09/07/12 18:08:11
visual C++2008を使っているのですが、cppファイルを開こうとするとメモ帳が表示されて、バイナリー表示?されてコードが見れないのですが
改善方法を教えてください。DirectX SDK November2007が入ってます。OSはXPSP3です。
164:デフォルトの名無しさん
09/07/12 18:29:28
>>163
cppはテキストファィルだが、どこからどうやって開こうとしてる?
たとえばエクスプローラーからcppファイルをダブルクリック、とか
IDEからcppを右クリックしてコードを表示、とか。
165:デフォルトの名無しさん
09/07/12 23:21:49
>>164
レス遅れましてすいません。
ソリューション開いてソースフォルダにあるcppファイルをダブルクリックで開こうとしてます。
166:デフォルトの名無しさん
09/07/13 00:20:02
ダブルクリックの代わりに右クリックからファイルを開くアプリケーションの選択でどうか
うまくいったら規定値に設定で
167:デフォルトの名無しさん
09/07/13 00:55:16
>>166
うまくいかないです・・・。VC上で開くことは出来たのですが文字化けしててダメでした。
VC入れなおしても直らないし、ウイルスに感染してるので設定がめちゃくちゃになったのかもしれません。
なのでOS入れなおすことにしました。お騒がせしてすいません。レスありがとうございました。
168:デフォルトの名無しさん
09/07/13 11:55:25
文字化けは最初の質問とは別の話だな
169:デフォルトの名無しさん
09/07/13 21:05:41
CLRプロジェクトの中で書かれたコードは、.NET Frameworkのライブラリを使わなくてもマネージドコードという扱いになるのでしょうか?
170:デフォルトの名無しさん
09/07/13 21:18:16
そうだよ。
C#でclass C {static void Main() {}}のような何もしないプログラムを書いても
.NET Frameworkが実行に必要なのと同じようなことと言えばいいかな。
そうではなくて、ネイティブコードを混ぜたいという意味なら、
#pragma unmanagedなどで切り替えできる。
171:デフォルトの名無しさん
09/07/13 21:21:49
>>170
よくわかりました
ありがとうございます
172:デフォルトの名無しさん
09/07/14 17:38:13
VC++のC++で、現在のスタック領域の大きさを取り出す方法ありませんか?
スタックが少なくなったらエラー処理がしたいので、お願いします。
173:デフォルトの名無しさん
09/07/14 17:41:25
>>172
スタックオーバーフローを回避したいならヒープ領域を使えば?
174:デフォルトの名無しさん
09/07/14 17:46:43
いや、再帰処理のプログラムにエラー処理を組込みたいので。
現在は異常終了してしまうし。固定値で検査は出来るけど、
固定値は入れたくないし。
175:デフォルトの名無しさん
09/07/14 17:55:17
ESP見るとか
176:デフォルトの名無しさん
09/07/14 17:57:13
>>174
スタックオーバフローチェックのコンパイラオプションではダメなの?
177:デフォルトの名無しさん
09/07/14 18:01:46
そもそも、スタックオーバーフローになるような組み方をしている再帰処理に問題があるんじゃないか?
178:デフォルトの名無しさん
09/07/14 18:07:27
離散数学の問題を解くようなプログラムだと簡単にオーバーフローしちゃうから
その辺はプログラムを作るときに工夫するよう、自分で考えたほうがいい。
あれは簡単には解けない、ってことを確認するのも勉強のうちだから。
学生じゃなかったら的外れな回答でごめん。
179:デフォルトの名無しさん
09/07/14 18:17:52
まあ、たしかに、スタックオーバーフローするようなプログラムにしない、
と言うのは正しい。しかしまあ、出来るならば再帰の中で検査をしたいと
思っています。今現在は#define STACKSIZE 1000000 で固定値で
検査をしているのですが、コンパイルオプション変えるたびにプログラム
修正もいやだなーと。しかし、調べた限り簡単では出そうに無いですね。
あきらめて固定値で行こうと思います。
180:デフォルトの名無しさん
09/07/14 18:37:58
こういうの見た?
URLリンク(www.nminoru.jp)
181:デフォルトの名無しさん
09/07/14 19:29:38
ありがとうございます。でも今やってみたのですが。
コンパイルスタック指定 1000000で下記のような出力に。
[00130000 00126000]
p=0012FF60
dat p=001177DB
dat p=000FF047
dat p=000E68B3
dat p=000CE11F
dat p=000B598B
dat p=0009D1F7
dat p=00084A63
dat p=0006C2CF
dat p=00053B3B
dat p=0003B3A7 <-ここの次でスタックオーバーフロー
プログラムは、下記ですが、出力が納得できない…
NT_TIB* getTIB(void) {
NT_TIB* pTib;
__asm {
mov eax, dword ptr FS:[18H];
mov pTib, eax;
}
return pTib;
}
void testp() {
char buf[100000]; char dat;
printf("dat p=%p\n",&dat); testp();
}
int _tmain(int argc, _TCHAR* argv[]) {
NT_TIB* pTIB = getTIB();
printf("[%08x %08x]\n", pTIB->StackBase, pTIB->StackLimit);
printf("p=%p\n",&pTIB); testp(); return 0;
}
182:デフォルトの名無しさん
09/07/14 19:31:58
行数オーバーで圧縮しています。
[00130000 00126000]
のStackBase,とStackLimitの範囲が1000000も無い、
スタックオーバフローは約1000000でオーバーしているので正しい
なぜなんだろう?
183:デフォルトの名無しさん
09/07/14 19:32:48
文字列の処理について教えてください。
VisualStudioでC++のプロジェクトを作ると、以下のようなグローバル変数が自動的に宣言されますが、
TCHAR szTitle[MAX_LOADSTRING]; // タイトル バーのテキスト
ここにTCHAR型のローカル変数と同じ方法で文字列を代入しようとすると
コンパイルエラーになってしまいます。
TCHAR test[MAX_LOADSTRING] = _T("これは大丈夫");
szTitle = _T("エラーになる");
同じ型の変数を宣言しているつもりですが、結果が違ってしまうのはどうしてでしょう?
184:デフォルトの名無しさん
09/07/14 19:34:34
>>183
C言語の入門書本屋で買ってこい
185:181
09/07/14 19:36:01
う~~ん、他のHPで、わざとスタックオーバーフローさせて、サイズ検出が
あったが、それしかないのか? ちょっとやってみる。
186:デフォルトの名無しさん
09/07/14 19:37:56
>>185
だからぁ、>176じゃダメなの?
187:デフォルトの名無しさん
09/07/14 19:40:47
>>186
/RTC、/GSの事なら全くの別物
188:デフォルトの名無しさん
09/07/14 19:47:21
>>182
コミット済みのサイズだからじゃね
189:181
09/07/14 20:07:36
>>188
コミットのサイズ変えても、出力は変わらず。
う~~ん、例外検出がなかなかうまくいかず。
それにわざとエラー出して、サイズ検出もなんとなく納得できないし、
結局、固定で持ったほうが早そうな気がしてきました。
どうせコンパイルするんだし…
皆さんありがとうございました。
190:181
09/07/14 20:18:00
補足。testp()の中にスタック情報出すのを入れた場合下記のよう。
やはりコミットで増えるようですね。最大値は相変わらず不明ですが。
[00130000 00126000]
p=0012FF50
[00130000 00117000]
dat p=001177B7
[00130000 000fe000]
dat p=000FF003
[00130000 000e6000]
dat p=000E684F
[00130000 000cd000]
dat p=000CE09B
[00130000 000b5000]
dat p=000B58E7
[00130000 0009c000]
dat p=0009D133
[00130000 00084000]
dat p=0008497F
[00130000 0006b000]
dat p=0006C1CB
[00130000 00053000]
dat p=00053A17
[00130000 0003b000]
dat p=0003B263
この後オーバーフロー
191:デフォルトの名無しさん
09/07/15 09:39:53
>>184
馬鹿だから答えられないのですね。
書き込むな!クズ!
192:デフォルトの名無しさん
09/07/15 09:55:29
>>191
その一言でキミの相手するやつは激減したよ。
いつもそんな調子だから人に相手されなくなるんだよ。
193:デフォルトの名無しさん
09/07/15 09:59:10
>>183
文字列もどきの処理は、型によってケースバイケースでわかりにくいからねえ。
もうちょっとマクロとか関数が整理されてたらよかったんだけど。
そういうのの一覧が載った本を見たほうが早いと俺も思うよ。
さもなくば、文字列がもうちょっと簡単に使えるC#あたりに乗り換えるか。
その場合は
_tcscpy_s(szTitle, _T("てすと"));
ただしコピー先のサイズは固定で自動的に拡張してくれないから
文字列の長さがコピー先の容量を超えてると代入に失敗する。
コンパイル時か実行時か、どちらか容量オーバーが発見されたタイミングでエラーが出る。
194:デフォルトの名無しさん
09/07/15 10:13:06
そういうのも代入と言う?
馬鹿がうつった?
195:デフォルトの名無しさん
09/07/15 10:49:59
父ちゃんに言われなかったか?
やらないのはできないのと一緒だって
早くハロワ行けよ
196:デフォルトの名無しさん
09/07/15 23:35:30
総合開発環境の下部のメッセージ部分に出力するにはどうすればいいんでしょうか?
デバッグ用に使ってるのを見かけたんですがやり方が書いてありませんでした
197:デフォルトの名無しさん
09/07/16 00:15:46
>>196
OutputDebugString
198:デフォルトの名無しさん
09/07/16 00:23:19
ありがとうございます!
199:デフォルトの名無しさん
09/07/16 00:33:23
CLRだとSystem::Diagnostics::Debug::WriteLineだけどな
200:デフォルトの名無しさん
09/07/17 15:35:37
C++のCLRってVBやC#より処理早いの?
201:デフォルトの名無しさん
09/07/17 15:53:47
おなじ NETのアセンブラにするんだろ
202:デフォルトの名無しさん
09/07/17 17:24:34
強いて言えば、VB.NETやC#と違って
標準でSuppressUnmanagedCodeSecurityAttributeが付くので、
ネイティブコードの呼出はC++が速いらしい。
(もちろん、C#やVB.NETでもSuppressUnmanagedCodeSecurityAttributeを使えばその点は同じになる)
203:デフォルトの名無しさん
09/07/18 00:14:35
>>201
レスありがとう
204:デフォルトの名無しさん
09/07/18 00:15:22
>>202
詳しくありがとうございます
205:デフォルトの名無しさん
09/07/19 04:41:53
普段2003を使ってるんだけど
Visual Studio 2008 Express を使ってみたんだ
インテリセンスがすごくよくって
関数を使おうと書き始めると候補が出てきて途中でエンター押すと
全部書いてくれてすごく良いんだ
この機能って2008になってから出来たの?
206:デフォルトの名無しさん
09/07/19 08:11:47
2005も有るけど、新しい方がいいらしい
207:デフォルトの名無しさん
09/07/19 10:23:25
着実にVer.Upしてるよ。 VC6のインテリセンスのガリガリガリガリはまだ記憶に新しい。
208:デフォルトの名無しさん
09/07/19 13:40:50
2008のインテリセンス、マジキチすぎ。
キーボード5つぐらいしか押してないのに50文字ぐらいの長い命令文がいつのまにか入力できてる。
プロパティとメソッドの区別も一発でわかるようにアイコンが付いてるし、自分で作ったクラスまで
自動的に登録されてるし。
209:デフォルトの名無しさん
09/07/19 13:43:51
しかし、C#やVBはさらにその上を行くのであった。
たまに触ると本当に羨ましく感じる。
210:デフォルトの名無しさん
09/07/19 13:44:52
おかげで命令のスペルうろ覚えの時がある。
211:デフォルトの名無しさん
09/07/19 13:47:33
C++にもっと力入れてほしいな
webは作れないんだよね
212:デフォルトの名無しさん
09/07/19 14:04:43
VS2008を使っているのですが、
クラスビューでプロパティを選択して、
イベント、オーバーライド、メッセージを選択しても
全く表示されなくなりました。
どうしてなんでしょうか?
新規作成時、直後は問題ないのですが、開発途中で、
表示が消えるので、新たに関数などの追加ができなくなって困っています。
直し方はあるのでしょうか?
213:デフォルトの名無しさん
09/07/19 14:05:27
>>211
CGIは?
214:デフォルトの名無しさん
09/07/19 15:27:05
>>212
うっかりプロジェクトファイルとか消してない?
鯖に共有フォルダ作って共同開発とかしてると、たまに誰かか勝手にファイルを移動しちゃうことがあって困る。
215:デフォルトの名無しさん
09/07/19 19:02:40
Subversionお勧め
EEじゃなけりゃAnkhSVNも
216:デフォルトの名無しさん
09/07/19 20:01:26
212ですが、
自己解決?しました。
正しい、やりかたではないと思いますが、
ソリューションファイル等があるフォルダにある
VC++ Intellisense Database
のファイルを削除して、もう一度、VS2008を起動させて、
ソリューションファイルを開くと、自動的にもう一度、
VC++ Intellisense Databaseファイルが作られるので、
それで、直りました。
正しいか不明だけどね。
お騒がせしました。
217:デフォルトの名無しさん
09/07/19 20:02:56
それならよくあること。気にするな。
218:デフォルトの名無しさん
09/07/19 20:44:02
public: がダメ、総てアクセッサー付けろは OOP原理主義者。
219:デフォルトの名無しさん
09/07/19 21:06:58
こいつは何を言っているんだ?
220:デフォルトの名無しさん
09/07/19 21:46:12
std::tr1::
などと打ったときに最後の::の後を自動補完する候補が出るときと出ないときがあるんですが
これを毎回出すようにするにはどうすればいいんでしょうか?
221:デフォルトの名無しさん
09/07/19 22:29:18
インテリセンスは気まぐれだからなぁ。
一応CTRL+SPACEを押せば強制的に候補一覧(候補がひとつしかないときは一気に確定)できるけど
必ずしも成功するとは限らないところがVC++のいいところ。
これがVBやVC#、今はなきVJ++ではほぼ100%確実に候補が出る。
で、開発者いわく、インテリセンスは結局のところ「コンパイラそのもの」なんだそうで、
リアルタイムコンパイルしながら候補を絞り込んでるわけだけど、
C++は言語が複雑すぎてちゃんとできねーんだとさ。
222:デフォルトの名無しさん
09/07/19 22:49:34
ほとんどは、その前の文にエラーがあるとインテリセンスは動かない。
223:デフォルトの名無しさん
09/07/22 15:46:08
質問します
環境は「VC2008ExpEdition + .net」です
Bitmap^ abcimg=gcnew Bitmap(300, 400);
Graphics^ abcgraf=Graphics::FromImage(abcimg);
abcgraf->FillRectangle(Brushes::Black, 0, 0, abcimg->Width, abcimg->Height);
pictureBox1->Image= abcimg;
で作られた画像の真ん中にナスのような形のグラフが書き込まれます。
そのグラフを白で塗りつぶして面積を求めたいのですが、塗りつぶしがうまくいきません
別のやり方があれば教えてください
Color abcclr;
for(j=0;j<400;j++){
for(i=0;i<300;i++){
abcclr=abcimg->GetPixel(i,j);
Byte r=abcclr.R;Byte g=abcclr.G;Byte b=abcclr.B;
if(r>1){
if(mode==0){//最初の境界を発見した!
bforx=i;bfory=j;mode=1;//フラグを立てて管理
//↓は最初境界の終わりを探す
while(r==0){abcclr=abcimg->GetPixel(i+1,j);r=abcclr.R;g=abcclr.G;b=abcclr.B;i++;}
}else{//フラグ立ってるので現在値まで塗りつぶしのために白い線を引いてフラグを消す
abcgraf->DrawLine(Pens::White,bforx,bfory,i,j);mode=0;}
}// (R>1)節の終わり
abcclr=Color::FromArgb(r,g,b);
abcimg->SetPixel(i,j,abcclr);
}//iのforループの終わり
mode=0;
}//jのforループ終わり
224:デフォルトの名無しさん
09/07/22 16:39:58
単にロジックの問題なのかapiの使い方の問題なのかはっきりしろ
225:デフォルトの名無しさん
09/07/22 17:04:05
223 です
途中まではうまくいくが、グラデーションのように黒い線(塗りつぶしの失敗)が入ります
######
######
########
# #
# #
##########
のような感じに。下手な説明&AAですみません。
226:デフォルトの名無しさん
09/07/22 17:24:26
すまんが、まったくわからん。
画面キャプチャしてUPするなり、他人に伝える工夫と努力が必要。
227:デフォルトの名無しさん
09/07/22 21:59:48
何かまったくの思いつきで作ったとしか見えないんだが
それ仮に動いたとして使いものになるのか?
228:デフォルトの名無しさん
09/07/22 23:02:03
全くの初心者なんですが、VC++2008を使った教本でお薦めのものってありませんか?
229:デフォルトの名無しさん
09/07/22 23:09:23
本屋で実際に手に取って見るのがお薦め。
230:デフォルトの名無しさん
09/07/22 23:26:41
最低限C/C++は知ってる前提だから
そうじゃなくてC/C++から勉強したいならVCというよりC/C++の入門書だし
C/C++スレで質問した方がいい。
231:デフォルトの名無しさん
09/07/22 23:35:31
VC++2008の初心者じゃなくてC++の知識がないってことかな?
まあ
>>230
の言う通り過ぎて付け加えることがない。
232:デフォルトの名無しさん
09/07/22 23:47:17
C++の本はたくさんあるけど
IDEの基本から上手な使い方みたいなことが書いてある本ってないよね
プロパティとかどう弄ったらよくなるのかとかいまいちわからない
233:デフォルトの名無しさん
09/07/23 01:49:59
>>230 >>231
なるほどVC++の初心者に使いかたを教えるスレだったんですね気づきませんでした
C/C++の知識が無いプログラミング初心者なんです
それでVC++インスコしてネットや本屋で教本の類を幾つか読んでみたんですけどVC++を使って教えてるのが見つからなかったんですよ
全くの初心者なので用語の意味とか全然分からないし本で言っている事がVC++の機能のどれを指してるのか、どこにあるのか分からなかったりと
なかなか先に進まないのでVC++2008を使った解説本が無いかと思ったんですがお勧めの物ありませんかね?
それともやっぱりC/C++スレで聞いたほうが良いですかね?
234:デフォルトの名無しさん
09/07/23 02:04:00
CかC++をやって、言語の仕様をしっかり理解してからVCやることをオススメする
Cを理解する頃には意味不明なところがしっかりわかるようになるはず
235:デフォルトの名無しさん
09/07/23 02:20:19
>>234
そういう意味でのVCではなくて、プロジェクトの作ってビルド・実行するとかデバッガの使い方について知りたいんだと思う。
236:デフォルトの名無しさん
09/07/23 02:27:47
そーいうのはヘルプ見りゃわかるだろ。
ただし、C/C++の用語がわからんと理解できんだろーから、必要なのはC/C++の入門書ということになる。
したがってスレ違い。
237:223
09/07/23 10:35:21
223です。説明が足りないといわれたので、追記に来ました
URLリンク(upload.jpn.ph) にUPしました
u44616.jpg というファイル名です
左が線だけの状況。実は点なんですが、DrawLineで繋げてます。
閉鎖空間であることは確認済みです
右が223のプログラムで塗りつぶそうとした結果です
どうみても失敗してます。原因がわからなくて悩んでました
238:デフォルトの名無しさん
09/07/23 11:31:24
>>237
画像のアドレスはこういうふうに書けば回答者がすぐに確認できる
URLリンク(upload.jpn.ph)
それからソースが汚すぎる。
ちゃんと式の終わりごとに改行して演算子の前後にスペースを入れて
インデントをつければ「forの終わり」とかコメントをいちいち
書く必要がなくなる。たとえばこんなふう
int i, j, k;
for (i = 0; i < 10; i++)
{
for (i = 0; i < 10; i++)
{
k = i + j;
printf("%d ", k);
}
}
ちゃんと調べたわけじゃないけど、whileの中で変数 i をいじってるのが
原因じゃないかって希ガス
239:デフォルトの名無しさん
09/07/23 11:56:14
うちで試してみたら、ちゃんと動いたじぇ
追加したのは、変数宣言と、DrawLineでテスト用の画像をてきとーに作る部分だけ
int i, j, mode;
int bforx, bfory;
個人的には、いちいちRGBに分解した意味がわかんなかったけどもな
240:デフォルトの名無しさん
09/07/23 12:14:24
そのアルゴリズムだと、境界線の角度が浅くて横に2ドット以上
白いピクセルが続いた時におかしくなる
白いピクセルの連続が偶数個だと、そのラインは塗られないから
黒く残ってシマシマになる
241:デフォルトの名無しさん
09/07/23 12:16:38
あ、白じゃなくて赤か。
242:デフォルトの名無しさん
09/07/23 12:36:16
シマシマ節子さん
243:223
09/07/23 13:08:23
回答ありがとうございます
一応、白が続いた時用にwhileで境界線である白の終わりを判断して飛ばしてます。
while(r==0){abcclr=abcimg->GetPixel(i+1,j);r=abcclr.R;i++;}
>240 さんの言うところが調子悪かったのですね。いじってみます。
RGBに分けたのは、今後の発展を考えてでありまだ何も実装してません。
244:デフォルトの名無しさん
09/07/23 13:30:05
LNK2019とLNK2001のエラーがどうしても消えないのですが、
何が原因のものなのでしょうか
245:デフォルトの名無しさん
09/07/23 13:40:38
>>244
ヘッダのインクルード忘れ。
ライブラリのリンク忘れ。
246:デフォルトの名無しさん
09/07/23 14:00:33
>>243
だから、改行とインデントはちゃんと入れろと言ってるのに
while (r == 0)
{
abcclr = abcimg->GetPixel(i + 1, j);
r = abcclr.R;
i++;
}
247:デフォルトの名無しさん
09/07/23 14:30:08
VC6でCDiaLogを基にしたCTestクラスを作って
void CTest::OnButton1()
{処理}
void CTest::OnButton2()
{処理}
上のようなプログラムはクラスウィザードで出来ますが
void CTest::OnButton1()
{関数();}
void CTest::OnButton2()
{関数();}
void 関数()
{
処理
}
処理にUpdateData()などCDiaLogクラスの関数(メンバ)を使ってるから
エラーになります。ボタンを押す、などのイベントがあるなら関数を
作れますが、CTestにアクセスできる空の関数を作るにはどうしたら
良いですか?
248:デフォルトの名無しさん
09/07/23 14:55:05
>>247
クラスウィザードで作れるでよ
249:デフォルトの名無しさん
09/07/23 14:55:23
>>247
void CTest::関数() // CTest のメンバ関数にすれば、処理にUpdateData() してもアクセス違反にならない。
{
処理
}
250:デフォルトの名無しさん
09/07/23 15:27:47
>>248-249
クラスウィザードでのやり方がわからないので最初に249の方法
試したら出来ました。サンクス。
251:デフォルトの名無しさん
09/07/23 21:43:05
directxを使ったコードを書き、フォームを追加してみたのですが
「1>cl : コマンド ライン error D8016 : コマンド ライン オプション '/MTd' と '/clr' は同時に指定できません」
と出てコンパイルエラーが出ます。この二つは併用できないと思っていいんでしょうか??
252:デフォルトの名無しさん
09/07/23 21:54:08
>>251
はい。DLL版CRT使いましょう。
253:デフォルトの名無しさん
09/07/23 21:57:12
>>252
ありがとうございます
C++ややこしいですね><
254:デフォルトの名無しさん
09/07/23 22:12:39
/clrということはC++/CLIだからC++ではない
255:デフォルトの名無しさん
09/07/27 16:37:52
Visual Studio2008で
ソースの文字検索時に該当箇所を一括で強調(色が変わるとか)して表示するような設定ってありますか?
次を検索・・次を検索で見ていく方法が使いにくいです
256:デフォルトの名無しさん
09/07/27 16:44:38
>>255
VS2008内蔵エディタには、検索した文字列に一括で色を付ける機能はないので、
外部エディタを何か設定して使うといい。
あとは、行単位になっちゃうけどブックマークぐらいかなあ。
257:デフォルトの名無しさん
09/07/29 12:52:30
Visual Studioはバージョンアップごとに進化しても、Visual C++はまったく進化しないな。
258:デフォルトの名無しさん
09/07/29 12:56:48
バージョンが上がるたびにコマンドの位置や名前が変わること…
それがMicrosoftの考える「進化」。
259:デフォルトの名無しさん
09/07/29 17:13:13
>>257
2010のインテリセンスは進化しているって。
260:デフォルトの名無しさん
09/07/30 00:38:59
クラスのメンバ関数がよくわからないのですが、詳しく解説してる本とかありますか?
261:デフォルトの名無しさん
09/07/30 00:55:12
MSDN
262:デフォルトの名無しさん
09/07/30 01:28:07
MSDNって小難しい上に時々間違ってない?
263:デフォルトの名無しさん
09/07/30 01:34:23
詳しく解説してる本ほどじゃない
264:デフォルトの名無しさん
09/07/30 01:43:33
俺詳しくないから、MSDNで調べてその意味を調べるためにネットを徘徊する羽目になる
265:デフォルトの名無しさん
09/07/30 07:08:20
msdnってある程度知識がないと読めないのがネックだな
266:デフォルトの名無しさん
09/07/30 11:04:29
VCの特定のクラスの特定のメンバ関数じゃなくて
メンバ関数そのものがわからないならMSDNじゃなくてオブジェクト指向か言語の本
267:デフォルトの名無しさん
09/07/30 11:36:54
そっちか
268:デフォルトの名無しさん
09/07/30 22:28:14
質問させてください。
Form1からForm2を呼び出すことはできたのですが、その後
Form2からForm1を呼び出すべく、Form1をForm2にインクルードすると
どちらでも定義が見つからない旨のエラーが出てしまいました。
どのようにすれば相互に見つけられるでしょうか?
269:デフォルトの名無しさん
09/07/30 22:57:19
>>268
インクルード命令ってのは、インクルート先のファイルをその場所に展開する命令。
頭の中で、展開されるとどうなるのか想像してみれ。
あと一応インクルードガードでググっておくこと。
270:デフォルトの名無しさん
09/07/30 23:27:18
C++じゃなくて、C++/CLIの悪寒。
271:デフォルトの名無しさん
09/07/30 23:35:50
おおおおそろしや
272:デフォルトの名無しさん
09/07/31 00:49:39
今日ビルドしたら急に他のPCで動かなくなりました
29日に公開されたランタイム入れたらできたんですが
これって新しくランタイムいれなくてもいいようにできますか?
273:デフォルトの名無しさん
09/07/31 01:04:06
旧版(の、ActiveX関係?)には致命的なセキュリティホールがあるので絶対に使わないこと。
274:デフォルトの名無しさん
09/07/31 02:02:20
ほかのPCでもWindows Updateで新しいランタイムが自動的にインストールされるはず。
275:デフォルトの名無しさん
09/07/31 05:35:35
268
Form1はmeで呼び出せると思うけど
276:デフォルトの名無しさん
09/07/31 05:36:23
アンカー忘れてたw
>>268
Form1はmeで呼び出せると思うけど
277:デフォルトの名無しさん
09/07/31 18:22:48
a
278:デフォルトの名無しさん
09/07/31 18:25:23
Visual C++ 6.0を使用しています。
プロジェクト→プロジェクトへ追加→ファイルを選択すると、
「動作を停止しました」と出てきてしまいます
このせいで複数のファイルのビルドができなくて困っています
どなたか教えてください
279:デフォルトの名無しさん
09/07/31 19:06:53
そうやってそんなエラーでた経験ないし、
複数のファイルのビルドができなくて困ったこともない。
どこか違う世界にお住まいの方ですか?
280:デフォルトの名無しさん
09/08/01 20:41:51
すんません。visual c++ 2008をインストールした後で特定のページを閲覧すると
フォントが擦れてしまうバグってどう解決するんでしょう。
ググッても出てこなくて困っとります。以前同じような状況に陥ったときは
たしか何かフォントを削除すると直った気がするのですがさっぱり忘れてしまいました。
どなたかわかる方教えては頂けないでしょうか。すみません。
281:デフォルトの名無しさん
09/08/02 09:43:51
すんません。
printfが表示させる関数ってぐらいしか知識無いんですが、
ミクミクダンスを作るみたいにプリグラムできるようになるのは
どのくらい勉強したらなれるんでしょうか?
さすがに70時間勉強したら作れるとかなんて思ってません。
2年ぐらい毎日1時間ぐらいやってたら作れますか?
282:デフォルトの名無しさん
09/08/02 13:36:13
人に理解して貰いたいならそれ相応に推敲しろよ
プログラム以前の問題だぞ
283:281
09/08/02 14:51:43
初心者の僕が毎日1時間2年勉強し続けたらミクミクダンスをつくるぐらいのスキルが実につきますか?
284:デフォルトの名無しさん
09/08/02 15:07:02
もっと短くてもいいと思うけど1日1時間じゃ、前の日のおさらいだけで終わっちゃいそうだな
285:デフォルトの名無しさん
09/08/02 15:19:31
>>283
2年後にここに結果を書け
286:デフォルトの名無しさん
09/08/02 17:31:15
VisualC++2003で開発されたフリーソフトを使ってるんですが、
同封されてるビープ音のwavファイルが再生されません
作者さんのサイトにはサウンドにDirectSoundを利用していると書いてあるので、
一応DirectX診断ツールを使ってDirectSoundのテストをしてみましたが、
「このサウンドカードはハードウェアによるバッファの使用をサポートしていません。
サウンドはソフトウェアバッファから再生されます。」
と注意は出るもののテストは全て成功しました。
作り手側の方たちから的確なアドバイスがいただけるかと思い質問させてもらいます。
フリーソフトはこちらになります
URLリンク(www.musenken.net)
OSはXP SP2です
よろしくおねがいします。
287:デフォルトの名無しさん
09/08/02 17:37:18
コピペかな
作者に聞いてください
WindowsUpdateはちゃんと実行しましょう
288:デフォルトの名無しさん
09/08/02 17:37:51
>>286
ソフトの作者に訊きなさい
289:デフォルトの名無しさん
09/08/02 17:44:05
よくあることなのかと思い気軽に質問してみましたが、確かにそれが一番確実ですね。
時間のある時にでも作者さんにメール出して一度聞いてみます。
ありがとうございます。
290:286
09/08/02 18:23:58
さっそくメール送ってみたらエラーで返ってきてしまった…
291:デフォルトの名無しさん
09/08/02 21:45:56
VC++2008で開発してます。
大容量のファイルをC++で作成するとき、ちょっとずつ書き込んでいくと、
ディスク内にフラグメントが出来そうなので、先行してディスクの領域を
確保した上で書き込みたいなと思っています。
これは考え方は正しいでしょうか?正しければ、やり方を教えてください。
よろしくお願いします。
292:デフォルトの名無しさん
09/08/02 21:51:35
ofstream outfile( "filename.txt" );
outfile << data1;
outfile << data2;
outfile << data3;
...
びっくりすることに、C++のファイルストリームはバッファという仕組みがあったのです!
293:デフォルトの名無しさん
09/08/02 22:49:38
>>291
SetFilePointerとSetEndOfFileを組み合わせる。
URLリンク(www.google.co.jp)
誰か、SetFileValidDataについて教えて。
294:デフォルトの名無しさん
09/08/03 00:03:31
URLリンク(msdn.microsoft.com)
295:デフォルトの名無しさん
09/08/05 12:15:59
特権必要だしその用途にSetFileValidDataは全く必要ない
296:デフォルトの名無しさん
09/08/06 12:42:38
Solution
Project Main
Main.cpp
Project Hoge (class Hoge)
Hoge.cpp
Hoge.h
Project Fuga (class Fuga)
Fuga.cpp
Fuga.h
MainはHogeとFugaに依存
includeパスにソリューションディレクトリを追加
Mainからは#include "(Project)/(Header).h"で参照
という風にやってるんですが
これだとプロパティを変更する時にいちいち全部のプロパティを変えないといけません
ソリューション全体で共通のプロパティを一発で適応させる方法は無いんでしょうか?
297:デフォルトの名無しさん
09/08/06 17:28:35
win32APIがあるってことはwin64APIもあるのかな?
298:デフォルトの名無しさん
09/08/06 17:29:22
ひとりごとです
299:デフォルトの名無しさん
09/08/07 01:50:32
>>297
あるけど大差ないのでまとめてWindows APIと呼ぼうぜという雰囲気。
300:デフォルトの名無しさん
09/08/07 03:24:13
>>299
レスありがとう
へーやっぱりあるんだ
勉強になった
301:デフォルトの名無しさん
09/08/07 10:23:53
>>296
VisualStudioスレで聞くといいと思います。
302:デフォルトの名無しさん
09/08/07 14:23:28
URLリンク(sunafukin.jp) を参考にして
タブを切り替えると表示されるコントロールを変わるようにしたのですが
タブ内のコントロール表示は連動してるものの最初の描画位置がおかしく
ウィンドウを動かすとそれらのコントロールが置き去りになってしまいます
タブ内コントロールの初期位置、ウィンドウ移動時の
表示ずれ修正はどうすればいいでしょうか?
環境はVS2008 Proで、その際のコードは下記です
URLリンク(www.dotup.org)
303:デフォルトの名無しさん
09/08/07 14:50:13
>>302
本来ならそのページの主に訊くのが筋なんだが・・・
>ウィンドウを動かすとそれらのコントロールが置き去りになってしまいます
タブに貼り付けているダイアログのスタイルを「子」にしていないだろ?
304:デフォルトの名無しさん
09/08/07 15:09:46
>>303
その他にある Control は True にしてましたが
Styleは書かれてなかったのでホップアップのままでした
指摘された通り子にしたところちゃんと描画されました
ありがとうございます
305:デフォルトの名無しさん
09/08/07 23:30:07
>環境はVS2008 Proで
宝の持ち腐れ。
306:デフォルトの名無しさん
09/08/08 02:47:44
VSのToolBoxにある各アイコンを
抽出する方法ありませんか?
ResHackerで色々なexeやdllを調べたのですが
どこにも見当たらなくて
307:デフォルトの名無しさん
09/08/08 07:01:48
MSに著作権があると思うのだが、無視して使うのか?
308:デフォルトの名無しさん
09/08/08 10:29:59
VS2008であれば VS2008ImageLibrary.zip に同様な画像のリソースが付属している。
309:デフォルトの名無しさん
09/08/09 09:24:18
VS2005のVC++で、Wizard生成のMFCアプリケーシュオンプロジェクトの質問です
Debugをアクティブにした状態でビルドしたguiアプリケーションって他のosでも動きますか?
osはxpでビルド→2000で実行なんだけどReleaseでビルドしたものだけ正常動作したのでちょっと疑問に思った
310:デフォルトの名無しさん
09/08/09 14:13:21
うごく
311:デフォルトの名無しさん
09/08/09 14:19:49
Debugのランタイムはどうした?
312:デフォルトの名無しさん
09/08/09 18:25:54
Visual C++ 2008 Express Edition を使っています。
デバッグ中にステップ実行でmain関数を抜けるときに、「現在の場所のソースコードを表示できません」
というエラーが何回も出るのですが、これはなぜなのでしょうか。
また、このエラーが出ないようにする方法はあるのでしょうか?
313:デフォルトの名無しさん
09/08/09 18:31:31
基本的に、main関数の外は我々プログラマが関知してはいけない混沌の領域だから。
慣れてくるとそこも見たりするようになるけど。
デバッグビルドでそのエラーが出るなら、基本的にどうしようもない。
314:デフォルトの名無しさん
09/08/09 18:49:41
>>312
俺も毎回そのエラーが出るけどなんでかわからない…
315:デフォルトの名無しさん
09/08/09 19:01:37
「main関数を抜けた後のソースコード」を誰も書いていないから。
316:デフォルトの名無しさん
09/08/10 10:29:32
スタートアップルーチンのソースを教えてないからでしょ
エラーでもないし気にしないでいいよ
317:デフォルトの名無しさん
09/08/10 11:35:52
Microsoft Visual Studio 2008 Professional Edition
プロジェクトのプロパティなどを開こうとすると、
「Failed to create .Net Frameworks PropertyGrid component.
Please verify that the Common Language Runtime and .Net Frameworks are properly installed.」
と表示されます。
レジストリなどで調べましたが、.Net Frameworkは2.0、3.0、3.5すべてinstalledになっています。
他のツールでもインストールされていることが確認できました。
一体何が原因なのでしょうか?
Microsoft Visual Studio 2008 Professional Edition
はフルインストールしたはずなんですが。
原因がお分かりになられた方は、回答のほどよろしくお願いします。
318:デフォルトの名無しさん
09/08/10 21:04:57
SP1あてた?
319:デフォルトの名無しさん
09/08/10 21:51:31
使用OS:WindowsXP SP3
使用ソフト:MS VisualStudio 2008 Professional Edition
症状:デバッグ時に、"MSVCP90D.dllが見つからない"と表示される。このとき、ランタイムライブラリは"マルチスレッドデバッグ DLL(/MDd)""
試した対策:
(1)ランタイムライブラリを"マルチスレッドデバッグ(/MTd)"にして、デバッグ ⇒ 正常に開始。
(2)(1)をした後に、/MDdに戻して、デバッグ。 ⇒ 正常に開始。
(3)MSVCP90D.dll があるか、検索してみる。 ⇒ 見つかる。(正常に開始したほかのパソコンと同じような場所にあった。)
(4)URLリンク(support.microsoft.com)の方法を試してみた。
⇒ インストールできない。既にインスト済みか、ほかの条件が原因。
質問:
1./MDd でデバッグできない原因はなんでしょうか?その解決方法はあるのでしょうか?
2.C++のコンパイラーの設定で、/MTd を標準にできないでしょうか?
よろしくお願いします。
320:デフォルトの名無しさん
09/08/10 23:52:36
317です。
なぜか、二重投稿になっています。すみません。
>318
当ててなかったみたいです。自動更新で当たっているとおもっていました。
現在ダウンロード中です。解決したらまた報告します。
321:デフォルトの名無しさん
09/08/10 23:54:34
見間違えました。 320 は 319 です。
322:デフォルトの名無しさん
09/08/11 22:42:01
VC2008EESP1なんですがデバッガでXMMレジスタの中を見るには
どうすればいいんでしょうか
323:デフォルトの名無しさん
09/08/11 23:01:19
322レジスタで右クリックするだけでしたごめんなさい
324:デフォルトの名無しさん
09/08/14 03:06:27
Visual C++ 2008 EEを使っています
プロジェクトにソースファイルを次々に放り込んでいったら
ソースファイルの置いてある実フォルダが、大分カオスに散らかりました。
VCを開いてソリューションエクスプローラを開くと、そこではフィルタで整理されています。
VCのソリューションエクスプローラ以外からもソースファイルを開くことがあるので
実フォルダとソースファイルを整理したいのですが、そうするとVCがソースファイルを
見失ってしまいます。それに今後ソースファイルを追加する度にフォルダと
フィルタを手動で整理しないとダメになるので面倒です。
何かいい方法はありませんか?
325:デフォルトの名無しさん
09/08/14 03:26:53
がんばれ☆
326:デフォルトの名無しさん
09/08/14 09:22:39
>>324
先ずファイルを整理してから、ソリューションエクスプローラで追加しちゃいけないのか?
327:デフォルトの名無しさん
09/08/14 16:07:49
俺も使い始めてまもない程度だから正しいかわからんけど1プロジェクト1クラスを心掛けてる
追加インクルードにソリューションディレクトリを追加して
新しいクラスと関連の関数とかを一まとめにしたプロジェクトを作る
プロジェクト構成でEXEではなくLIBに変える
そんでクラスを利用するコードには
#include "ProjectName/HeaderName.h"
を追加
これで一つのクラスに対して一つのフォルダが割り当てられて、IDEのほうも混乱しない
でもこれだとプロジェクトつくるたびに構成を弄らないといけないのでそこが面倒
328:デフォルトの名無しさん
09/08/14 19:30:39
1プロジェクト1クラスはねーよwww
329:デフォルトの名無しさん
09/08/14 19:32:24
どんだけモノリシックなクラスを書いているのか、と。
330:デフォルトの名無しさん
09/08/14 20:01:28
じゃあどう管理してんだよ
331:デフォルトの名無しさん
09/08/14 20:16:09
管理人さんを雇えよ。未亡人で若い奴を。
332:デフォルトの名無しさん
09/08/16 16:48:52
デバッグすると
プログラム 'c:\Users\○○\Documents\visual studio2008\projects\test\debug\test.exe' を開始できません。
アプリケーション構成が正しくないため、このアプリケーションの開始に失敗しました。マニフェスト ファイルを参照してエラーの原因を調べてください。
アプリケーションの再インストールをすることで、この問題が解決する可能性があります。詳細については、アプリケーション イベント ログを参照してください。
と表示されてデバッグできません、ログにエラーは出てません。
表示されているフォルダにtest.exeは入ってます
どうしたら良いでしょうか?
333:デフォルトの名無しさん
09/08/16 17:01:34
あーっと
使ってる環境はVS2008でOSはWindows7 32bitです
334:デフォルトの名無しさん
09/08/16 17:04:00
>ログにエラーは出てません。
ちゃんとアプリケーション イベント ログを見た?
335:デフォルトの名無しさん
09/08/16 17:09:25
アプリケーション構成が正しくないため、このアプリケーションの開始に失敗しました。 に一致する日本語のページ 約 58,700 件中 1 - 50 件目 (0.28 秒)
336:デフォルトの名無しさん
09/08/16 17:43:31
>>334
"c:\Users\○○\Documents\Visual Studio 2008\Projects\test\Debug\test.exe" のアクティブ化コンテキストの生成に失敗しました。
従属アセンブリ Microsoft.VC90.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8" が見つかりませんでした。
詳細な診断を行うには sxstrace.exe を実行してください。
って出てました
あとビルドログに
LINK : 前回のインクリメンタル リンクで C:\Users\○○\Documents\Visual Studio 2008\Projects\test\Debug\test.exe が見つからなかったか、ビルドされませんでした。フル リンクを行います。
と出てましたがサッパリで・・・
337:デフォルトの名無しさん
09/08/16 17:45:56
あ、リリースにしてからデバッグ開始を押したら問題なく動きました
でもデバッグで動かないって何でだろう・・・
338:デフォルトの名無しさん
09/08/16 17:51:48
埋め込みマニフェスト無効にしたりするとうまく行くこともあるかもしれない
339:デフォルトの名無しさん
09/08/16 17:54:38
>>336,337
要は「msvrcr90d.dllが見つからない」と言っている。
もっとも、正式リリース前のOS上で動かしているのだから
何が起きても不思議ではない。
340:tor1.digineo.de
09/08/17 17:46:52
自動焼人 ★ = 自動保守 ◆KAWORUKOFI = 自動保守#K9K?_D[L
名言集 その4
『俺、100人規模の集団サイバーテロの主犯だったこともあるんだぜ』
スレリンク(news4vip板) のID:PVAf+dux0 = 自動焼人 ★
> 965 :以下、名無しにかわりましてVIPがお送りします [sage] :2009/08/10(月) 00:02:09.35 ID:PVAf+dux0
> まぁ何だ。
> 俺の過去の経歴に比べたら、割れ厨なんて鼻くそレベルなんだけどなw
> 100人規模の集団サイバーテロの主犯とか、いろいろとな。
----------------------------------------------
この自動焼人 ★メールマガジンの配信停止をご希望される方は
スレリンク(sec2chd板)
にて自動焼人 ★までご連絡ください
341:デフォルトの名無しさん
09/08/17 18:07:08
デバッグ開始をするとプログラムを実行して勝手に閉じてしまうんですけどこれってどうにかなりませんか?
デバッグ無しで開始をするとちゃんと何かキーを押すまでウィンドウが残るんですけど
プログラムの内容は多分一番簡単なハローワールドのプログラムです
342:デフォルトの名無しさん
09/08/17 18:12:47
>>341
なりません。
デバッグしてるのに途中でとめない場合ってどんな状況?
止めたけりゃ最後にブレークポイント置くとか。
343:デフォルトの名無しさん
09/08/17 18:23:23
>>342
何かキーを押さないと終了しない っていうプログラムにしないと勝手に終了しちゃうって事ですね
ありがとうございました
344:デフォルトの名無しさん
09/08/17 20:00:20
>>341
F8
345:デフォルトの名無しさん
09/08/18 17:53:13
質問です
エディットボックスのフォントがTerminalで、「電」や「j」を入力すると、下の部分が切れて表示されません
フォントサイズはCreateFont()で13を指定しています
フォントやフォントサイズを変えることなく、行間?を広げて、文字をすべて表示させることは可能でしょうか
もし可能であれば、方法を教えてください
お願いします
環境はOS:XP、バージョン:6.0です
346:デフォルトの名無しさん
09/08/19 01:58:35
ただのCからVC++に移行中なのですが、
フォームプロジェクトのmainの初期に自動で作成される引数の変数の宣言時に
array<System::String ^> ^args
と宣言されていますが、
<>内はarrayの型と予想がつきますが ^ にはどのような意味が有るのでしょうか?
ぐぐってもでてきませんorz ぐぐるワードでもいいのでご伝授お願いします
347:デフォルトの名無しさん
09/08/19 02:17:33
>>346
^は大雑把に言うと特殊な(すなわち.NET Frameworkが管理するメモリを指す)ポインタ型を示すものとして、*の代わりに使う。
VC++のCLR系プロジェクトでは、C++ではなく、C++/CLI言語が用いられる。
URLリンク(msdn.microsoft.com)(VS.80).aspx
「最良の」はかなり誇張表現だから、ある程度割り引いて受け止めてね。
348:デフォルトの名無しさん
09/08/19 09:50:38
>>346
VC++の中にもいろいろある。
フォームを使うのはC++/CLIだけど
それをわかって使ってるのでなければやめといたほうが・・
349:デフォルトの名無しさん
09/08/19 13:56:50
ちなみに.NETアプリ作るわけじゃないならC++/CLIを使う必要はないぞ><
Cから移植らしいので一応いっとく
350:デフォルトの名無しさん
09/08/20 03:41:59
VC++ってGUI作り易い?
351:デフォルトの名無しさん
09/08/20 04:20:57
うん
352:デフォルトの名無しさん
09/08/20 08:54:46
まぁ一番自由だよな
353:デフォルトの名無しさん
09/08/21 15:26:00
Microsoft Visual Studio 9.0のVC++を利用して
コマンドプロンプトで
cl /EHsc aaaaaa.cpp
とコンパイルしているのですが、
そのまえに毎回毎回
C:\○○○\VC\bin\vcvars32.bat
としないと動きません。
環境変数でパスを通すと解決するのかもしれませんが、
どうすればパスが通るのでしょうか?
354:デフォルトの名無しさん
09/08/21 15:27:15
>>346
gccとVC++は両方とも併用して挙動を覚えると良いと思うよ。
355:デフォルトの名無しさん
09/08/21 15:49:05
>>353
「Visual Studio 2008 コマンド プロンプト」を使う
356:デフォルトの名無しさん
09/08/21 16:45:25
>>353
.\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat の中身を覗いておみ
357:353
09/08/21 17:54:51
>>355
ファイラで作業中に、そのフォルダを現在のディレクトリとして
開いた一般のコマンドプロンプトで作業したいのです。
>>356
見てみました。
@SET VSINSTALLDIR=C:\Program Files\Microsoft Visual Studio 9.0
などのような記載が見つかりましたが、
ありすぎてどれを通せばいいのか分かりません。
お助けいただけますでしょうか?
358:デフォルトの名無しさん
09/08/21 17:59:26
それ用のバッチファイル作れば良いんじゃね?
359:355
09/08/21 18:37:37
>>357
>ファイラで作業中に、そのフォルダを現在のディレクトリとして
>開いた一般のコマンドプロンプトで作業したい
だから、「Visual Studio 2008 コマンド プロンプト」のショートカットをコピーして、
コピーしたショートカットのプロパティで「作業用フォルダ」を好きなフォルダに変更すればいいだけの話なんだが。
360:356
09/08/21 19:12:08
>>357 説明メンドイ
バッチファイルに何が書かれてるか分るくらいにしておいた方がいい鴨ね
似た様なことしてる人が居た
つ URLリンク(d.hatena.ne.jp)
361:357
09/08/21 21:22:33
>>359
ありがとうございます。
しかしその好きなフォルダは毎回変わりうるため
決め打ちはできないんです。
>>360
ありがとうございます。
そのリンク先のとおりにやってきます。
皆さんありがとうございました。
362:デフォルトの名無しさん
09/08/22 13:27:24
main.cppとmain2.cppにファイルを分けてコードを書いています
二つのファイル両方でvecter関数などを使いたい場合は、両方のファイルでvecterをincludeする必要があるのでしょうか?
363:デフォルトの名無しさん
09/08/22 13:53:07
ある。
というより、二つのファイルに共通なヘッダ(例:main.h)を作成して、インクルードするほうが良い。
364:デフォルトの名無しさん
09/08/22 13:57:18
おお、なるほど。そうします。ありがとうございました
365:デフォルトの名無しさん
09/08/22 16:32:39
ベクテー
366:デフォルトの名無しさん
09/08/22 23:28:23
class A{
public virtual func();
}
class B : public A
{
public func()
}
vector<A> list;
list[0].func();
ってやるとAのfuncが呼ばれるんだけどBのを呼びたい場合は
vectorはポインタを入れるしかないの?
367:デフォルトの名無しさん
09/08/22 23:40:24
参照を入れてもいいぞ。
368:デフォルトの名無しさん
09/08/22 23:57:50
【初心者歓迎】C/C++室 Ver.67【環境依存OK】
スレリンク(tech板)
C++相談室 part71
スレリンク(tech板)
スレを勃てるまでもないC/C++の質問はここで 12
スレリンク(tech板)
C/C++の宿題片付けます 130代目
スレリンク(tech板)
C/C++小心者スレッドPart1
スレリンク(tech板)
【C++】STL(Standard Template Library)相談室 11
スレリンク(tech板)
369:デフォルトの名無しさん
09/08/23 00:18:13
>>367
参照ってvector<A&>ってこと?
コンパイルエラーになるけど
370:デフォルトの名無しさん
09/08/24 08:09:09
Java使いですが、最近C++始めました
平山尚氏の「ゲームプログラマになる前に覚えておきたい技術」で
#include "GameLib/Framework.h"
namespace GameLib{
void Framework::update(){
unsigned* vram = videoMemory();
static unsigned i;
vram[ i ] += i * 100;
i += 9973; //1万以下最大の素数
i %= ( width() * height() );
}
}
というプログラムをサンプルソースのプロジェクトからデバッグ実行したところうまく動作しました
ところが、自分で新しく作ったプロジェクトで同じソースを書いてデバッグ実行したらリンクの時点で問題発生
これじゃ自分で新しくプロジェクトを作り出せないよー。
1>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: class std::locale::facet * __thiscall std::locale::facet::_Decref(void)" (?_Decref@facet@locale@std@@QAEPAV123@XZ) は既に GameLib_d.lib(Manager.obj) で定義されています。
1>libcpmtd.lib(ios.obj) : error LNK2005: "private: static void __cdecl std::ios_base::_Ios_base_dtor(class std::ios_base *)" (?_Ios_base_dtor@ios_base@std@@CAXPAV12@@Z) は既に msvcprtd.lib(MSVCP90D.dll) で定義されています。
1>libcpmtd.lib・・・について更に10項目
1>LINK : warning LNK4098: defaultlib 'LIBCMTD' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。
1>C:\Documents and Settings\デフォルトの名無しさん\My Documents\Visual Studio 2008\GameLib\TestGame05\Debug\TestGame05.exe : fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました。
C++は初心者用の参考書(270ページ)を一冊読んだのですが、例によってエラー処理について何も解説してくれてないので途方に暮れています
なにが原因と考えられるのでしょうか?
一行目のライブラリの設定は本の指示通りやってるので大丈夫だと思います(だからこそサンプルは動いたはず)