★初心者にVisual C++を教えるスレ★ Part34
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2009/06/19(金) 12:39:29お兄ちゃんお姉ちゃん達が優しく、時には厳しく回答してくれるスレッドです。
■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう、特にWindowsForm、MFC、Win32アプリケーションの区別。
・できるだけ具体的に。
質問の仕方については次のページが大変参考になります。
http://www.hyuki.com/writing/techask.html
■回答するにあたって
・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。
(MSDNのどの項目だとか、何のキーワードでGoogleするとか)
・ネタや煽りは軽く流しましょう。
過去スレ、関連スレなどは>>2-4辺り。
【過去スレ】
Part33 ttp://pc12.2ch.net/test/read.cgi/tech/1235292263/
Part32 ttp://pc11.2ch.net/test/read.cgi/tech/1225422971/
Part31 ttp://pc11.2ch.net/test/read.cgi/tech/1217494948/
0002デフォルトの名無しさん
2009/06/19(金) 12:40:01Part29 ttp://pc11.2ch.net/test/read.cgi/tech/1203007556/
Part28 ttp://pc11.2ch.net/test/read.cgi/tech/1196430042/
Part27 ttp://pc11.2ch.net/test/read.cgi/tech/1189394427/
Part26 ttp://pc11.2ch.net/test/read.cgi/tech/1176387917/
Part25 ttp://pc11.2ch.net/test/read.cgi/tech/1168354839/
Part24 ttp://pc10.2ch.net/test/read.cgi/tech/1158296664/
Part23 ttp://pc8.2ch.net/test/read.cgi/tech/1140711893/
Part22 ttp://pc8.2ch.net/test/read.cgi/tech/1131443284/
Part21 ttp://pc8.2ch.net/test/read.cgi/tech/1124806288/
Part20 ttp://pc8.2ch.net/test/read.cgi/tech/1120222322/
Part19 ttp://pc8.2ch.net/test/read.cgi/tech/1116209988/
Part18 ttp://pc8.2ch.net/test/read.cgi/tech/1113539594/
Part17 ttp://pc8.2ch.net/test/read.cgi/tech/1107926989/
Part16 ttp://pc8.2ch.net/test/read.cgi/tech/1101022051/
Part15 ttp://pc5.2ch.net/test/read.cgi/tech/1097880265/
Part14 ttp://pc5.2ch.net/test/read.cgi/tech/1093672937/
Part13 ttp://pc5.2ch.net/test/read.cgi/tech/1089011118/
Part12 ttp://pc5.2ch.net/test/read.cgi/tech/1083585833/
Part11 ttp://pc5.2ch.net/test/read.cgi/tech/1077965179/
Part10 ttp://pc5.2ch.net/test/read.cgi/tech/1074933908/ ※
Part09 ttp://pc5.2ch.net/test/read.cgi/tech/1068983609/ ※
Part08 ttp://pc5.2ch.net/tech/kako/1063/10630/1063029371.html
Part07 ttp://pc5.2ch.net/tech/kako/1056/10562/1056280510.html
Part06 ttp://pc5.2ch.net/tech/kako/1052/10529/1052931903.html
Part05 ttp://pc5.2ch.net/tech/kako/1048/10486/1048698321.html
Part04 ttp://pc5.2ch.net/tech/kako/1044/10441/1044196393.html
Part03 ttp://pc5.2ch.net/tech/kako/1038/10381/1038160750.html
Part02 ttp://pc3.2ch.net/tech/kako/1030/10309/1030985362.html
Part01 ttp://pc3.2ch.net/tech/kako/1023/10235/1023530449.html
0003デフォルトの名無しさん
2009/06/19(金) 12:40:19part 1 ttp://piza.2ch.net/tech/kako/970/970607517.html
part 2 ttp://piza.2ch.net/tech/kako/981/981630730.html
part 3 ttp://piza2.2ch.net/tech/kako/993/993186053.html
part 4 ttp://pc.2ch.net/tech/kako/1002/10021/1002165477.html
part 5 ttp://pc.2ch.net/tech/kako/1006/10068/1006834463.html
part 6 ttp://pc.2ch.net/tech/kako/1011/10116/1011615035.html
part 7 ttp://pc.2ch.net/tech/kako/1017/10178/1017843192.html
part 8 ttp://pc.2ch.net/tech/kako/1022/10224/1022499000.html
part 9 ttp://pc5.2ch.net/tech/kako/1036/10368/1036897197.htm
【関連スレ】
■MFC相談室 mfc20d.dll■
http://pc11.2ch.net/test/read.cgi/tech/1230219816/
Win32API質問箱 Build80
http://pc12.2ch.net/test/read.cgi/tech/1244057140/
【C++】 DirectX初心者質問スレ Part23 【C】
http://pc12.2ch.net/test/read.cgi/tech/1242977486/
C言語なら俺に聞け(入門篇) Part 49
http://pc12.2ch.net/test/read.cgi/tech/1244297476/
【初心者お断り】ガチ規格準拠C専用スレ Part133
http://pc11.2ch.net/test/read.cgi/tech/1201153965/
C++相談室 part70
http://pc12.2ch.net/test/read.cgi/tech/1244942050/
C/C++の宿題片付けます 127代目
http://pc12.2ch.net/test/read.cgi/tech/1244449887/
【初心者歓迎】C/C++室 Ver.66【環境依存OK】
http://pc12.2ch.net/test/read.cgi/tech/1243440528/
0004デフォルトの名無しさん
2009/06/19(金) 12:40:37猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
MSDN ライブラリ ※変更された
http://msdn.microsoft.com/ja-jp/library/default.aspx
Platform SDK Update ※変更された
http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en
http://www.google.co.jp/
Platform SDKの中で一番新しいのはこっち
Microsoft Windows Server 2003 R2 Platform SDK Web Install
http://www.microsoft.com/downloads/details.aspx?FamilyID=0baf2b35-c656-4969-ace8-e4c0c0716adb&DisplayLang=en
(ISO版などあり)
これ以降、Platform SDK + .NET Framework SDKとして
Windows SDKが公開されていて、その中で一番新しいのはこれ。
Windows SDK for Windows Server 2008 and .NET Framework 3.5
http://www.microsoft.com/downloads/details.aspx?FamilyID=f26b1aa4-741a-433a-9be5-fa919850bdbf&DisplayLang=en
少し前のバージョン(Vista + .NET 3.0の初期版)には日本語版もあったけど、
日本語化されているのは専ら.NET Framework部分だけ。
VC6対応の、最後のPSDKはここ。
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm
0005デフォルトの名無しさん
2009/06/19(金) 13:46:33ソースファイルに以下のプログラムを書いてもエラーが出ます。
ヘッダーファイルにも何か書かないとダメですか?
#include <stdio.h>
{
printf ("hello world\n");
return 0;
}
0006デフォルトの名無しさん
2009/06/19(金) 13:48:300007デフォルトの名無しさん
2009/06/19(金) 13:51:180008デフォルトの名無しさん
2009/06/19(金) 13:52:15mainがない。
0009デフォルトの名無しさん
2009/06/19(金) 13:52:34int main(void)
{
printf ("hello world\n");
return 0;
}
0010デフォルトの名無しさん
2009/06/19(金) 13:53:48#include <stdio.h>
main()
{
printf ("hello world\n");
return 0;
}
これだけ書きました。エラー1です。
0011デフォルトの名無しさん
2009/06/19(金) 13:54:57エラーでませんでした。みなさん、ありがとうございました。
0012808
2009/06/19(金) 14:14:31テンプレ作成してくれた>>809-812さん、スレ立てしていただいた>>818さん、
本当にどうも助かりました。このスレは、私の生きがいみたいなもので・・
立てられなくて困っていたので、本当に助かりました。どうもありがとう。
0013デフォルトの名無しさん
2009/06/19(金) 14:18:500014デフォルトの名無しさん
2009/06/20(土) 20:38:54もっと高度なIDEの使い方を勉強したいので、お勧めのサイトや本があったら教えて下さい。
0015デフォルトの名無しさん
2009/06/20(土) 21:34:16IDEを必要としていないと言うことだ。
必要もないのに勉強するだけ無駄
0016デフォルトの名無しさん
2009/06/20(土) 21:37:23人の使いかを見てて「え、こんな機能あったの?」って気づくことがある。
0017デフォルトの名無しさん
2009/06/20(土) 23:48:30C#とかVB.bet
などと違って
.netFrameworkとかいうやつ入れなくても動かせるの?
0018デフォルトの名無しさん
2009/06/20(土) 23:48:44>もっと高度なIDEの使い方
具体的にはどんな使い方が君とっての「高度な」使い方になるのかな?
0019デフォルトの名無しさん
2009/06/20(土) 23:49:51まずは試してみよ
0020デフォルトの名無しさん
2009/06/20(土) 23:55:02質問の仕方悪くてすまん。
作成俺が必要かってことじゃなくて
作ったexeを実行するために必要かってこと。
.net必須だとexeネットで配布しても実行できない人多いよね。
C#とかVB.netだとHello World一行表示するプログラムでも.netFramewok必要だったが
C++は必要ない?
0021デフォルトの名無しさん
2009/06/20(土) 23:59:24ライブラリをスタティックリンクしてEXEを作成すると、ランタイムライブラリの類は不要。単体で実行できる。
0022デフォルトの名無しさん
2009/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コツコツ読むしかないですかね。
0023デフォルトの名無しさん
2009/06/21(日) 01:31:28>#define WM_USER_EXAMPLE (WM_USER+1)
#define WM_USER_EXAMPLE (WM_APP+1) // こっちにしとき。
0024デフォルトの名無しさん
2009/06/21(日) 02:03:38そもそも、IDEの支援を当てにするなら、C#とかにしたほうがいい。
C++は、インテリセンスが運良く出て来れば万々歳って言語だから。
0025デフォルトの名無しさん
2009/06/21(日) 08:49:37初心者ですみませんが、EXEファイルはどうやって作るんですか?
0026デフォルトの名無しさん
2009/06/21(日) 10:45:500027デフォルトの名無しさん
2009/06/21(日) 17:53:230028デフォルトの名無しさん
2009/06/21(日) 18:06:440029デフォルトの名無しさん
2009/06/21(日) 18:10:300030デフォルトの名無しさん
2009/06/21(日) 18:35:090031デフォルトの名無しさん
2009/06/21(日) 19:25:13dllはなんとかビルドできたんですがmainのほうのプロジェクトがビルドできません
0032デフォルトの名無しさん
2009/06/21(日) 19:34:48ここはコミュニケーションが取れる人間のための場所だ
0033デフォルトの名無しさん
2009/06/21(日) 19:57:29[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;};
0034デフォルトの名無しさん
2009/06/21(日) 19:58:11[main.cpp]
#include "dll.h"
int main(void) {
DLLFunc();
return 0;
}
・ソリューションエクスプローラー上でdll.hをコピー
・dllのほうのprojectのプロパティ->構成の種類をDLL
・依存関係でmainの依存先をdllに
・ソリューションのビルド
ここまでやったんですが、
・デバッグで使用する実行ファイル名を指定してください
といわれたので、何もいじらずにC:\WINDOWS\system32\regsvr32.exeを選択
したんですが、デバッグなしで開始したら
・DLLが指定されていません
と表示されてなにも実行されません
なにが問題なんでしょうか
0035デフォルトの名無しさん
2009/06/21(日) 19:59:040036デフォルトの名無しさん
2009/06/21(日) 20:46:272つは同じソリューションだよね。
mainのほうをスタートアッププロジェクトにしている?
あと、regsvr32はこういう普通のDLLには無関係。
0037デフォルトの名無しさん
2009/06/21(日) 21:30:33どうも有難うございました
0038デフォルトの名無しさん
2009/06/22(月) 07:53:32画像のようにタブ内の編集を行いたいのです
どのようにすれば編集は可能なのでしょうか?
http://sakuratan.ddo.jp/uploader/source/date113469.jpg
サンプルソースなどあると助かります
0039デフォルトの名無しさん
2009/06/22(月) 10:50:52どうやったらその画面になるの?
ソースコードの画面から切り替えられないよ。
横レスすまん。
0040デフォルトの名無しさん
2009/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 なんかは後者できちんと表示されています。
0041デフォルトの名無しさん
2009/06/22(月) 14:25:200042デフォルトの名無しさん
2009/06/22(月) 18:31:26「ダメ」だけだから無視される。エラーが出たならエラーメッセージ、そうでないならどうダメだったか書くのが常識。
0043デフォルトの名無しさん
2009/06/22(月) 20:31:33CStringの定義を辿ってみろ。
メンバ変数が文字列へのポインタ1つしかない。
だから、可変個引数でもconst char*を渡したかのような振る舞いが可能になっている。
0044デフォルトの名無しさん
2009/06/22(月) 21:07:430045デフォルトの名無しさん
2009/06/23(火) 16:20:560046デフォルトの名無しさん
2009/06/23(火) 17:30:15キャストなしで可変長引数の関数にクラスを渡したら、
どのメンバ関数が呼び出されるんだろうと思って、MFCの
CStringで確認してみたら、クラスがそのまま値渡しされてる
だけだったな。
CStringの場合、クラスのメンバ変数がchar*だけだったから、
結果的にchar*の変数を渡したのと同じ動きになってた。
(const char*)でキャストすると、operator char*()が呼ばれて、
メンバ変数のchar*の変数を渡してた。(可変長引数の関数に
渡される値は結果的に同じ)
そのCLocalTimeは、メンバ変数が二つあるから、それが二つとも
スタックに詰まれて、おかしな動きになってるんだろうな。
0047デフォルトの名無しさん
2009/06/23(火) 17:59:160048デフォルトの名無しさん
2009/06/24(水) 06:04:29デバッグ中にアサートで停止した時に、実行したコードを1行ずつ巻き戻す事ってできないでしょうか?
0049デフォルトの名無しさん
2009/06/24(水) 06:29:00巻き戻し自体はできない
しかし、現在の実行行(正確には次に実行する行)はアセンブラレベルではは eip レジスタに格納されているので、
逆アセンブラウィンドウを開いて、このレジスタの値を書き換えることで、
実行済みの行を含む任意の箇所にジャンプできる
この機能を使うことで、変数の値を書き換えながら、実行済みの行を無理やり再実行させたりできる…はず(うろ覚え)
当然、レジスタやメモリの値も自分で書き戻してやる必要があります
0050デフォルトの名無しさん
2009/06/24(水) 07:08:05thx
レジスタやメモリいじるのは大変そうだ・・・。
0051デフォルトの名無しさん
2009/06/24(水) 15:37:450052デフォルトの名無しさん
2009/06/24(水) 17:01:51お店に行き
10万支払う
0053デフォルトの名無しさん
2009/06/24(水) 17:12:030054デフォルトの名無しさん
2009/06/24(水) 17:52:26ggrks
値段も
ggrks
0055デフォルトの名無しさん
2009/06/25(木) 00:00:280056デフォルトの名無しさん
2009/06/25(木) 00:05:510057デフォルトの名無しさん
2009/06/25(木) 00:12:540058デフォルトの名無しさん
2009/06/26(金) 18:18:00と
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 があります。
これだけを配布すればいいんですか?
0059デフォルトの名無しさん
2009/06/26(金) 18:19:13Debug版はランタイムライブラリがないので動きません。
0060デフォルトの名無しさん
2009/06/26(金) 18:34:57ありがとう。
aab\Release
のフォルダがありません。
どうすればファイル作成できますか?
0061デフォルトの名無しさん
2009/06/26(金) 18:38:540062デフォルトの名無しさん
2009/06/26(金) 18:41:030063デフォルトの名無しさん
2009/06/26(金) 19:00:57\aab\Release
ができました。
フォルダの中に
aab.exe
aab.pdb
が作成されました。
両方ZIPでまとめて配布ですか?
0064デフォルトの名無しさん
2009/06/26(金) 19:02:190065デフォルトの名無しさん
2009/06/26(金) 19:08:27わかりました(^^)!
0066デフォルトの名無しさん
2009/06/26(金) 19:42:050067デフォルトの名無しさん
2009/06/26(金) 19:43:41しこしこMFCやってんだけどそろそろ
買い換えようと思うんだけど、VC6からVS2008に
あくまでMFC使用しかしないということで移行する価値ってある?
0068デフォルトの名無しさん
2009/06/26(金) 19:52:47http://doudu.youkoso.sa-suke.com/
0069デフォルトの名無しさん
2009/06/26(金) 20:16:100070デフォルトの名無しさん
2009/06/26(金) 20:55:220071デフォルトの名無しさん
2009/06/27(土) 03:11:33が入ったフォルダを落としたんですが
こういう形であるソースコードをvisual studio 2003で
コンパイル、実行するにはどうすればいいですか?
0072デフォルトの名無しさん
2009/06/27(土) 03:15:430073デフォルトの名無しさん
2009/06/27(土) 03:21:02int 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です。
文字は
です。
」
と出ます。文字の入力ができません。どうしてでしょうか?
0074デフォルトの名無しさん
2009/06/27(土) 03:22:05すみません。
設定用のバッチファイルを呼ぶってどうすればいいんですか?
0075デフォルトの名無しさん
2009/06/27(土) 03:25:27scanf()は使わんから細かい挙動を知らんけど、
表示から考えると、8のあとの改行が%cでよまれてるっぽいな。
0076デフォルトの名無しさん
2009/06/27(土) 03:33:39本当ですね。
「
数字は?(8gと入力)8g
文字は?数字は8です。
文字はgです
」
と表示されます。やっぱり謎です。
0077デフォルトの名無しさん
2009/06/27(土) 07:40:10scanfは、標準入力から直接受け取らないで、バッファに一旦入力した文字を格納する。
8を入力したとき、バッファには"8","\n"が格納される
それをscanfが読み込んで、バッファには"\n"が残っている
で、次のscanfでは「入力待たなくてもバッファの残りを代入すればよくね?」と考えて改行を読み込んじゃう
8gと入れたときは\nをgに置き換えてるだけ
0078デフォルトの名無しさん
2009/06/27(土) 08:34:04入門しか使わないくせに、癖が強すぎて入門者殺し
実用的なプログラ身ではscanf関数はまったく使わない
0079デフォルトの名無しさん
2009/06/27(土) 11:54:19Visual Studio 2008 Express Edition と platform SDK で Win32プログラムを
作りたいんだけど、普通のC言語で作れますか?
0080デフォルトの名無しさん
2009/06/27(土) 11:57:24どうせ初心者にはおまじないと大差ないレベルなんだから
安全な方法をブラックボックスとして与えればいいのにねー
なんでscanfなんだろう
0081デフォルトの名無しさん
2009/06/27(土) 12:22:03scanf程度でも十分初心者に優しかった。
0082デフォルトの名無しさん
2009/06/27(土) 16:27:32できる
0083デフォルトの名無しさん
2009/06/28(日) 10:25:18template typedefとか使いたいんですけど
0084デフォルトの名無しさん
2009/06/28(日) 14:48:050085デフォルトの名無しさん
2009/07/02(木) 22:40:170086デフォルトの名無しさん
2009/07/03(金) 00:06:090087デフォルトの名無しさん
2009/07/03(金) 15:15:44次のVisual C++ 2010から少しずつ始まる。
http://www.codeguru.com/forum/showthread.php?t=466893
0088デフォルトの名無しさん
2009/07/04(土) 01:09:09ウィンドウに配置したコントロールのDisabledの値を変更するにはどうすればいいでしょうか?
0089デフォルトの名無しさん
2009/07/04(土) 01:23:24EnableWindow
0090デフォルトの名無しさん
2009/07/07(火) 17:49:35が、最初のところでいきなりつまづいてしまいました。
プログラムのエントリポイントがどこにあるのかわからないのです。
ソースのあるフォルダ全体に対してgrepをかけてみたのですが、mainもWinMainも見あたらず、
リンカのオプションにも/ENTRYは使われていませんでした。
プロジェクトファイルにもEntryPointSymbolの記述がありません。
私はこれ以外にエントリポイントを指定する方法を知らないのですが、
あとはどこを見ればいいのでしょう?
環境はVisual Studio 2008です。
0091デフォルトの名無しさん
2009/07/07(火) 17:55:560092デフォルトの名無しさん
2009/07/07(火) 18:05:05MFCならプロジェクト名.cppにInitInstance()があるからその辺りがほぼエントリポイントだが、
そのレベルだととてもじゃないがメンテナンスは無理。
先ずはMFCアプリの解説本を読んで簡単なMFCアプリを作れるようになってからだと思う。
# 逆に言えば、エントリポイントなんて意識する必要ないことを知っていれば簡単なんだけどね。
0093デフォルトの名無しさん
2009/07/07(火) 18:22:46で、Visual StudioでF11を押したら、とりあえずエントリポイントっぽいところが出てきました。
恥ずかしいことに、ステップ実行にはブレークポイントが必須だと思い込んでいました。
いきなり頭からステップ実行できたんですね。
そのあと順にステップ実行していったら、別のDLLの中でインスタンスの初期化をしていました。
どおりで、ソースをいくら見てもわからないわけです。
とりあえず「MFC」でぐぐったら、どういう物なのかわかってきました。
ありがとうございました。
0094デフォルトの名無しさん
2009/07/07(火) 18:32:09.netだったりしてないよね?w
0095デフォルトの名無しさん
2009/07/07(火) 20:19:45ありがとうございます。
もう一つ質問です。
2008EEのWin32アプリでは「クラス追加ウィザード」というのは使えないのですか?
使えない場合、自前でやる方法があれば教えてください。
0096デフォルトの名無しさん
2009/07/07(火) 21:20:01input関数で.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でやりました
0097デフォルトの名無しさん
2009/07/07(火) 21:23:26スレ違い
0098デフォルトの名無しさん
2009/07/07(火) 21:31:26だと思うなら誘導しろ。
0099デフォルトの名無しさん
2009/07/07(火) 21:36:24VBのスレを知らんから誘導できん。すまんな。
0100デフォルトの名無しさん
2009/07/07(火) 21:43:30Visual まで読んで あっVB とか思い込んでました
0101デフォルトの名無しさん
2009/07/08(水) 02:06:18そういう機能を持った商用の良いライブラリはないでしょうか。
PIC Video codec等はアプリケーションに見えるのですが、
ライブラリとして使えないものでしょうか。
0102デフォルトの名無しさん
2009/07/08(水) 10:17:000103デフォルトの名無しさん
2009/07/08(水) 20:27:55CppUnitを導入しようと思いまして、テストの出力を出力ウィンドウなどに送りたいと思います。
TRACEマクロはMFCじゃないと使えないようですし、何か方法あるのでしょうか?
コマンドプロンプトを起動してcoutしても出ないようですし。
よろしくお願いします。
0104103
2009/07/08(水) 20:34:31見つけました
OutputDebugStringですね
散々探して見つからなくて、書き込んでちょっと探すと見つかる・・・
このパターンが多いな
失礼しまいた。
0105デフォルトの名無しさん
2009/07/09(木) 00:56:20テンプレートの一番最初にあるWindowsフォームアプリケーションを選択して
フォームにボタンを置いてネットのサンプルをそのままコピペしたのですがコンパイルできません。
書き足したのはこの1行だけです。
(前略)
private void button1_Click(object sender, EventArgs e)
{
HWND hWnd = FindWindow("無題", null); //←追加
}
(以下略)
どう直せばいいんでしょうか?
0106デフォルトの名無しさん
2009/07/09(木) 02:18:43その1行自体は<windows.h>をインクルードすればいいのだが、
フォームアプリケーション(というよりCLRプロジェクトすべて)は、
<windows.h>ベースの仕組みではないから、お前が見ているであろうサンプルすべてが参考にならないぞ。
0107デフォルトの名無しさん
2009/07/09(木) 02:37:34動的輪郭に興味があり↑の物体追跡(Object Tracking)のサンプルコードを動かそうと思ったのですが、
warning C4305: '初期化中' : 'double' から 'float' へ切り詰めます。
warning C4305: '初期化中' : 'double' から 'float' へ切り詰めます。
warning C4305: '初期化中' : 'double' から 'float' へ切り詰めます。
error C3861: 'snprintf': 識別子が見つかりませんでした。
エラー 1、警告 3
となってしまいます。
opencvの設定についてはttp://imagingsolution.blog107.fc2.com/blog-entry-134.htmlを参照して行いました。
環境はVisual Studio 2008です。
問題点のご指摘よろしくお願いします。
0108デフォルトの名無しさん
2009/07/09(木) 06:01:38VC用のソースを探すかVC用に修正して使う。
0109デフォルトの名無しさん
2009/07/09(木) 11:55:32ありがとうございます。
VC++でぐぐっても、対象となるコンパイラのバージョンが明記されてないサイトが多くて困っています。
今のところVC++6.0やVS2005のサイトが多いでしょうか、
ある程度知識が付けば、ソースを見て判別できるようになると思うのですが。
最初に選ぶプロジェクトのテンプレートを変えれば、ヘッダの追加をしなくてもそのまま動く環境になりますか?
それとも2005用のソースを2008でコンパイルするには、毎回手直しが必要になってしまうものなんでしょうか。
0110デフォルトの名無しさん
2009/07/09(木) 13:15:51いや、大抵のことはバージョン問わず使える。
VC++で作れるアプリには、ネイティブアプリとマネージアプリと2種類あって、これがまるで別物。
Windowsフォームアプリケーションのプロジェクトは後者。<windows.h>を使うのは前者。
VC++のプロジェクトの中では、Win32アプリケーションなどが前者に属する。
自分が何を使って作りたいのか決め、それについての解説だけを追わないと混乱する。
0111デフォルトの名無しさん
2009/07/09(木) 14:19:23わかりました。
つまり、昔ながらのstatic xxx main関数があって、ソースの先頭に#include hoge.hが並んでいるような物が
今はネイティブアプリと分類されている、という解釈でよいでしょうか?
0112デフォルトの名無しさん
2009/07/09(木) 14:38:310113デフォルトの名無しさん
2009/07/09(木) 18:17:12「新しいプロジェクト」でテンプレートが5つのグループに分かれていますが、
CLRのグループに属しているのがマネージドアプリなんでしょうか。
すると一番下のWin32というのが、昔SDKと呼ばれていたものに相当するのかな?
古いサンプルを動かしたいときはMFCかWin32を選べばよさそうに思えます。
こんな理解で合ってますか?
0114デフォルトの名無しさん
2009/07/09(木) 18:41:18自分の目で確認したほうが人に聞くよりはるかに理解しやすい。
0115デフォルトの名無しさん
2009/07/09(木) 18:54:05最近はVCの入門書売ってないのか?
0116デフォルトの名無しさん
2009/07/09(木) 19:07:48移植とか移行とか処理系の世代間の差異を解説したものは少ないと思うよ
ライブラリの比較とか、ソースの記述方法の変化みたいな話はCマガジンとかでよく見る
0117デフォルトの名無しさん
2009/07/09(木) 19:44:310118デフォルトの名無しさん
2009/07/09(木) 22:23:240119デフォルトの名無しさん
2009/07/09(木) 23:33:39officeファイル(ppt,pptx,doc,docx)からファイルの情報(テキスト)を取得できる
プログラムは作れますか?
できればofficeの入ってないPCで実行したいです
0120デフォルトの名無しさん
2009/07/09(木) 23:35:030121デフォルトの名無しさん
2009/07/10(金) 01:03:460122デフォルトの名無しさん
2009/07/10(金) 08:36:41現実にそういうプログラムが存在するか調べる。
存在するならどうやってるか調べる。
0123デフォルトの名無しさん
2009/07/10(金) 10:57:53初心者に優しくないのなら書き込むな。
立ち上げるな
0124デフォルトの名無しさん
2009/07/10(金) 11:30:07小学生なら小学校の教科書の範囲を勉強すればいいし
初心者なら入門書の範囲を勉強すればいい
教科書の範囲外は卒業してから
0125デフォルトの名無しさん
2009/07/10(金) 13:40:100126デフォルトの名無しさん
2009/07/10(金) 13:53:58取り出したい情報による。
ファイルサイズとか更新日時なんてのはOfficeとか関係ないし
作者名や会社名は文字列がそのまま入ってるから、それっぽいデータなら
なんとか取り出せないこともない。
ちゃんとしたBuiltinDocumentPropertiesなんかの情報が欲しいんだと、
Officeのインストールされてないマシンではちょっと難しい。
それこそファイルのヘッダから構造体のポインタを追っかけるような
プログラムになると思う。初心者スレで質問してるレベルでは無理。
0127デフォルトの名無しさん
2009/07/10(金) 14:11:45>初心者スレで質問してるレベルでは無理。
=初心者ぷっ!w
0128デフォルトの名無しさん
2009/07/10(金) 14:37:060129デフォルトの名無しさん
2009/07/10(金) 15:16:06「会社のマシンなのでOOoとか勝手にインストールできないんです」
0130デフォルトの名無しさん
2009/07/10(金) 18:11:210131デフォルトの名無しさん
2009/07/10(金) 19:46:26どの程度のことをやりたいかにもよるが、いずれにせよ基本的に適当なライブラリを見付けてそれを使えと言うことになる。
ただし、2007形式のほうはXMLをZIPで固めただけなので、その手のライブラリがなくてもなんとかなるかもしれない。
参考: http://www.atmarkit.co.jp/fjava/special/ooxml02/ooxml02_2.html
ただ、Officeの存在を当てにしていいならそのほうがずっと簡単。
OfficeそのものがプログラムからOffice形式のファイルを読み書きその他するライブラリとして機能する。
0132119
2009/07/10(金) 20:54:14OpenOfficeで開けばいいのですがそこを自動化するプログラムを作成したいです。
>>126
具体的には以下の情報です
docファイル 本文、作者、更新時間
pptファイル 使われているテキスト、ノート、作者、更新時間
>>131
2週間ほど勉強してdocx,pptxはそのzip展開して情報を取り出すことまでできました。
docファイルとpptファイルがどうしようか悩んでいます。
バイナリ仕様が公開されているようですがどうも理解できません
>>126さんにあるようにヘッダから構造体、ポインタを勉強。
又は、利用できるライブラリ(フィルターでいいんでしょうか?)を探す。
この方法でいいんでしょうか?
0133デフォルトの名無しさん
2009/07/10(金) 20:59:50そんなのとっくの昔にやってるってさ
0134デフォルトの名無しさん
2009/07/10(金) 21:23:49XDOC2TXT 呼び出せよ 割と使っているのは多い
0135デフォルトの名無しさん
2009/07/10(金) 21:29:37GoogleXdoc
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のエクスポート形式
http://www31.ocn.ne.jp/~h_ishida/xdoc2txt.html
0136デフォルトの名無しさん
2009/07/10(金) 21:38:280137デフォルトの名無しさん
2009/07/10(金) 21:47:520138デフォルトの名無しさん
2009/07/10(金) 21:55:41ありがとうございました。
こういう質問はどこでするのが適切でしたか?
0139デフォルトの名無しさん
2009/07/10(金) 22:12:28officeでもプログラムでも、いくらでもキーワード出るだろ
0140デフォルトの名無しさん
2009/07/11(土) 22:39:34ってプリプロセッサですよね?
どうやってプリプロセッサで
インクルード1回だけ
ってのを実現しているのでしょうか?
0141デフォルトの名無しさん
2009/07/11(土) 22:42:08一般的なインクルードガードの手法はご存じない?
0142デフォルトの名無しさん
2009/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で作成しています。
よろしくお願いします。
0143140
2009/07/11(土) 22:49:33存じ上げています。
#ifndef ***
#define
本ソース
#endif
ですよね。
プリプロセッサは
コンパイラに引き渡す前の字句の置き換えを行うものだと
いう認識なのですが、
そうだとすると
#pragma once
ではどうやっているのか不思議だなぁということです。
0144デフォルトの名無しさん
2009/07/11(土) 22:58:56それなら話は簡単。内部的には同じことをやっていると思われ。
例えば/usr/include/stdio.hに#pragma oneceと書いてあったら、
#ifndef _USR_INCLUDE_STDIO_H
#define _USR_INCLUDE_STDIO_H
...
#endif
と書いてあると見做せばいいわけだ。
あとはここも要チェック。
スレを勃てるまでもないC/C++の質問はここで 11
http://pc12.2ch.net/test/read.cgi/tech/1245059383/686,687
0145デフォルトの名無しさん
2009/07/11(土) 23:07:28ようするにプリプロセッサが特別扱いで処理している。
字句の置き換えはやることの1つに過ぎない。
>>142
プロジェクトのプリパティのリンカの「追加の依存ファイル」のところにshell32.lib追加してみたら?
0146デフォルトの名無しさん
2009/07/11(土) 23:08:13なるほど。
ファイル名を利用しマクロ化しているなどの実装が考えられるというわけですね。
ありがとうございました。
0147デフォルトの名無しさん
2009/07/11(土) 23:11:55#include <shellapi.h>
#pragma comment(lib, "shell32.lib")
0149デフォルトの名無しさん
2009/07/12(日) 10:23:17#が多いんだけど
どっちで勉強してもいいんだろうか
MFCとかCOMとかAPIっていまさら何ですかね
0150デフォルトの名無しさん
2009/07/12(日) 11:08:52そりゃ両方できた方がいい
MFCが必要かどうかは作りたい物によるけど、COMとAPIは知らんと話にならんぞ
0151デフォルトの名無しさん
2009/07/12(日) 11:41:42じゃあ、その二つは早急に習得します
一か月ぐらいでかな
0152142
2009/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をインクルードしています。
よろしくお願いします。
0153デフォルトの名無しさん
2009/07/12(日) 12:55:01そういう質問ばかり増えるとおれらが困るので調べ方を教えておく
MSDNで目的の関数(ここではLoadImage関数)の解説を出す
http://msdn.microsoft.com/ja-jp/library/cc364835.aspx
最後のほうに
ヘッダーファイル xxxx.h をインクルード
ライブラリ xxxx.lib を使用
とか書いてある。それでもだめなら聞きに来なされれ
0154デフォルトの名無しさん
2009/07/12(日) 12:56:440155デフォルトの名無しさん
2009/07/12(日) 13:02:59APIを使う場合は必要なLibをいちいち全部自前でリンクしなきゃならないのかい?
0156デフォルトの名無しさん
2009/07/12(日) 13:13:52C言語系では必要なLIBは自分で指定すんのが基本だからな
宿題スレなんか見てると、よく数学ライブラリをリンクしないで
コンパイル通りませーんって泣いてる初心者がいるよなw
0157デフォルトの名無しさん
2009/07/12(日) 13:14:490158142
2009/07/12(日) 13:56:11教えてくださったページで、無事コンパイルが通りました。
ありがとうございます。
0159デフォルトの名無しさん
2009/07/12(日) 14:30:21C#はC++とは全く別の言語だぞ。名前がよく似ているだけで。
0160デフォルトの名無しさん
2009/07/12(日) 15:03:06C#はクソ言語
・・・とまでは言わないけど、
Javaと同じでC++より楽に習得できる。
C++はバカには使えないほど高度(変態)な言語だが
使いこなせるヤツはもう本当にすごい。
ちなみに俺はまだまだまだまだ使いこなせてません。
0161デフォルトの名無しさん
2009/07/12(日) 15:27:240162デフォルトの名無しさん
2009/07/12(日) 16:01:46API 始めたばっかだけど
0163デフォルトの名無しさん
2009/07/12(日) 18:08:11改善方法を教えてください。DirectX SDK November2007が入ってます。OSはXPSP3です。
0164デフォルトの名無しさん
2009/07/12(日) 18:29:28cppはテキストファィルだが、どこからどうやって開こうとしてる?
たとえばエクスプローラーからcppファイルをダブルクリック、とか
IDEからcppを右クリックしてコードを表示、とか。
0165デフォルトの名無しさん
2009/07/12(日) 23:21:49レス遅れましてすいません。
ソリューション開いてソースフォルダにあるcppファイルをダブルクリックで開こうとしてます。
0166デフォルトの名無しさん
2009/07/13(月) 00:20:02うまくいったら規定値に設定で
0167デフォルトの名無しさん
2009/07/13(月) 00:55:16うまくいかないです・・・。VC上で開くことは出来たのですが文字化けしててダメでした。
VC入れなおしても直らないし、ウイルスに感染してるので設定がめちゃくちゃになったのかもしれません。
なのでOS入れなおすことにしました。お騒がせしてすいません。レスありがとうございました。
0168デフォルトの名無しさん
2009/07/13(月) 11:55:250169デフォルトの名無しさん
2009/07/13(月) 21:05:410170デフォルトの名無しさん
2009/07/13(月) 21:18:16C#でclass C {static void Main() {}}のような何もしないプログラムを書いても
.NET Frameworkが実行に必要なのと同じようなことと言えばいいかな。
そうではなくて、ネイティブコードを混ぜたいという意味なら、
#pragma unmanagedなどで切り替えできる。
0171デフォルトの名無しさん
2009/07/13(月) 21:21:49よくわかりました
ありがとうございます
0172デフォルトの名無しさん
2009/07/14(火) 17:38:13スタックが少なくなったらエラー処理がしたいので、お願いします。
0173デフォルトの名無しさん
2009/07/14(火) 17:41:25スタックオーバーフローを回避したいならヒープ領域を使えば?
0174デフォルトの名無しさん
2009/07/14(火) 17:46:43現在は異常終了してしまうし。固定値で検査は出来るけど、
固定値は入れたくないし。
0175デフォルトの名無しさん
2009/07/14(火) 17:55:170176デフォルトの名無しさん
2009/07/14(火) 17:57:13スタックオーバフローチェックのコンパイラオプションではダメなの?
0177デフォルトの名無しさん
2009/07/14(火) 18:01:460178デフォルトの名無しさん
2009/07/14(火) 18:07:27その辺はプログラムを作るときに工夫するよう、自分で考えたほうがいい。
あれは簡単には解けない、ってことを確認するのも勉強のうちだから。
学生じゃなかったら的外れな回答でごめん。
0179デフォルトの名無しさん
2009/07/14(火) 18:17:52と言うのは正しい。しかしまあ、出来るならば再帰の中で検査をしたいと
思っています。今現在は#define STACKSIZE 1000000 で固定値で
検査をしているのですが、コンパイルオプション変えるたびにプログラム
修正もいやだなーと。しかし、調べた限り簡単では出そうに無いですね。
あきらめて固定値で行こうと思います。
0180デフォルトの名無しさん
2009/07/14(火) 18:37:58ttp://www.nminoru.jp/~nminoru/programming/stackoverflow_handling.html
0181デフォルトの名無しさん
2009/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;
}
0182デフォルトの名無しさん
2009/07/14(火) 19:31:58[00130000 00126000]
のStackBase,とStackLimitの範囲が1000000も無い、
スタックオーバフローは約1000000でオーバーしているので正しい
なぜなんだろう?
0183デフォルトの名無しさん
2009/07/14(火) 19:32:48VisualStudioでC++のプロジェクトを作ると、以下のようなグローバル変数が自動的に宣言されますが、
TCHAR szTitle[MAX_LOADSTRING]; // タイトル バーのテキスト
ここにTCHAR型のローカル変数と同じ方法で文字列を代入しようとすると
コンパイルエラーになってしまいます。
TCHAR test[MAX_LOADSTRING] = _T("これは大丈夫");
szTitle = _T("エラーになる");
同じ型の変数を宣言しているつもりですが、結果が違ってしまうのはどうしてでしょう?
0184デフォルトの名無しさん
2009/07/14(火) 19:34:34C言語の入門書本屋で買ってこい
0185181
2009/07/14(火) 19:36:01あったが、それしかないのか? ちょっとやってみる。
0186デフォルトの名無しさん
2009/07/14(火) 19:37:56だからぁ、>176じゃダメなの?
0187デフォルトの名無しさん
2009/07/14(火) 19:40:47/RTC、/GSの事なら全くの別物
0188デフォルトの名無しさん
2009/07/14(火) 19:47:21コミット済みのサイズだからじゃね
0189181
2009/07/14(火) 20:07:36コミットのサイズ変えても、出力は変わらず。
う〜〜ん、例外検出がなかなかうまくいかず。
それにわざとエラー出して、サイズ検出もなんとなく納得できないし、
結局、固定で持ったほうが早そうな気がしてきました。
どうせコンパイルするんだし…
皆さんありがとうございました。
0190181
2009/07/14(火) 20:18:00やはりコミットで増えるようですね。最大値は相変わらず不明ですが。
[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
この後オーバーフロー
0191デフォルトの名無しさん
2009/07/15(水) 09:39:53馬鹿だから答えられないのですね。
書き込むな!クズ!
0192デフォルトの名無しさん
2009/07/15(水) 09:55:29その一言でキミの相手するやつは激減したよ。
いつもそんな調子だから人に相手されなくなるんだよ。
0193デフォルトの名無しさん
2009/07/15(水) 09:59:10文字列もどきの処理は、型によってケースバイケースでわかりにくいからねえ。
もうちょっとマクロとか関数が整理されてたらよかったんだけど。
そういうのの一覧が載った本を見たほうが早いと俺も思うよ。
さもなくば、文字列がもうちょっと簡単に使えるC#あたりに乗り換えるか。
その場合は
_tcscpy_s(szTitle, _T("てすと"));
ただしコピー先のサイズは固定で自動的に拡張してくれないから
文字列の長さがコピー先の容量を超えてると代入に失敗する。
コンパイル時か実行時か、どちらか容量オーバーが発見されたタイミングでエラーが出る。
0194デフォルトの名無しさん
2009/07/15(水) 10:13:06馬鹿がうつった?
0195デフォルトの名無しさん
2009/07/15(水) 10:49:59やらないのはできないのと一緒だって
早くハロワ行けよ
0196デフォルトの名無しさん
2009/07/15(水) 23:35:30デバッグ用に使ってるのを見かけたんですがやり方が書いてありませんでした
0197デフォルトの名無しさん
2009/07/16(木) 00:15:46OutputDebugString
0198デフォルトの名無しさん
2009/07/16(木) 00:23:190199デフォルトの名無しさん
2009/07/16(木) 00:33:230200デフォルトの名無しさん
2009/07/17(金) 15:35:370201デフォルトの名無しさん
2009/07/17(金) 15:53:470202デフォルトの名無しさん
2009/07/17(金) 17:24:34標準でSuppressUnmanagedCodeSecurityAttributeが付くので、
ネイティブコードの呼出はC++が速いらしい。
(もちろん、C#やVB.NETでもSuppressUnmanagedCodeSecurityAttributeを使えばその点は同じになる)
0203デフォルトの名無しさん
2009/07/18(土) 00:14:35レスありがとう
0204デフォルトの名無しさん
2009/07/18(土) 00:15:22詳しくありがとうございます
0205デフォルトの名無しさん
2009/07/19(日) 04:41:53Visual Studio 2008 Express を使ってみたんだ
インテリセンスがすごくよくって
関数を使おうと書き始めると候補が出てきて途中でエンター押すと
全部書いてくれてすごく良いんだ
この機能って2008になってから出来たの?
0206デフォルトの名無しさん
2009/07/19(日) 08:11:470207デフォルトの名無しさん
2009/07/19(日) 10:23:250208デフォルトの名無しさん
2009/07/19(日) 13:40:50キーボード5つぐらいしか押してないのに50文字ぐらいの長い命令文がいつのまにか入力できてる。
プロパティとメソッドの区別も一発でわかるようにアイコンが付いてるし、自分で作ったクラスまで
自動的に登録されてるし。
0209デフォルトの名無しさん
2009/07/19(日) 13:43:51たまに触ると本当に羨ましく感じる。
0210デフォルトの名無しさん
2009/07/19(日) 13:44:520211デフォルトの名無しさん
2009/07/19(日) 13:47:33webは作れないんだよね
0212デフォルトの名無しさん
2009/07/19(日) 14:04:43クラスビューでプロパティを選択して、
イベント、オーバーライド、メッセージを選択しても
全く表示されなくなりました。
どうしてなんでしょうか?
新規作成時、直後は問題ないのですが、開発途中で、
表示が消えるので、新たに関数などの追加ができなくなって困っています。
直し方はあるのでしょうか?
0213デフォルトの名無しさん
2009/07/19(日) 14:05:27CGIは?
0214デフォルトの名無しさん
2009/07/19(日) 15:27:05うっかりプロジェクトファイルとか消してない?
鯖に共有フォルダ作って共同開発とかしてると、たまに誰かか勝手にファイルを移動しちゃうことがあって困る。
0215デフォルトの名無しさん
2009/07/19(日) 19:02:40EEじゃなけりゃAnkhSVNも
0216デフォルトの名無しさん
2009/07/19(日) 20:01:26自己解決?しました。
正しい、やりかたではないと思いますが、
ソリューションファイル等があるフォルダにある
VC++ Intellisense Database
のファイルを削除して、もう一度、VS2008を起動させて、
ソリューションファイルを開くと、自動的にもう一度、
VC++ Intellisense Databaseファイルが作られるので、
それで、直りました。
正しいか不明だけどね。
お騒がせしました。
0217デフォルトの名無しさん
2009/07/19(日) 20:02:560218デフォルトの名無しさん
2009/07/19(日) 20:44:020219デフォルトの名無しさん
2009/07/19(日) 21:06:580220デフォルトの名無しさん
2009/07/19(日) 21:46:12などと打ったときに最後の::の後を自動補完する候補が出るときと出ないときがあるんですが
これを毎回出すようにするにはどうすればいいんでしょうか?
0221デフォルトの名無しさん
2009/07/19(日) 22:29:18一応CTRL+SPACEを押せば強制的に候補一覧(候補がひとつしかないときは一気に確定)できるけど
必ずしも成功するとは限らないところがVC++のいいところ。
これがVBやVC#、今はなきVJ++ではほぼ100%確実に候補が出る。
で、開発者いわく、インテリセンスは結局のところ「コンパイラそのもの」なんだそうで、
リアルタイムコンパイルしながら候補を絞り込んでるわけだけど、
C++は言語が複雑すぎてちゃんとできねーんだとさ。
0222デフォルトの名無しさん
2009/07/19(日) 22:49:340223デフォルトの名無しさん
2009/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ループ終わり
0224デフォルトの名無しさん
2009/07/22(水) 16:39:580225デフォルトの名無しさん
2009/07/22(水) 17:04:05途中まではうまくいくが、グラデーションのように黒い線(塗りつぶしの失敗)が入ります
######
######
########
# #
# #
##########
のような感じに。下手な説明&AAですみません。
0226デフォルトの名無しさん
2009/07/22(水) 17:24:26画面キャプチャしてUPするなり、他人に伝える工夫と努力が必要。
0227デフォルトの名無しさん
2009/07/22(水) 21:59:48それ仮に動いたとして使いものになるのか?
0228デフォルトの名無しさん
2009/07/22(水) 23:02:030229デフォルトの名無しさん
2009/07/22(水) 23:09:230230デフォルトの名無しさん
2009/07/22(水) 23:26:41そうじゃなくてC/C++から勉強したいならVCというよりC/C++の入門書だし
C/C++スレで質問した方がいい。
0231デフォルトの名無しさん
2009/07/22(水) 23:35:31まあ
>>230
の言う通り過ぎて付け加えることがない。
0232デフォルトの名無しさん
2009/07/22(水) 23:47:17IDEの基本から上手な使い方みたいなことが書いてある本ってないよね
プロパティとかどう弄ったらよくなるのかとかいまいちわからない
0233デフォルトの名無しさん
2009/07/23(木) 01:49:59なるほどVC++の初心者に使いかたを教えるスレだったんですね気づきませんでした
C/C++の知識が無いプログラミング初心者なんです
それでVC++インスコしてネットや本屋で教本の類を幾つか読んでみたんですけどVC++を使って教えてるのが見つからなかったんですよ
全くの初心者なので用語の意味とか全然分からないし本で言っている事がVC++の機能のどれを指してるのか、どこにあるのか分からなかったりと
なかなか先に進まないのでVC++2008を使った解説本が無いかと思ったんですがお勧めの物ありませんかね?
それともやっぱりC/C++スレで聞いたほうが良いですかね?
0234デフォルトの名無しさん
2009/07/23(木) 02:04:00Cを理解する頃には意味不明なところがしっかりわかるようになるはず
0235デフォルトの名無しさん
2009/07/23(木) 02:20:19そういう意味でのVCではなくて、プロジェクトの作ってビルド・実行するとかデバッガの使い方について知りたいんだと思う。
0236デフォルトの名無しさん
2009/07/23(木) 02:27:47ただし、C/C++の用語がわからんと理解できんだろーから、必要なのはC/C++の入門書ということになる。
したがってスレ違い。
0237223
2009/07/23(木) 10:35:21http://upload.jpn.ph/ にUPしました
u44616.jpg というファイル名です
左が線だけの状況。実は点なんですが、DrawLineで繋げてます。
閉鎖空間であることは確認済みです
右が223のプログラムで塗りつぶそうとした結果です
どうみても失敗してます。原因がわからなくて悩んでました
0238デフォルトの名無しさん
2009/07/23(木) 11:31:24画像のアドレスはこういうふうに書けば回答者がすぐに確認できる
ttp://upload.jpn.ph/upload/img/u44616.jpg
それからソースが汚すぎる。
ちゃんと式の終わりごとに改行して演算子の前後にスペースを入れて
インデントをつければ「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 をいじってるのが
原因じゃないかって希ガス
0239デフォルトの名無しさん
2009/07/23(木) 11:56:14追加したのは、変数宣言と、DrawLineでテスト用の画像をてきとーに作る部分だけ
int i, j, mode;
int bforx, bfory;
個人的には、いちいちRGBに分解した意味がわかんなかったけどもな
0240デフォルトの名無しさん
2009/07/23(木) 12:14:24白いピクセルが続いた時におかしくなる
白いピクセルの連続が偶数個だと、そのラインは塗られないから
黒く残ってシマシマになる
0241デフォルトの名無しさん
2009/07/23(木) 12:16:380242デフォルトの名無しさん
2009/07/23(木) 12:36:160243223
2009/07/23(木) 13:08:23一応、白が続いた時用にwhileで境界線である白の終わりを判断して飛ばしてます。
while(r==0){abcclr=abcimg->GetPixel(i+1,j);r=abcclr.R;i++;}
>240 さんの言うところが調子悪かったのですね。いじってみます。
RGBに分けたのは、今後の発展を考えてでありまだ何も実装してません。
0244デフォルトの名無しさん
2009/07/23(木) 13:30:05何が原因のものなのでしょうか
0245デフォルトの名無しさん
2009/07/23(木) 13:40:38ヘッダのインクルード忘れ。
ライブラリのリンク忘れ。
0246デフォルトの名無しさん
2009/07/23(木) 14:00:33だから、改行とインデントはちゃんと入れろと言ってるのに
while (r == 0)
{
abcclr = abcimg->GetPixel(i + 1, j);
r = abcclr.R;
i++;
}
0247デフォルトの名無しさん
2009/07/23(木) 14:30:08void CTest::OnButton1()
{処理}
void CTest::OnButton2()
{処理}
上のようなプログラムはクラスウィザードで出来ますが
void CTest::OnButton1()
{関数();}
void CTest::OnButton2()
{関数();}
void 関数()
{
処理
}
処理にUpdateData()などCDiaLogクラスの関数(メンバ)を使ってるから
エラーになります。ボタンを押す、などのイベントがあるなら関数を
作れますが、CTestにアクセスできる空の関数を作るにはどうしたら
良いですか?
0248デフォルトの名無しさん
2009/07/23(木) 14:55:05クラスウィザードで作れるでよ
0249デフォルトの名無しさん
2009/07/23(木) 14:55:23void CTest::関数() // CTest のメンバ関数にすれば、処理にUpdateData() してもアクセス違反にならない。
{
処理
}
0250デフォルトの名無しさん
2009/07/23(木) 15:27:47クラスウィザードでのやり方がわからないので最初に249の方法
試したら出来ました。サンクス。
0251デフォルトの名無しさん
2009/07/23(木) 21:43:05「1>cl : コマンド ライン error D8016 : コマンド ライン オプション '/MTd' と '/clr' は同時に指定できません」
と出てコンパイルエラーが出ます。この二つは併用できないと思っていいんでしょうか??
0252デフォルトの名無しさん
2009/07/23(木) 21:54:08はい。DLL版CRT使いましょう。
0253デフォルトの名無しさん
2009/07/23(木) 21:57:12ありがとうございます
C++ややこしいですね><
0254デフォルトの名無しさん
2009/07/23(木) 22:12:390255デフォルトの名無しさん
2009/07/27(月) 16:37:52ソースの文字検索時に該当箇所を一括で強調(色が変わるとか)して表示するような設定ってありますか?
次を検索・・次を検索で見ていく方法が使いにくいです
0256デフォルトの名無しさん
2009/07/27(月) 16:44:38VS2008内蔵エディタには、検索した文字列に一括で色を付ける機能はないので、
外部エディタを何か設定して使うといい。
あとは、行単位になっちゃうけどブックマークぐらいかなあ。
0257デフォルトの名無しさん
2009/07/29(水) 12:52:300258デフォルトの名無しさん
2009/07/29(水) 12:56:48それがMicrosoftの考える「進化」。
0259デフォルトの名無しさん
2009/07/29(水) 17:13:132010のインテリセンスは進化しているって。
0260デフォルトの名無しさん
2009/07/30(木) 00:38:590261デフォルトの名無しさん
2009/07/30(木) 00:55:120262デフォルトの名無しさん
2009/07/30(木) 01:28:070263デフォルトの名無しさん
2009/07/30(木) 01:34:230264デフォルトの名無しさん
2009/07/30(木) 01:43:330265デフォルトの名無しさん
2009/07/30(木) 07:08:200266デフォルトの名無しさん
2009/07/30(木) 11:04:29メンバ関数そのものがわからないならMSDNじゃなくてオブジェクト指向か言語の本
0267デフォルトの名無しさん
2009/07/30(木) 11:36:540268デフォルトの名無しさん
2009/07/30(木) 22:28:14Form1からForm2を呼び出すことはできたのですが、その後
Form2からForm1を呼び出すべく、Form1をForm2にインクルードすると
どちらでも定義が見つからない旨のエラーが出てしまいました。
どのようにすれば相互に見つけられるでしょうか?
0269デフォルトの名無しさん
2009/07/30(木) 22:57:19インクルード命令ってのは、インクルート先のファイルをその場所に展開する命令。
頭の中で、展開されるとどうなるのか想像してみれ。
あと一応インクルードガードでググっておくこと。
0270デフォルトの名無しさん
2009/07/30(木) 23:27:180271デフォルトの名無しさん
2009/07/30(木) 23:35:500272デフォルトの名無しさん
2009/07/31(金) 00:49:3929日に公開されたランタイム入れたらできたんですが
これって新しくランタイムいれなくてもいいようにできますか?
0273デフォルトの名無しさん
2009/07/31(金) 01:04:060274デフォルトの名無しさん
2009/07/31(金) 02:02:200275デフォルトの名無しさん
2009/07/31(金) 05:35:35Form1はmeで呼び出せると思うけど
0276デフォルトの名無しさん
2009/07/31(金) 05:36:23>>268
Form1はmeで呼び出せると思うけど
0277デフォルトの名無しさん
2009/07/31(金) 18:22:480278デフォルトの名無しさん
2009/07/31(金) 18:25:23プロジェクト→プロジェクトへ追加→ファイルを選択すると、
「動作を停止しました」と出てきてしまいます
このせいで複数のファイルのビルドができなくて困っています
どなたか教えてください
0279デフォルトの名無しさん
2009/07/31(金) 19:06:53複数のファイルのビルドができなくて困ったこともない。
どこか違う世界にお住まいの方ですか?
0280デフォルトの名無しさん
2009/08/01(土) 20:41:51フォントが擦れてしまうバグってどう解決するんでしょう。
ググッても出てこなくて困っとります。以前同じような状況に陥ったときは
たしか何かフォントを削除すると直った気がするのですがさっぱり忘れてしまいました。
どなたかわかる方教えては頂けないでしょうか。すみません。
0281デフォルトの名無しさん
2009/08/02(日) 09:43:51printfが表示させる関数ってぐらいしか知識無いんですが、
ミクミクダンスを作るみたいにプリグラムできるようになるのは
どのくらい勉強したらなれるんでしょうか?
さすがに70時間勉強したら作れるとかなんて思ってません。
2年ぐらい毎日1時間ぐらいやってたら作れますか?
0282デフォルトの名無しさん
2009/08/02(日) 13:36:13プログラム以前の問題だぞ
0283281
2009/08/02(日) 14:51:430284デフォルトの名無しさん
2009/08/02(日) 15:07:020285デフォルトの名無しさん
2009/08/02(日) 15:19:312年後にここに結果を書け
0286デフォルトの名無しさん
2009/08/02(日) 17:31:15同封されてるビープ音のwavファイルが再生されません
作者さんのサイトにはサウンドにDirectSoundを利用していると書いてあるので、
一応DirectX診断ツールを使ってDirectSoundのテストをしてみましたが、
「このサウンドカードはハードウェアによるバッファの使用をサポートしていません。
サウンドはソフトウェアバッファから再生されます。」
と注意は出るもののテストは全て成功しました。
作り手側の方たちから的確なアドバイスがいただけるかと思い質問させてもらいます。
フリーソフトはこちらになります
ttp://www.musenken.net/project/denken/
OSはXP SP2です
よろしくおねがいします。
0287デフォルトの名無しさん
2009/08/02(日) 17:37:18作者に聞いてください
WindowsUpdateはちゃんと実行しましょう
0288デフォルトの名無しさん
2009/08/02(日) 17:37:51ソフトの作者に訊きなさい
0289デフォルトの名無しさん
2009/08/02(日) 17:44:05時間のある時にでも作者さんにメール出して一度聞いてみます。
ありがとうございます。
0290286
2009/08/02(日) 18:23:580291デフォルトの名無しさん
2009/08/02(日) 21:45:56大容量のファイルをC++で作成するとき、ちょっとずつ書き込んでいくと、
ディスク内にフラグメントが出来そうなので、先行してディスクの領域を
確保した上で書き込みたいなと思っています。
これは考え方は正しいでしょうか?正しければ、やり方を教えてください。
よろしくお願いします。
0292デフォルトの名無しさん
2009/08/02(日) 21:51:35outfile << data1;
outfile << data2;
outfile << data3;
...
びっくりすることに、C++のファイルストリームはバッファという仕組みがあったのです!
0293デフォルトの名無しさん
2009/08/02(日) 22:49:38SetFilePointerとSetEndOfFileを組み合わせる。
http://www.google.co.jp/search?q=setfilepointer+setendoffile+%E9%A0%98%E5%9F%9F+%E7%A2%BA%E4%BF%9D
誰か、SetFileValidDataについて教えて。
0294デフォルトの名無しさん
2009/08/03(月) 00:03:310295デフォルトの名無しさん
2009/08/05(水) 12:15:590296デフォルトの名無しさん
2009/08/06(木) 12:42:38Project 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"で参照
という風にやってるんですが
これだとプロパティを変更する時にいちいち全部のプロパティを変えないといけません
ソリューション全体で共通のプロパティを一発で適応させる方法は無いんでしょうか?
0297デフォルトの名無しさん
2009/08/06(木) 17:28:350298デフォルトの名無しさん
2009/08/06(木) 17:29:220299デフォルトの名無しさん
2009/08/07(金) 01:50:32あるけど大差ないのでまとめてWindows APIと呼ぼうぜという雰囲気。
0300デフォルトの名無しさん
2009/08/07(金) 03:24:13レスありがとう
へーやっぱりあるんだ
勉強になった
0301デフォルトの名無しさん
2009/08/07(金) 10:23:53VisualStudioスレで聞くといいと思います。
0302デフォルトの名無しさん
2009/08/07(金) 14:23:28タブを切り替えると表示されるコントロールを変わるようにしたのですが
タブ内のコントロール表示は連動してるものの最初の描画位置がおかしく
ウィンドウを動かすとそれらのコントロールが置き去りになってしまいます
タブ内コントロールの初期位置、ウィンドウ移動時の
表示ずれ修正はどうすればいいでしょうか?
環境はVS2008 Proで、その際のコードは下記です
ttp://www.dotup.org/uploda/www.dotup.org12110.rar
0303デフォルトの名無しさん
2009/08/07(金) 14:50:13本来ならそのページの主に訊くのが筋なんだが・・・
>ウィンドウを動かすとそれらのコントロールが置き去りになってしまいます
タブに貼り付けているダイアログのスタイルを「子」にしていないだろ?
0304デフォルトの名無しさん
2009/08/07(金) 15:09:46その他にある Control は True にしてましたが
Styleは書かれてなかったのでホップアップのままでした
指摘された通り子にしたところちゃんと描画されました
ありがとうございます
0305デフォルトの名無しさん
2009/08/07(金) 23:30:07宝の持ち腐れ。
0306デフォルトの名無しさん
2009/08/08(土) 02:47:44抽出する方法ありませんか?
ResHackerで色々なexeやdllを調べたのですが
どこにも見当たらなくて
0307デフォルトの名無しさん
2009/08/08(土) 07:01:480308デフォルトの名無しさん
2009/08/08(土) 10:29:590309デフォルトの名無しさん
2009/08/09(日) 09:24:18Debugをアクティブにした状態でビルドしたguiアプリケーションって他のosでも動きますか?
osはxpでビルド→2000で実行なんだけどReleaseでビルドしたものだけ正常動作したのでちょっと疑問に思った
0310デフォルトの名無しさん
2009/08/09(日) 14:13:210311デフォルトの名無しさん
2009/08/09(日) 14:19:490312デフォルトの名無しさん
2009/08/09(日) 18:25:54デバッグ中にステップ実行でmain関数を抜けるときに、「現在の場所のソースコードを表示できません」
というエラーが何回も出るのですが、これはなぜなのでしょうか。
また、このエラーが出ないようにする方法はあるのでしょうか?
0313デフォルトの名無しさん
2009/08/09(日) 18:31:31慣れてくるとそこも見たりするようになるけど。
デバッグビルドでそのエラーが出るなら、基本的にどうしようもない。
0314デフォルトの名無しさん
2009/08/09(日) 18:49:41俺も毎回そのエラーが出るけどなんでかわからない…
0315デフォルトの名無しさん
2009/08/09(日) 19:01:370316デフォルトの名無しさん
2009/08/10(月) 10:29:32エラーでもないし気にしないでいいよ
0317デフォルトの名無しさん
2009/08/10(月) 11:35:52プロジェクトのプロパティなどを開こうとすると、
「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
はフルインストールしたはずなんですが。
原因がお分かりになられた方は、回答のほどよろしくお願いします。
0318デフォルトの名無しさん
2009/08/10(月) 21:04:570319デフォルトの名無しさん
2009/08/10(月) 21:51:31使用ソフト:MS VisualStudio 2008 Professional Edition
症状:デバッグ時に、"MSVCP90D.dllが見つからない"と表示される。このとき、ランタイムライブラリは"マルチスレッドデバッグ DLL(/MDd)""
試した対策:
(1)ランタイムライブラリを"マルチスレッドデバッグ(/MTd)"にして、デバッグ ⇒ 正常に開始。
(2)(1)をした後に、/MDdに戻して、デバッグ。 ⇒ 正常に開始。
(3)MSVCP90D.dll があるか、検索してみる。 ⇒ 見つかる。(正常に開始したほかのパソコンと同じような場所にあった。)
(4)http://support.microsoft.com/kb/962219/jaの方法を試してみた。
⇒ インストールできない。既にインスト済みか、ほかの条件が原因。
質問:
1./MDd でデバッグできない原因はなんでしょうか?その解決方法はあるのでしょうか?
2.C++のコンパイラーの設定で、/MTd を標準にできないでしょうか?
よろしくお願いします。
0320デフォルトの名無しさん
2009/08/10(月) 23:52:36なぜか、二重投稿になっています。すみません。
>318
当ててなかったみたいです。自動更新で当たっているとおもっていました。
現在ダウンロード中です。解決したらまた報告します。
0321デフォルトの名無しさん
2009/08/10(月) 23:54:340322デフォルトの名無しさん
2009/08/11(火) 22:42:01どうすればいいんでしょうか
0323デフォルトの名無しさん
2009/08/11(火) 23:01:190324デフォルトの名無しさん
2009/08/14(金) 03:06:27プロジェクトにソースファイルを次々に放り込んでいったら
ソースファイルの置いてある実フォルダが、大分カオスに散らかりました。
VCを開いてソリューションエクスプローラを開くと、そこではフィルタで整理されています。
VCのソリューションエクスプローラ以外からもソースファイルを開くことがあるので
実フォルダとソースファイルを整理したいのですが、そうするとVCがソースファイルを
見失ってしまいます。それに今後ソースファイルを追加する度にフォルダと
フィルタを手動で整理しないとダメになるので面倒です。
何かいい方法はありませんか?
0325デフォルトの名無しさん
2009/08/14(金) 03:26:530326デフォルトの名無しさん
2009/08/14(金) 09:22:39先ずファイルを整理してから、ソリューションエクスプローラで追加しちゃいけないのか?
0327デフォルトの名無しさん
2009/08/14(金) 16:07:49追加インクルードにソリューションディレクトリを追加して
新しいクラスと関連の関数とかを一まとめにしたプロジェクトを作る
プロジェクト構成でEXEではなくLIBに変える
そんでクラスを利用するコードには
#include "ProjectName/HeaderName.h"
を追加
これで一つのクラスに対して一つのフォルダが割り当てられて、IDEのほうも混乱しない
でもこれだとプロジェクトつくるたびに構成を弄らないといけないのでそこが面倒
0328デフォルトの名無しさん
2009/08/14(金) 19:30:390329デフォルトの名無しさん
2009/08/14(金) 19:32:240330デフォルトの名無しさん
2009/08/14(金) 20:01:280331デフォルトの名無しさん
2009/08/14(金) 20:16:090332デフォルトの名無しさん
2009/08/16(日) 16:48:52プログラム 'c:\Users\○○\Documents\visual studio2008\projects\test\debug\test.exe' を開始できません。
アプリケーション構成が正しくないため、このアプリケーションの開始に失敗しました。マニフェスト ファイルを参照してエラーの原因を調べてください。
アプリケーションの再インストールをすることで、この問題が解決する可能性があります。詳細については、アプリケーション イベント ログを参照してください。
と表示されてデバッグできません、ログにエラーは出てません。
表示されているフォルダにtest.exeは入ってます
どうしたら良いでしょうか?
0333デフォルトの名無しさん
2009/08/16(日) 17:01:34使ってる環境はVS2008でOSはWindows7 32bitです
0334デフォルトの名無しさん
2009/08/16(日) 17:04:00ちゃんとアプリケーション イベント ログを見た?
0335デフォルトの名無しさん
2009/08/16(日) 17:09:250336デフォルトの名無しさん
2009/08/16(日) 17:43:31"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 が見つからなかったか、ビルドされませんでした。フル リンクを行います。
と出てましたがサッパリで・・・
0337デフォルトの名無しさん
2009/08/16(日) 17:45:56でもデバッグで動かないって何でだろう・・・
0338デフォルトの名無しさん
2009/08/16(日) 17:51:480339デフォルトの名無しさん
2009/08/16(日) 17:54:38要は「msvrcr90d.dllが見つからない」と言っている。
もっとも、正式リリース前のOS上で動かしているのだから
何が起きても不思議ではない。
名言集 その4
『俺、100人規模の集団サイバーテロの主犯だったこともあるんだぜ』
http://yutori7.2ch.net/test/read.cgi/news4vip/1249830540/ のID:PVAf+dux0 = 自動焼人 ★
> 965 :以下、名無しにかわりましてVIPがお送りします [sage] :2009/08/10(月) 00:02:09.35 ID:PVAf+dux0
> まぁ何だ。
> 俺の過去の経歴に比べたら、割れ厨なんて鼻くそレベルなんだけどなw
> 100人規模の集団サイバーテロの主犯とか、いろいろとな。
----------------------------------------------
この自動焼人 ★メールマガジンの配信停止をご希望される方は
http://qb5.2ch.net/test/read.cgi/sec2chd/1250169591/
にて自動焼人 ★までご連絡ください
0341デフォルトの名無しさん
2009/08/17(月) 18:07:08デバッグ無しで開始をするとちゃんと何かキーを押すまでウィンドウが残るんですけど
プログラムの内容は多分一番簡単なハローワールドのプログラムです
0342デフォルトの名無しさん
2009/08/17(月) 18:12:47なりません。
デバッグしてるのに途中でとめない場合ってどんな状況?
止めたけりゃ最後にブレークポイント置くとか。
0343デフォルトの名無しさん
2009/08/17(月) 18:23:23何かキーを押さないと終了しない っていうプログラムにしないと勝手に終了しちゃうって事ですね
ありがとうございました
0344デフォルトの名無しさん
2009/08/17(月) 20:00:20F8
0345デフォルトの名無しさん
2009/08/18(火) 17:53:13エディットボックスのフォントがTerminalで、「電」や「j」を入力すると、下の部分が切れて表示されません
フォントサイズはCreateFont()で13を指定しています
フォントやフォントサイズを変えることなく、行間?を広げて、文字をすべて表示させることは可能でしょうか
もし可能であれば、方法を教えてください
お願いします
環境はOS:XP、バージョン:6.0です
0346デフォルトの名無しさん
2009/08/19(水) 01:58:35フォームプロジェクトのmainの初期に自動で作成される引数の変数の宣言時に
array<System::String ^> ^args
と宣言されていますが、
<>内はarrayの型と予想がつきますが ^ にはどのような意味が有るのでしょうか?
ぐぐってもでてきませんorz ぐぐるワードでもいいのでご伝授お願いします
0347デフォルトの名無しさん
2009/08/19(水) 02:17:33^は大雑把に言うと特殊な(すなわち.NET Frameworkが管理するメモリを指す)ポインタ型を示すものとして、*の代わりに使う。
VC++のCLR系プロジェクトでは、C++ではなく、C++/CLI言語が用いられる。
http://msdn.microsoft.com/ja-jp/library/ms379617(VS.80).aspx
「最良の」はかなり誇張表現だから、ある程度割り引いて受け止めてね。
0348デフォルトの名無しさん
2009/08/19(水) 09:50:38VC++の中にもいろいろある。
フォームを使うのはC++/CLIだけど
それをわかって使ってるのでなければやめといたほうが・・
0349デフォルトの名無しさん
2009/08/19(水) 13:56:50Cから移植らしいので一応いっとく
0350デフォルトの名無しさん
2009/08/20(木) 03:41:590351デフォルトの名無しさん
2009/08/20(木) 04:20:570352デフォルトの名無しさん
2009/08/20(木) 08:54:460353デフォルトの名無しさん
2009/08/21(金) 15:26:00コマンドプロンプトで
cl /EHsc aaaaaa.cpp
とコンパイルしているのですが、
そのまえに毎回毎回
C:\○○○\VC\bin\vcvars32.bat
としないと動きません。
環境変数でパスを通すと解決するのかもしれませんが、
どうすればパスが通るのでしょうか?
0354デフォルトの名無しさん
2009/08/21(金) 15:27:15gccとVC++は両方とも併用して挙動を覚えると良いと思うよ。
0355デフォルトの名無しさん
2009/08/21(金) 15:49:05「Visual Studio 2008 コマンド プロンプト」を使う
0356デフォルトの名無しさん
2009/08/21(金) 16:45:25.\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat の中身を覗いておみ
0357353
2009/08/21(金) 17:54:51ファイラで作業中に、そのフォルダを現在のディレクトリとして
開いた一般のコマンドプロンプトで作業したいのです。
>>356
見てみました。
@SET VSINSTALLDIR=C:\Program Files\Microsoft Visual Studio 9.0
などのような記載が見つかりましたが、
ありすぎてどれを通せばいいのか分かりません。
お助けいただけますでしょうか?
0358デフォルトの名無しさん
2009/08/21(金) 17:59:260359355
2009/08/21(金) 18:37:37>ファイラで作業中に、そのフォルダを現在のディレクトリとして
>開いた一般のコマンドプロンプトで作業したい
だから、「Visual Studio 2008 コマンド プロンプト」のショートカットをコピーして、
コピーしたショートカットのプロパティで「作業用フォルダ」を好きなフォルダに変更すればいいだけの話なんだが。
0360356
2009/08/21(金) 19:12:08バッチファイルに何が書かれてるか分るくらいにしておいた方がいい鴨ね
似た様なことしてる人が居た
つ ttp://d.hatena.ne.jp/Rion778/20090707/1246978147
0361357
2009/08/21(金) 21:22:33ありがとうございます。
しかしその好きなフォルダは毎回変わりうるため
決め打ちはできないんです。
>>360
ありがとうございます。
そのリンク先のとおりにやってきます。
皆さんありがとうございました。
0362デフォルトの名無しさん
2009/08/22(土) 13:27:24二つのファイル両方でvecter関数などを使いたい場合は、両方のファイルでvecterをincludeする必要があるのでしょうか?
0363デフォルトの名無しさん
2009/08/22(土) 13:53:07というより、二つのファイルに共通なヘッダ(例:main.h)を作成して、インクルードするほうが良い。
0364デフォルトの名無しさん
2009/08/22(土) 13:57:180365デフォルトの名無しさん
2009/08/22(土) 16:32:390366デフォルトの名無しさん
2009/08/22(土) 23:28:23public virtual func();
}
class B : public A
{
public func()
}
vector<A> list;
list[0].func();
ってやるとAのfuncが呼ばれるんだけどBのを呼びたい場合は
vectorはポインタを入れるしかないの?
0367デフォルトの名無しさん
2009/08/22(土) 23:40:240368デフォルトの名無しさん
2009/08/22(土) 23:57:50http://pc12.2ch.net/test/read.cgi/tech/1247937958/
C++相談室 part71
http://pc12.2ch.net/test/read.cgi/tech/1247853298/
スレを勃てるまでもないC/C++の質問はここで 12
http://pc12.2ch.net/test/read.cgi/tech/1248010352/
C/C++の宿題片付けます 130代目
http://pc12.2ch.net/test/read.cgi/tech/1250204272/
C/C++小心者スレッドPart1
http://pc12.2ch.net/test/read.cgi/tech/1186262298/
【C++】STL(Standard Template Library)相談室 11
http://pc12.2ch.net/test/read.cgi/tech/1231640024/
0369デフォルトの名無しさん
2009/08/23(日) 00:18:13参照ってvector<A&>ってこと?
コンパイルエラーになるけど
0370デフォルトの名無しさん
2009/08/24(月) 08:09:09平山尚氏の「ゲームプログラマになる前に覚えておきたい技術」で
#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ページ)を一冊読んだのですが、例によってエラー処理について何も解説してくれてないので途方に暮れています
なにが原因と考えられるのでしょうか?
一行目のライブラリの設定は本の指示通りやってるので大丈夫だと思います(だからこそサンプルは動いたはず)
0371デフォルトの名無しさん
2009/08/24(月) 17:33:48どうしてもプロジェクトから作りたかったら
プロジェクトの定義ファイル、その他のファイルの構成を見て同じにするだけ
0372デフォルトの名無しさん
2009/08/24(月) 22:33:320373デフォルトの名無しさん
2009/08/25(火) 10:01:08ですが
LINK : fatal error LNK1104: ファイル 'kernel32.lib' を開くことができません。
というエラーが出ます。
VC++の再インストールを解決しません。
どうしたらよいか、ご教示ください。
0374デフォルトの名無しさん
2009/08/25(火) 10:21:30ツールのオプションのプロジェクトおよびソリューションのVC++ディレクトリの
Win32のライブラリ ファイルのディレクトリに該当ファイルはあるか?
EEだけだとどこになるか覚えてないが、
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib あたりにありそうだけど。
その場合、$(WindowsSDKDir)\lib の指定とか。
ファイルがあるなら、ツールの設定のインポートとエクスポートのすべての設定をリセットでどうか。
0375373
2009/08/25(火) 10:54:41環境はWindows XP SP2です。
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib\Kernel32.Lib
というファイルは見つかりました。
おそらく環境変数がどうかしているのだろうとは思うのですが、
ツールの設定のインポートとエクスポートのすべての設定をリセットでは
解決しませんでした。
もう一度、完全にアンインストール作業などを行った後
再インストールして見ようと思います、
0376373
2009/08/25(火) 11:07:43プロジェクトをリビルドさせると
'cmd.exe'
でエラーが発生しました
と言われます。
これが>>373のコマンドプロンプトからコンパイルしたときのエラー
LINK : fatal error LNK1104: ファイル 'kernel32.lib' を開くことができません。
に対応している物と思われます。
環境変数が死んでるだけだと思うのですが何故か改善できません。
(なお、環境変数の変更を反映させるためにWindowsの再起動は行っています。)
0377デフォルトの名無しさん
2009/08/25(火) 11:49:59まあ共通点はたしかに環境変数だけど。
>>374のVC++ディレクトリのとこの実行可能ファイルとライブラリファイルの内容はどんな?
cmd.exeは実行可能ファイルの$(PATH)が関係する
0378デフォルトの名無しさん
2009/08/25(火) 15:28:26error LNK2019: 未解決の外部シンボル @crc32@12 が関数 "int __fastcall WritePNGChunk(struct _iobuf *,unsigned int,char const *,unsigned char const *)" (?WritePNGChunk@@YIHPAU_iobuf@@IPBDPBE@Z) で参照されました。
ライブラリのパスは通してあり、ランタイムライブラリはマルチスレッドで統一してあります。
環境は、XPSP3、VC2008EE、Win32アプリ、zlib1.2.3です。
解決するにはどうすればいいでしょうか?アドバイスお願いします。
0379デフォルトの名無しさん
2009/08/25(火) 15:33:46libはパスの指定だけじゃなくて、libファイルそのものも直接指定する必要があるよ。
0380デフォルトの名無しさん
2009/08/25(火) 15:37:54勿論libファイルは指定してあるのですが、他に原因分かりませんか?
0381デフォルトの名無しさん
2009/08/25(火) 15:41:43そっちに問題がある気がするが
0382デフォルトの名無しさん
2009/08/25(火) 15:44:030383デフォルトの名無しさん
2009/08/25(火) 15:49:13ちょっとまだよく分かってない部分も多いんですが
これはlibpngは使ってないと思います。
PNGの処理はNDSSystem.cppってとこに書いてあるようなので
>>382
configヘッダーってなんでしょうか?
zlib.hの事ですか?
0384デフォルトの名無しさん
2009/08/25(火) 15:50:160385デフォルトの名無しさん
2009/08/25(火) 16:11:30そもそもスタティックリンク用のヘッダになってんじゃないの?
__stdcall の関数をリンクしようとしてるが、libは__cdeclとか__fastcallとか
0386デフォルトの名無しさん
2009/08/25(火) 17:39:29すみません、ちょっとよく分かってないのでググって調べてたら
一応リンクは通るようになりました。
@crc32@12のような関数の修飾子は__fastcallって事みたいなので、
__fastcallでリンクしようとしてるが、LIB側は__cdeclになってるのでエラーに
なっているようなのでzconf.hの# define ZEXPORT となっているところを
# define ZEXPORT _fastcall と書き換えてzlibをビルドしたらエラーが出なく
なったんですが、こんなやり方でいいんでしょうか?
なんか違うような・・・
0387デフォルトの名無しさん
2009/08/25(火) 18:30:37その時にZEXPORT を書き換えてるか差し替えてるんじゃないかと思うよ。
0388373
2009/08/26(水) 00:40:52お返事遅れまして申し訳ありません。
ttp://loda.jp/nwl8gecgzraygwt/?id=1
このようになっています。
よろしくお願い申し上げます。
0389デフォルトの名無しさん
2009/08/26(水) 01:18:000390デフォルトの名無しさん
2009/08/26(水) 01:30:32そういやこないだのWindowsアップデートから挙動があやしいのがいくつかあったんだった
スタートメニューのVC++のとこのToolsからコマンドプロンプト開ける?エラーでないかな
0391デフォルトの名無しさん
2009/08/26(水) 01:44:24うちはVista64だけど、VC++の設定にSysWow64出てきてないけど
こないだのアップデートでバッチファイルがかわって、Program Files (x86)の括弧綴じがうまくないようなんだよね・・・
0392デフォルトの名無しさん
2009/08/26(水) 05:17:17>>5の訂正が>>9>>10だと理解しました。
(コピペして実行していないけど…)
細かい質問なのですが、
私は
#include
main{
std::cout << "Hello World" << std::endl ;
return 0;
}
って習いました。
printf(""\n); も std::cout << "" << std::endl; も
手法が違うだけで同じという事でしょうか?
もしそうならどちらが正しい文なのでしょうか?
0393デフォルトの名無しさん
2009/08/26(水) 06:56:36お前それ本当に習ったコードそのままなのか?
C++でそんなコードを教えるような奴はおでこにPentium4を貼り付けてアッカーマン関数を解かせる刑に処してやりたいんだが。
>printf("\n"); も std::cout << "" << std::endl; も
>手法が違うだけで同じという事でしょうか?
そうです。
C++言語はC言語とほぼ完全な互換があるのがウリなのですが、
C言語で提供される機能の多くは、C++の流儀にのっとった別の形で提供されています。
あなたの例では、printfがCの機能、coutがC++の機能です。
どちらも、C++としては正しい文です。
0394388
2009/08/26(水) 07:02:03Visual Studio 2008 コマンド プロンプト
Setting environment for using Microsoft Visual Studio 2008 x86 tools.
C:\Program Files\Microsoft Visual Studio 9.0\VC>
と出て来ました。
XPは32bitで搭載メモリ3GBです。
うーん、どうしてでしょう。。。
0395デフォルトの名無しさん
2009/08/26(水) 07:51:01早いレスありがとうございます。
改めてVisual Studio c++ 2008で試してみました。
両者とも文字列は問題なく表記されたのですが、
""で囲わないで数や変数(int x;など)を表示させようとするとエラー(バグって表現すべきでしょうか?)が発生します。
printf("おまんこ\n");も
std::cout<<おまんこ<<std::endl;も大丈夫なのに
printf(0100005\n);
std::cout<<0100005<<std::end
だとprintf();だけ上手くいきません。
これはそういうもんだと割り切って次のステップに進むべきでしょうか?
0396デフォルトの名無しさん
2009/08/26(水) 09:18:31メインプロセス終了はワーカースレッドの終了を待ってくれますか?
それともメインプロセスが終了するとワーカースレッドを
ぶちぎりして終了してしまいますか?
0397デフォルトの名無しさん
2009/08/26(水) 09:18:47printfで整数を表示させる方法は書式指定子でぐぐれ
それぞれの道具(printf, cout)には道具なりの使い方がある。 ちゃんと解説書を読めってことだ。
0398デフォルトの名無しさん
2009/08/26(水) 10:01:17解説書買いましたが、
http://www.nicovideo.jp/watch/sm5044927
がわかりやすいので先にこっちで勉強してました。
前の解説本の冒頭に書いてあったのですが、道具なりの使い方というと
包丁の使い分けみたいなものだと理解しても平気でしょうか?
と、書いて気づいたけど、なんか話が脱線してきた・・・orz
とりあえず、このスレに頼りっぱだったので
ググってみます。
ありがとうございました!!
ありがとうございました。
0399デフォルトの名無しさん
2009/08/26(水) 11:01:200400370
2009/08/26(水) 11:20:29うまくいきました。
ありがとうございました。
ランタイムライブラリを
「マルチスレッドデバッグ(/MTd)」にすべき所を
「マルチスレッドデバッグDLL(/MDd)」にしてたのが原因でした。
ご指摘を受ける前にもソリューションのプロパティをうまく行く奴版と全部比較してたんですが
テキストエディターで読めるとは思わなくて一々VCで開きなおして見てたんでもうイライラしてました
結局見逃してたんですね
エディタで見てやっと発見できました
0401デフォルトの名無しさん
2009/08/26(水) 11:39:18すごい釣りだ。^^;
printfは組み込み型にしか使えない。
coutはユーザー定義型(クラスとか構造体とかうにおんとか…)にも使える。
0402386
2009/08/26(水) 11:42:08なんか色々足りないファイルとかもあったので、もしかしてと思ってsvnから
直接引っ張ってきたら、予想通り必要なファイルが全て揃っていて、何の
問題もなく一発でビルドできました。
あの苦労は何だったんだって感じですが、呼び出し規約とか今までおざなり
にしてたことが少し分かったので勉強になって良かったです。
因みにこのサイトが凄く分かりやすかったです。ttp://ray.sakura.ne.jp/asm/9.html
これで、やっと目的の開発に取りかかれそうです。
レスくれた方々ありがとうございました。
0403デフォルトの名無しさん
2009/08/27(木) 05:05:52ふと気づいたのですが、
return 0;ってなんの役にたつんですか?
# include<iostream>
using namespace std;
int main()
{
cout<<"問題。カッパの好きな食べ物は?"<<endl;
cout<<"半角で選択肢を入力"<<endl;
cout<<"1.トマト"<<endl;
cout<<"2.きゅうり"<<endl;
cout<<"3.りんご"<<endl;
int k;
cin>>a;
switch(k)
{
case 1: cout<<"トマトじゃないよ"<<end;break;
case 2: cout<<"正解!カッパはキュウリが好き。"<<endl;break;
case 3: cout<<"果物じゃないです。"<<endl;break;
default: cout<<"半角数字で答えてください"<<endl;
}
// return 0;
}
あってもなくても正常に動くのですが・・・
0404デフォルトの名無しさん
2009/08/27(木) 06:25:26どんな本買ったのか判らんが、キチンと一度読み通せ
0405デフォルトの名無しさん
2009/08/27(木) 13:37:13http://pc12.2ch.net/test/read.cgi/tech/1248010352/
0406デフォルトの名無しさん
2009/08/27(木) 17:15:10そして今私はこのAというソフトウェアのソースコードのプログラム言語などに依存せず、
まったく関係のない独立したソフトウェア(B)というものを開発しようとしているとします。
ここでAとBを連携させたいと考えた場合、COMプログラミングなどというものがあります。
そこで質問です。
もし、Bのソフトのあるボタンを押したときAが起動するように設定するだけでもCOMプログラミングは
必要なのでしょうか?もしくは絶対パスなどをいれたソフトを起動させるようなWin32APIはありますか?
ご存知のかたがいらっしゃれば回答よろしくお願いします
0407デフォルトの名無しさん
2009/08/27(木) 17:20:52::CreateProcess
0408デフォルトの名無しさん
2009/08/27(木) 17:26:33ShellExecute
0409388
2009/08/27(木) 23:08:06@set LIB=
に
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib;
を追加したらコマンドプロンプトからコンパイル&リンクは出来るようになりました。
ありがとうございました。
しかし、未だ
プロジェクトをリビルドさせると
1>プロジェクト : error PRJ0003 : 'cmd.exe' の起動中にエラーが発生しました。
1>ビルドログは "file://c:\*************\Visual Studio 2008\Projects\sample program\Debug\BuildLog.htm" に保存されました。
というエラーメッセージが消えず、リビルドできません。
ここはどの環境変数をどう修正するのが正解なのでしょうか。
どうかお知恵をお貸しください。
よろしくお願い申し上げます。
0410デフォルトの名無しさん
2009/08/27(木) 23:26:570411388
2009/08/27(木) 23:38:01という名のプロジェクトです。
BuildLog.htm
は
Plain Text code - 86 lines - codepad
ttp://codepad.org/K4pZgQb7
このようになりました。
0412デフォルトの名無しさん
2009/08/27(木) 23:38:57using namespace std;
int main()
{
class map {
public:
int data[3][4];
int DataAt(int x, int y) {
return data[x][y];
}// or return data[y][x];
};
map F1;
F1.data[3][4]={
{2,12,0,4},
{0,5,4,13},
{0,3,11,9},
};
cout <<F1.DataAt(2,3);
return 0;
}
すいません、最後に教えて下さい
mapクラスのF1のメンバが配列で、それを関数で呼びたいだけなんです
C++なのにクラスが使えないとかなきそうです
0413デフォルトの名無しさん
2009/08/27(木) 23:48:03環境変数PATHに
%SystemRoot%\system32
が入ってないとか
0414デフォルトの名無しさん
2009/08/27(木) 23:58:32ありがとうございます。
%SystemRoot%\system32を環境変数に追加してそれで試してみます。
0415デフォルトの名無しさん
2009/08/28(金) 01:28:35>F1.data[3][4]={ {2,12,0,4}, {0,5,4,13}, {0,3,11,9}, };
・・・こんな代入の仕方があるか。初期化じゃないんだぞ。
0416デフォルトの名無しさん
2009/08/28(金) 02:47:20つまり、ウィンドウすらなく、字や絵だけをデスクトップの特定の位置などに表示させたいのです
0417デフォルトの名無しさん
2009/08/28(金) 03:01:20無理。Windowsはウィンドウの集まりだから、ウィンドウズ。
背景透過のウィンドウを作成して、そこに描画すべし。
0418デフォルトの名無しさん
2009/08/28(金) 04:41:47背景透明にしてみた
TextOut関数ってどうやってテキスト更新するの?
呼び出してもテキストの表示位置をかえたりできない…
個人的にニコキャスト(ってわかるかな?)をさらに改良した
ニコニコ動画みたいな文字がデスクトップに表示されるツール開発したいんだ
0419デフォルトの名無しさん
2009/08/28(金) 05:13:17CALLBACK関数のWndProc内で最初にInvalidateRect関数呼び出すってことで正しい?
0420デフォルトの名無しさん
2009/08/28(金) 05:33:21すいません・・でもやり方がわからないんです
クラスのメンバを配列にしてそこに代入したい場合、
あらかじめ配列を作っておき、fornextなどを使って数字を代入していくしかないのでしょうか?
array[3][4]={ ・・・ }
F1.data[i][k]
0421388
2009/08/28(金) 07:04:35出来ました!!
環境変数PATHに
%SystemRoot%\system32
を追加するのが正解でした。
どうもありがとうございました。
0422デフォルトの名無しさん
2009/08/28(金) 10:21:26map F1;
int data[3][4] = { {2,12,0,4}, {0,5,4,13}, {0,3,11,9}, }; // これは代入ではなく初期化
for ( int i = 0; i < 3; i++) for ( int j = 0; j < 4; j++) F1.data[i][j] = data[i][j];
0423デフォルトの名無しさん
2009/08/28(金) 11:11:39ありがとうございます!
0424デフォルトの名無しさん
2009/08/28(金) 12:26:06そっちのほうが便利なら、買おうと思うんだけど。
0425デフォルトの名無しさん
2009/08/28(金) 12:50:16インテリセンスが賢くなってるよ。
それ以外の部分も色々進化してるんだけど、VC6で満足してるならまぁ好きにすればいいと思う。
ただBoostとかテンプレートを本気で使いだすとVC6はそびえ立つクソ状態になるけど。
0426デフォルトの名無しさん
2009/08/28(金) 13:20:03タダなんだし使ってみては?
0427デフォルトの名無しさん
2009/08/28(金) 14:26:16そういうときにいちいちitoa使ったあとにMessageBoxなどで確かめるのが面倒です
出力画面などに簡単にシステムコールで出力する方法ありませんか?
皆さんはどうやって戻り値や変数の中身をチェックしていますか?
0428デフォルトの名無しさん
2009/08/28(金) 14:28:52::OutputDebugString() でデバッグ出力する
0429デフォルトの名無しさん
2009/08/28(金) 15:03:41そもそもそれが入ってないのがおかしい
インストーラ関係なしに手動で何かやらないと消えないと思うが
0430デフォルトの名無しさん
2009/08/28(金) 15:32:21この構造体のメンバにdoubleでどうしても代入しなければいけないときはどうすればいいのでしょうか?
キャストしてもうまくいきません。
0431デフォルトの名無しさん
2009/08/28(金) 15:41:200432デフォルトの名無しさん
2009/08/28(金) 15:49:48>ウィンドウすらなく、字や絵だけをデスクトップの特定の位置などに表示させたいのです
GetDesktopWindow関数でデスクトップのハンドルを取得してデスクトップに直接表示することができる
(デスクトップもウィンドウ)
>>418
TextOut関数には表示位置を指定するパラメータがあるじゃん
表示位置を変えたいなら元の位置の文字列を消して新しい位置に文字列を表示するとか
いろいろ方法あるでしょ
0433デフォルトの名無しさん
2009/08/28(金) 17:44:48この手のソフトは、それほど数が多くないです。
やはり個人で自作して公開されない物が多いんでしょうか?
無ければ、制作を考えているのですが、
C++で作るには、かなりのスキルが必要ですか?
0434デフォルトの名無しさん
2009/08/28(金) 18:03:15C++のではなく、Windowsプログラミングについて相応のスキルは必要。
API、フック、サブクラス等々。
0435デフォルトの名無しさん
2009/08/28(金) 23:42:22どのくらい現在知識はあるのだい?
他言語の経験者?
0436デフォルトの名無しさん
2009/08/28(金) 23:43:37つーかC++に準拠して書いたテンプレートを含むコードが
VC6に蹴られるとぶち殺したくなる。
VC6はC++に似た別言語だと思いませう。
0437デフォルトの名無しさん
2009/08/29(土) 00:02:59いえ、言語についての知識はないです。
ネットでC言語の入門サイトを見ながら勉強し始めた所です。
0438デフォルトの名無しさん
2009/08/29(土) 00:07:21うひょー
そりゃ先が長いぜw
0439デフォルトの名無しさん
2009/08/29(土) 00:11:59やっぱそうですか。
趣味なので時間制限はありませんが。
0440デフォルトの名無しさん
2009/08/29(土) 00:14:140441デフォルトの名無しさん
2009/08/29(土) 00:20:36イメージだけですが遠い道だと分かっただけでも収穫です。
ありがとうございました。
0442デフォルトの名無しさん
2009/08/29(土) 02:41:47今となっては懐かしい。
複雑なテンプレートだとコンパイルどころかVS自体が落ちてたからなあ。
0443デフォルトの名無しさん
2009/08/29(土) 03:06:09コード中のTab部分に「→」、スペースに「・」と表示されるようになりました。
オプションあたり見ても直し方がわからず非常にうっとうしいので、どなたか直し方教えてください。
0444デフォルトの名無しさん
2009/08/29(土) 09:54:590445デフォルトの名無しさん
2009/08/29(土) 10:37:37ものすごく遠い道だ。
数学系が得意で、後は根気が数年以上続く性格ならいけるよ。
個人的にはC++は質問しやすいからお薦め。
言語仕様的にはC++は落とし穴が多いから薦めづらいが。
0446デフォルトの名無しさん
2009/08/29(土) 12:15:11いくらなんでも、冥王星が太陽を一周してくる間にはマスターできるだろ。
0448デフォルトの名無しさん
2009/08/29(土) 13:56:29Visual Studioが2〜3分応答しなくなるんですが、どうしたもんですか?
0449デフォルトの名無しさん
2009/08/29(土) 15:22:55↓ここで夢中になって勉強できれば意外と速く出来るようになるかも
ttp://www.kumei.ne.jp/c_lang/index.html
↑ここが難しすぎて夢中になれないようならきびしいと思う
0450デフォルトの名無しさん
2009/08/29(土) 17:07:25プロジェクトファイル手で書き替えてもいいし、
自作スクリプトや自作プログラムでやってもいいし、
面倒くさかったら終わるまで待ってればいい。
0451デフォルトの名無しさん
2009/08/29(土) 17:22:40助かりました
まさか二つのコマンドを入れてしまっていたとは
0452デフォルトの名無しさん
2009/08/29(土) 17:29:420453デフォルトの名無しさん
2009/08/29(土) 19:21:44include ファイルを開けません。というコンパイルエラーが出てしまいます。
該当行のインクルードファイル名を右クリックして、ドキュメントを開こうとすると、ソースファイルのディレクトリにも、システムパスにも見つかりません
というメッセージとともにインクルードパスの一覧が出ますが、そこにも設定したパスが表示されていません。
追加のインクルードディレクトリで設定したパスを使いたい場合には何か別にする必要があるんでしょうか。
0454デフォルトの名無しさん
2009/08/29(土) 20:11:29あとはパスの綴りをミスってるぐらいしか思いつかん。
0455デフォルトの名無しさん
2009/08/29(土) 22:14:320456デフォルトの名無しさん
2009/09/01(火) 17:54:17エラーは出ないようになりましたが、
数値がおかしい・・・正の値しか出ないようにしたはずなのに・・・
何が間違っているのでしょうか?
#include<iostream> using namespace std;
class Osake{
int nakami;//飲むお酒の量
int yoi;//どれだけ酔っ払ったかの度合い
public:Osake(int z){nakami = z;}
void nomu(){
cout<<"nakami"<<endl;
while(nakami>0){
nakami -=2;
yoi +=3;
}
cout<<"お酒が無くなりました。"<<endl; cout<<"現在レベル"<<yoi<<"くらい酔っています。"<<endl;}
void nomido(){
if(yoi==15){cout<<"ほろ酔いです"<<endl;}
else if(yoi<15){cout<<"飲み足りません"<<endl;}
else if(yoi>15){cout<<"飲みすぎです"<<endl;}
else{cout<<"エラーが発生しました。"<<endl;}
}};
0457デフォルトの名無しさん
2009/09/01(火) 17:55:26cout<<"お酒を飲みます。酔いすぎに注意しましょう。"<<endl;
cout<<"どれくらいのお酒を用意しますか?"<<endl;
int a; cin>>a;
Osake liqueur(a);
liqueur.nomu();
liqueur.nomido();
cout<<"晩酌を終了します"<<endl;}
0458デフォルトの名無しさん
2009/09/01(火) 18:00:330459デフォルトの名無しさん
2009/09/01(火) 18:01:05「nakamiが0より大きい間、ループする」と書いたのだから、停止条件は
「nakamiが0より小さくなったのでループを脱出する」なのは当然。
0460デフォルトの名無しさん
2009/09/01(火) 18:04:38int yoi が初期化されていないので、 you+=3 は未知数。
Osake のコンストラクタで初期化すべし。
0461デフォルトの名無しさん
2009/09/01(火) 18:05:190462デフォルトの名無しさん
2009/09/01(火) 18:30:43もうちょいいじってみます。
てか皆さんすごいっすね・・・
なんでそんなに早くバグがわかるんですか?
0463デフォルトの名無しさん
2009/09/01(火) 18:51:22慣れでしょ
本をたくさん読めば文章をすらすら読めるようになるようなもの
これも練習の内だと思って、今度からは自力でバグ取りするようにしたほうがいいと思う
0464デフォルトの名無しさん
2009/09/01(火) 18:57:28ですよね。・・;
でも一応ドン詰まりになるまで粘ってから
質問してるつもりではいるのです…
せめてプログラマーの端くれレベルになりたいorz
0465デフォルトの名無しさん
2009/09/01(火) 19:07:100466デフォルトの名無しさん
2009/09/01(火) 19:07:39MFCのツールボックスからエディットコントロールを選択しました
そしてそれを配置して右クリックをしたのですが、「変数の追加」というものが半透明になって選択できません
そのため、ここに代入された文字の取得なのができなくなっています
なぜ半透明になるのでしょうか?
変数の追加を有効にする方法を教えてください
0467デフォルトの名無しさん
2009/09/01(火) 20:11:40遅くなりましたが報告です。
void nomu(){
cout<<"nakami"<<endl;
yoi=0;//今はシラフだと宣言
while(nakami>0){
nakami -=2;
yoi +=3;
}
したら、イイ感じになりました。
感謝です。
今までint main(){}の中に色々詰め込む形でソース組んでいたので、
classの便利さにちょいちょい気づいてきました^^;
private、public、voidの詳しい意味とか理解していませんが、
『解説をじっくり読むより、さっと読んで、サンプルをコンパイル・実行してみてください。』
と
http://www.asahi-net.or.jp/~yf8k-kbys/
に書いてあったのと、
前回勉強した時、難しく考えすぎてドツボにハマったので
とりあえず次に進みます。
0468デフォルトの名無しさん
2009/09/01(火) 20:24:24VCダイアログフォームの変数とクラスの追加はダイアログクラスに対してやるものだと思ったが
そのフォームリソースのダイアログクラス作ってある?
0469デフォルトの名無しさん
2009/09/01(火) 21:50:39ttp://homepage2.nifty.com/natupaji/DxLib/
というdirectXのライブラリを使って色々書いているのですが、
これは何という環境になるんでしょうか??
SDKやMFCとか色々聞きますが、定義は調べて何となくわかるのですが
実際使ってみてもイマイチピンと来ません。
恥ずかしい質問ですが、よければ教えてください
0470デフォルトの名無しさん
2009/09/01(火) 21:59:19http://pc11.2ch.net/test/read.cgi/gamedev/1249822550/
0471デフォルトの名無しさん
2009/09/01(火) 22:01:28スレ違いすいませんでした
0472デフォルトの名無しさん
2009/09/01(火) 22:26:00そうするのもマチガイではない。
が、class のメンバ変数なら、コンストラクタで初期化するクセをつけとくべき。
public:
Osake( int z)
{
nakami = z;
yoi = 0; // ここで初期化
}
0473デフォルトの名無しさん
2009/09/01(火) 22:30:200474デフォルトの名無しさん
2009/09/02(水) 01:32:020475デフォルトの名無しさん
2009/09/02(水) 07:56:38変数の宣言やhMemDC = CreateCompatibleDC(hDC);などの部分は行数の関係で省略します。
今、下のようなソースがあるとします。今hMemDCのメモリデバイスコンテキスト内で描画を段階的に行い、
そこの描画が完成すると、hDCに転送して画面に描画するということをやりたいと思っています。
ところが、このソースでは画面に何も表示されてません。�@の部分を仮にhDCではなくhMemDCとしたところ
問題なく画面が表示されるため、転送部分やなんらかのメモリデバイスハンドルの扱い方の部分で間違いがある気がします。
どなたか解決方法がわかるかたがいらっしゃれば教えてください。もしくはこのソースがわかりにくい場合は、
何かソースを提示して、ダブルバッファリングの解説などしていただけませんか。よろしくお願いいたします。
case WM_PAINT:
hDC = BeginPaint(hWnd, &ps); //�@
hBrush = CreateSolidBrush(RGB(255, 255, 0));
InvalidateRect(hWnd, NULL, TRUE);
SelectObject(hMemDC, hBrush);
ExtFloodFill(hMemDC, 1, 1, RGB(255, 255, 255), FLOODFILLSURFACE);
SetBkMode(hMemDC, TRANSPARENT);
GetTextMetrics(hMemDC, &tm);
GetClientRect(hWnd, &rt);
DrawText(hMemDC, EndBuf, -1, &rt, DT_CENTER);
BitBlt(hDC, 0, 0, 640, 480, hMemDC, 0, 0, SRCCOPY);
DeleteObject(hBrush);
break;
0476デフォルトの名無しさん
2009/09/02(水) 10:26:08hBitmap = ::CreateCompatibleBitmap( hDC, , ,);
SelectObject( hMemDC, hBitmap);
・
・
・
EndPaint( hWnd, &ps);
break;
0477デフォルトの名無しさん
2009/09/02(水) 10:53:430478デフォルトの名無しさん
2009/09/02(水) 10:58:14すまん、>>476 は >>475 へのレス。アンカー忘れた。
0479デフォルトの名無しさん
2009/09/02(水) 22:31:42たとえば
i > MY_ENUM_VALUE
みたいなの。MY_ENUM_VALUEはヘッダファイルで定義されてる。
0480デフォルトの名無しさん
2009/09/03(木) 02:59:270481デフォルトの名無しさん
2009/09/03(木) 04:29:09DreamSpark対象者ならそん中のVS 2008 Proを使うのもありだな。
自分が上位エディションで魅力を感じる機能はここらへん。
Standard以上: ATL/MFC、リソースエディタ、x64、1ソリューション内での複数言語プロジェクトの混在、マクロ対応など
Professional以上: モバイル対応など
Team Suite以上: プロファイラ、あと知らん
0482デフォルトの名無しさん
2009/09/03(木) 05:45:10あるサイトのサンプルコードを動かすとエラーも警告も出ないのですが
一瞬ウィンドウが開いて、即閉じてしまい内容を確認できません。
コンソールアプリケーションでは無い方(Win32アプリケーション)なのですが
WinMain()ではなく_tWinMain()となっている事が気になるのですが
何かが関係しているのでしょうか?
メッセージループやWindowProc()に何か追記すれば
勝手に閉じずにストップできたりしますでしょうか?
0483デフォルトの名無しさん
2009/09/03(木) 07:48:03メッセージループになってるはずだから
元からそう作ってあればわざわざ閉じないような追記は必要ないだろ
0484482
2009/09/03(木) 08:18:47いえ、そのサンプルコードと一緒に、
出力結果が表示される様の画像が添付されているので(コンソールではない画面で)
そのサンプルの内容を画面で確認できる・・するべきなんだと思うのですが・・
メッセージループに入る前に処理を全部終わらせる形なので
無理やりにでも止める方法があれば、よろしければ情報を教えて頂けると助かります;
本当に止める必要が無いのかもしれないのですが、できれば結果を確認したいので;
0485デフォルトの名無しさん
2009/09/03(木) 09:49:190486デフォルトの名無しさん
2009/09/03(木) 10:04:170488デフォルトの名無しさん
2009/09/03(木) 20:59:25MFC Feature Pack
http://msdn.microsoft.com/ja-jp/library/bb983962.aspx
このページにあるサンプル群を探しています。
VS2008のproを使っています。SP1にもアップしています。
vc_samples.exe内も見たのですが見あたらないのですが。
0489デフォルトの名無しさん
2009/09/03(木) 21:46:38http://www.microsoft.com/downloads/details.aspx?familyid=9761BB57-F066-4B70-9318-3965C5E68AAD&displaylang=en
0490デフォルトの名無しさん
2009/09/03(木) 22:01:45あっ!そう言うことなんですね。
ありがとうございました。
0491デフォルトの名無しさん
2009/09/04(金) 01:18:03クラス作成する時、クラスビューの右クリックからクラス追加すると自動的に
hファイルとcppファイルが生成され、コンストラクタとデストラクタは初めから用意されています。
そしてクラスビューの右クリックからメンバ関数を追加すると、宣言がhに自動的に作成され、
内容を書く枠組みが自動的にcppに作成されます。
しかし、手動でソリューションエクスプローラの右クリックでhファイル、cppファイルを個別に追加した時、
同じ名前にしているのですが、それが対応しているものとVSが認識してくれません。
もちろんcppはhをインクルードもしています。
またそうやって作ったクラスに右クリックでメンバ関数追加するとhファイルの中に関数の内容記述する{}までが
作成されてしまい、cppファイルが無視されます。
この対応付けは一体何処に設定されており、どうやって設定すればよいのでしょうか?
0492デフォルトの名無しさん
2009/09/04(金) 05:19:19コントロールパネルにあるシステムのプロパティの
CPU 情報を取得する方法はありませんでしょうか。
PentiumIII以前の物だとレジストリのにProcessorNameStringがありませんし、
拡張CPUIDのプロセッサ・ブランド・ストリングもありません。
なのでシステムのプロパティの物が取得出来たら手っ取り早いかと思いまして。
0493デフォルトの名無しさん
2009/09/04(金) 15:28:57Win32のGetSystemInfo当たりで取得できるんじゃね?
0494デフォルトの名無しさん
2009/09/04(金) 15:47:060495デフォルトの名無しさん
2009/09/04(金) 16:06:08GetSystemInfoは旧世代の遺物。386 or 486 or Pentium くらいしか判断できん。
0496デフォルトの名無しさん
2009/09/04(金) 16:35:410497デフォルトの名無しさん
2009/09/04(金) 16:38:03[ビルド]メニュー - [構成マネージャ] - <新規作成...>
0498デフォルトの名無しさん
2009/09/04(金) 16:50:52でもこれって、空かRelease or Debugのコピーでしか作れないんでしょうか。
ソリューション内に、8つのプロジェクトがあるんですが、新しく作った構成の雛形みたいなのを編集したいです。
0499デフォルトの名無しさん
2009/09/04(金) 18:00:460500デフォルトの名無しさん
2009/09/04(金) 18:58:52ソリューションの構成を新規作成した際に、全てのプロジェクトに一律に設定される構成を
たとえばProjectAのDebug構成と同じにするといった方法がちょっとわからないです。
0501デフォルトの名無しさん
2009/09/04(金) 20:09:41前のページに戻ったりの関数を知りたいのですが、ドキュメントとかはあるのですか?
ちょっとどこを調べればいいかわかりません。教えてください。
0502デフォルトの名無しさん
2009/09/04(金) 20:15:590503デフォルトの名無しさん
2009/09/04(金) 20:47:20ActiveXコントロールは内科と思っていました(><;)
どうもありがとうございました(^人^)
0504デフォルトの名無しさん
2009/09/05(土) 01:40:13個々のプロジェクト別でなくて、以前のような全体で共通の設定をしたいのですが、
どこに行ったのでしょうか?
0505デフォルトの名無しさん
2009/09/05(土) 01:46:10ソリューションもプロジェクトも中身はどうせxmlなんだから雛形くらい自分で編集したら?
0506デフォルトの名無しさん
2009/09/05(土) 18:43:44VisualC++2008をインストールして、実際に
>>5をやってみたら、LINK2005と1169のエラー
がでてしまったのですが、改善するには
どうすればいいんでしょうか?
エラー内容は
LNK2005: _main は既に ***.obj で定義されています。
LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました。
です。
0507デフォルトの名無しさん
2009/09/05(土) 18:46:490508デフォルトの名無しさん
2009/09/05(土) 20:00:17error C2449: '{' を見つけました (関数のヘッダーがないかもしれません)。
error C2059: 構文エラー : '}'
とでたんですが。
0509デフォルトの名無しさん
2009/09/05(土) 20:03:08釣りだろ。相手すんな。
0510デフォルトの名無しさん
2009/09/06(日) 12:46:53.NET Framworkがなんとかかんとかruntimeがどうたらこうたらってでて選択できないんだけど
リンカの設定するにはどうすりゃいいの>
0511デフォルトの名無しさん
2009/09/06(日) 16:06:50何をしようとしてどこが間違ってるのか指摘できるんだが。
0512デフォルトの名無しさん
2009/09/06(日) 20:33:39情報はプログラム本体にコンパイルしたときに保存されるんですか?
ツール作って公開したいんですが、それから身元割れしたくないんですが
もちろんウイルス作ったわけじゃないですが
0513デフォルトの名無しさん
2009/09/06(日) 20:42:100514512
2009/09/06(日) 20:54:54無料で配布されているのに(笑)
0515デフォルトの名無しさん
2009/09/06(日) 21:06:02._,,,,,,。,,、 广'x、 ,,、._ 」'゙''i、
,,,,,_.,,,,、广゚┐ .,,,v―冖"~゛ ゙'i、 .ト ,|,_ riゃ .} .,i´ '冖i、
.] ` f゙,l° ,i´ .゙l_ .y-┐ 'や'゙"゙’ _,,,vr" .゙ト.゙'x,,,,广 ィ・'''゙~ .._,,v・゚ヒ''''・x、
入、rУ ,iレ-v,,,、 .,r°."'''l゙ ,|√゙゚'i、 匸 ._ .y・'゙゚,,,v―-, .:゚ーa .√ ._,rll_ :}
.,r''y|゛゙゙l..,i´ ,i"゙l, .゙ト ,r°,,, .., ._,,vぐ .`√ .,i´l广._,,,,,,,,i´ ,,i´ ,i´ ,「 .:| .~''''″
.r″ .|゙l、 “ .,i″.yi入-イ il∠i、.` .,メ| | 」'ト .,,i´ .,i´ ,, ̄ .[ .,i´.,,,,,,! .]_
.゙l_,i´,レ .'?_,,,,レ ~''┐ .,r°.,i´.| .| ,l゙ :゙l、 ,,i´ ,i´ l゜.゚L__ .:―ヤ゚″_ :~''=、
.,r″.,x=,, .,i´ ,x'".,,x'″ .゙l、 ゙冖''″ .] | .,i´ .゙l, .~1 .゚L '゙〃 ,n, .,,}
.,l彡'''″ .゙~"''''''''''"゜ .テ''~゛ .:゚'―---―・° ―″ .~''¬―'″ .:゚=_,r
0516デフォルトの名無しさん
2009/09/06(日) 21:09:36XPでVC++2008EEを使っています。
0517デフォルトの名無しさん
2009/09/06(日) 21:14:03「へえ…」
「かぁ」
「(笑)」
この辺、ぼろが出てますよダンナwww
0518デフォルトの名無しさん
2009/09/06(日) 22:41:24初期設定だとリリースビルドでもデバッグ情報の埋め込みが有効になっている。
この状態だと、EXEファイルにPDBファイルへのフルパスが書き込まれる。
例えば、マイドキュメントの中にプロジェクトがあったとすると、
C:\Users\ユーザ名\Documents\プロジェクト名\Release\Hoge.pdbって具合になるので、ユーザ名がバレてしまう。
対策としては、出力フォルダの場所を無害なところにするか、デバッグ情報を埋め込まない設定にすること。
0519デフォルトの名無しさん
2009/09/07(月) 17:13:05メンバ変数やメンバ関数をヘッダに追加するたびに、
そのクラスを使っているアプリもすべてリビルドしないといけないものなのですか?
DLLのありがたみが感じられない上に、うっかりリビルドし忘れて
「アプリが正しく動かない」状態が簡単に発生しそうなのですが。
0520デフォルトの名無しさん
2009/09/07(月) 17:19:56メンバ変数やメンバ関数を削除したなら、それを使っているアプリのリビルドは当然必要だが、追加なら必要はない。
DLLを更新するたびにアプリのリビルドが必要だとすれば、Microsoft Update をするだびに
使っているアプリのバージョンアップが必要になる。
0521デフォルトの名無しさん
2009/09/07(月) 17:38:44メンバ変数の増減は、リビルド必要。
仮想的でないメンバ関数の追加はリビルドしなくても動く(が、リビルドするほうが安心)。
だから、pimplとかCOMとかのような
クラス実装が変化してもアプリ側に影響を及ぼさない技術がもてはやされるわけ。
0522デフォルトの名無しさん
2009/09/07(月) 18:42:04逆に言えば、その方法しかないということなんでしょうか。
0523デフォルトの名無しさん
2009/09/07(月) 18:59:45普通のユーザーは自分が必要な機能だけ使ってるわけで、
すべての機能を知りつくしてる必要はないだろ。
サポートが必要なら公式のサポートまたはマイクロソフトの関係者がいる場所で聞けばいい。
0524デフォルトの名無しさん
2009/09/07(月) 21:12:22DependencyWalkerでどのDLLを使うかを調べています。
ttp://kissho1.xii.jp/7/src/7jyou25711.png
それで、このように表示されたのですが、
これら6つのDLLがあれば良いということになるのでしょうか?
それぞれの項目を展開すると、さらにたくさんのDLLが表示されますが、
それらは上位のDLLに含まれている、と解釈してよいのでしょうか?
もし、上記6つだけでよいのであれば、配布先ユーザーには
何を用意してもらえばよいでしょうか?
MSDNを見ると、
KERNEL32.DLL
USER32.DLL
OLE32.DLL
はOSに元から入ってるそうなので、問題ないと思いますが、
その他のDLLは「Visual C++ 2005 再頒布可能パッケージ」を
インストールしてもらえば揃うのでしょうか?
よろしくお願いします。
0525デフォルトの名無しさん
2009/09/07(月) 21:24:16人柱も迷惑だよな
0526デフォルトの名無しさん
2009/09/07(月) 21:29:44だから、配布する前に確認してるんだろ
初心者スレなんだから問題ないと思うが
>>524
リンク先が見れん
0527デフォルトの名無しさん
2009/09/07(月) 21:43:080528524
2009/09/07(月) 21:45:47以下のように6つのDLLがリストされています。
・KERNEL32.DLL
・USER32.DLL
・GDI32.DLL
・SHELL32.DLL
・OLE32.DLL
・OLEAUT32.DLL
よろしくお願いします。
0529デフォルトの名無しさん
2009/09/07(月) 21:56:200530デフォルトの名無しさん
2009/09/07(月) 21:56:39その6つはすべてOSの一部。
すなわち、そのプログラムはほかに何もインストールしていなくても動く。
強いて言えば、下3つはIEのバージョンアップで新しいバージョンが入ることがあったことくらい。
ただ、それはIE4-5辺りのこと。今はもうない。
0531524
2009/09/07(月) 22:01:47DirectShowプログラムなので、少し心配でしたが、やはりDirectXSDKからWindowsSDKに移っただけに、
OSの標準のライブラリとしてはじめから入るようになったんですね。
教えてくださって、ありがとうございました!
>>529
うまくいかなかった場合はそれで対応したいと思います。
ありがとうございました。
0532デフォルトの名無しさん
2009/09/07(月) 22:16:34おっとそういうことは最初に言うんだ。
DirectShowは単にDependencyWalkerそのまま使っても表示されないよ。
プロファイル取るモード(実際にEXE動かして確かめるやつ)使うとdshow.dllを確認できるはず。
DirectXならこれをインストールさせるのが確実。
http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=2da43d38-db71-4c1b-bc6a-9b6652cd92a3
なお、Visual C++再頒布可能パッケージでインストールされるのはmsvc*.dll、mfc*.dll、atl*.dll辺り。
0533デフォルトの名無しさん
2009/09/07(月) 23:01:250534デフォルトの名無しさん
2009/09/07(月) 23:53:42グローバル変数にしてしまうのが良いですか?
0535デフォルトの名無しさん
2009/09/08(火) 00:01:34C/C++スレで訊けば?
ちなみに、グローバル変数なんてプログラムにひとつあれば十分。
0536デフォルトの名無しさん
2009/09/08(火) 00:07:06ありがとうございます、行って来ます
やっぱりグローバル変数は使わないほうがいいんですよね・・
0537デフォルトの名無しさん
2009/09/08(火) 00:08:59不用意に多いのは、横目で見られる可能性があるだけ
0538524
2009/09/08(火) 00:16:00失礼しました(汗)
ありがとうございます。
プロファイルモードでさらにDLLを洗い出しました。
上記6つのリストに変わりはありませんでした。
(異なるアイコンでKERNEL32.DLLが出てきましたが)
dshow.dllは見つかりませんでした。
>DirectXならこれをインストールさせるのが確実。
>http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=2da43d38-db71-4c1b-bc6a-9b6652cd92a3
DirectXはVMR9を使う場合は要るみたいですが、今回のプログラムではVMR9は使わないようにしています。
もしそうであっても必要と分かったら教えていただいたURLからダウンロードしてもらうようにします。
>なお、Visual C++再頒布可能パッケージでインストールされるのはmsvc*.dll、mfc*.dll、atl*.dll辺り。
MFC、ATLは使っていませんし、MSVCも、マルチスレッドライブラリを静的にリンクしています。
Visual C++再頒布可能パッケージも不要かもしれませんね。
0539519
2009/09/08(火) 10:34:18やっぱりメンバ増やしただけで、
そのDLL内のクラスを使っている他のアプリケーションも
すべてリビルドしないといけないのですね。
それならアプリケーションのプロジェクトに
クラスをソースごと取り込んでおいて
EXEに埋め込んでしまったほうが安全ですよね。
0540デフォルトの名無しさん
2009/09/08(火) 11:15:15直接クラスをエクスポートしないで関数でやり取りすりゃいいじゃないか
0541デフォルトの名無しさん
2009/09/08(火) 13:33:16dll修正したぐらいで昔のプログラムが使えなくなったなんて話聞かない。
設計がアホなんだろ
0542デフォルトの名無しさん
2009/09/08(火) 17:43:21C++だったらCOMの仕組みを真似すれば拡張するのも割りと楽。
0543デフォルトの名無しさん
2009/09/08(火) 17:56:300545デフォルトの名無しさん
2009/09/08(火) 20:57:22うまくうごいてくれません。どこが間違っているのでしょうか/
一次元の配列では上手く動きました
数値を配列aに代入し、f関数で配列aの4番目の要素を表示させるというコードです
#include <stdio.h>
void f(int *ary);
int main(){
int a[5]=
{0,1,2,3,99};
f(a); }
void f(int *ary){
printf("%d",ary[4]);
return ;}
ですが二次元配列にするとダメです。どこが間違っているのでしょうか?
#include <stdio.h>
void f(int *ary);
int main(){
int a[2][5]=
{
{0,1,2,3,99},
{5,62,6,3,99}
};
f(a);}
void f(int *ary){
printf("%d",ary[4]);
return ;}
0546デフォルトの名無しさん
2009/09/08(火) 20:59:280547デフォルトの名無しさん
2009/09/08(火) 21:03:090548デフォルトの名無しさん
2009/09/08(火) 21:20:180549デフォルトの名無しさん
2009/09/09(水) 00:37:21おそらく、2D配列は1D配列へのポインタの1D配列になるため。
例えば int a[2][5] だと a は int[5] へのポインタ2つの配列ということになる。
a[0] や &a[0][0] みたいにして渡すといいかも。
0550デフォルトの名無しさん
2009/09/09(水) 07:27:25どの行の4列目を表示するのか指定すればよい。
f(a[1]);
>>549
いや、実際はポインタの配列ではないよ。1次元配列を擬似的に2次元配列とみないしているだけ。
{1,2,3,99,5,62,6,3,99}のように値で格納されている。
for (int i=0;i<10;++i)
cout << ((int*)a)[i] << endl;;
を実行してみればわかるよ。
0551デフォルトの名無しさん
2009/09/09(水) 18:42:19リンクエラーとなるのですがなぜでしょうか?
#include <afxwin.h>
class CMyWindow : public CFrameWnd
{
public:
CMyWindow();
};
CMyWindow::CMyWindow()
{
Create(NULL, "猫でもわかるMFC", WS_OVERLAPPEDWINDOW);
}
class CMyApp : public CWinApp
{
public:
virtual BOOL InitInstance();
};
BOOL CMyApp::InitInstance()
{
m_pMainWnd = new CMyWindow();
m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd->UpdateWindow();
return TRUE;
}
CMyApp MyApp;
0552デフォルトの名無しさん
2009/09/09(水) 18:49:45リンクエラーの内容を書いてMFC相談室で訊け。
0553デフォルトの名無しさん
2009/09/09(水) 19:14:530554デフォルトの名無しさん
2009/09/09(水) 21:51:43ApplicationSettings->PropertyBindingから任意のプロパティを選択し「Name」を入力して
OKをクリックすると以下のエラーメッセージが出力されます。
「設定ファイルがプロジェクトに見つかりません。設定ファイルを追加して、再試行してください。」
プロジェクトに設定ファイル(app.config)等を追加してみましたがNGでした。
ご教授のほど宜しくお願いいたします。
[参考サイト]
ttp://www.atmarkit.co.jp/fdotnet/dotnettips/438winsettings/winsettings.html
0555デフォルトの名無しさん
2009/09/10(木) 00:40:33上記サイトにある、backprop.cというプログラムがどうしてもVisual c++でコンパイルできません。
ファイル→新規作成→Win32を選択し、ソースファイルに上記プログラムをぶちこんでビルドしました。が、exeファイル開けず。
よく注意書きを見ると、ttp://www.si.hirosaki-u.ac.jp/~slame/neuro/program1.htmに
lうまくコンパイルできない場合このリンク先をみろと書かれ、そのリンク先に
『drand48,srand48がなくてエラーになる場合
コンパイル時drand48,srand48がなくてエラーになる場合は次の手順でソースプログラムを変更してください。
ヘッダファイル ranran48.h をダウンロードして、ソースプログラムと同じディレクトリに置く。
ソースプログラム backprop.c をテキストエディタ等で開き、ヘッダファイル読み込みの最後の行(11行目)の後に、次の1行をつけ加えて上書き保存する。
#include"ranran48.h"
もう1度コンパイルする』
とあり、言われたとおりにして実行しましたがやはりダメでした。
0556デフォルトの名無しさん
2009/09/10(木) 00:41:381>コンパイルしています...
1>backprop.c
1>c:\c\backprop.c(58) : warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(237) : 'fopen' の宣言を確認してください。
1>c:\c\backprop.c(66) : warning C4996: 'fscanf': This function or variable may be unsafe. Consider using fscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(256) : 'fscanf' の宣言を確認してください。
1>c:\c\backprop.c(70) : warning C4996: 'fscanf': This function or variable may be unsafe. Consider using fscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(256) : 'fscanf' の宣言を確認してください。
1>c:\c\backprop.c(137) : warning C4244: '=' : 'time_t' から 'long' への変換です。データが失われる可能性があります。
1>中間 - エラー 0、警告 4
========== すべてリビルド: 1 正常終了、0 失敗、0 スキップ ==========
ご教授お願いします。
0557デフォルトの名無しさん
2009/09/10(木) 00:47:170558デフォルトの名無しさん
2009/09/10(木) 00:47:20「1 正常終了」
とりあえず、EXEは出来上がっている。
0559デフォルトの名無しさん
2009/09/10(木) 00:50:16中止にして何かキーを押すと閉じ、無視すると「動作は停止しました」ってなります。
0560デフォルトの名無しさん
2009/09/10(木) 01:06:460561デフォルトの名無しさん
2009/09/10(木) 01:08:520562デフォルトの名無しさん
2009/09/10(木) 01:18:070563デフォルトの名無しさん
2009/09/10(木) 01:23:00また、シミュレーションには、exeファイルのコマンドプロンプトからデータファイルを読み込む必要があるのだと思うのですが
肝心のコマンドプロンプトが開けないんですよ。
0564デフォルトの名無しさん
2009/09/10(木) 01:34:25ファイルはプロジェクトファイルと同じフォルダに置くこと。
0565デフォルトの名無しさん
2009/09/10(木) 01:36:31ソースを保存すると1秒ぐらい砂時計になるし、
デバッグモードで実行すると終了する時に5秒ぐらいフリーズするし、
開発環境を閉じる時も10秒ぐらいかかる。
0566デフォルトの名無しさん
2009/09/10(木) 01:52:00言われたとおりにしましたがダメでした。まず、BPというファイルネームです。
で、自分はローカルデスクCドライブに、C言語用にCというフォルダを作り、そこにソースプログラム等を入れるようにしてました。
あなたのおっしゃる通りの作業をしましたが開けません。
Visual c++のprojectsにBPという出来上がったexeファイルを入れて再度試行しましたが、できませんでした。何度もすみません。
0567デフォルトの名無しさん
2009/09/10(木) 01:53:26そのソースを書いた人間にきけ。ここで聞く話じゃない。
0568デフォルトの名無しさん
2009/09/10(木) 02:27:50あとはしらん
0569デフォルトの名無しさん
2009/09/10(木) 05:34:05何か制限などあるのでしょうか?
0570デフォルトの名無しさん
2009/09/10(木) 07:19:45パンピーは買えない。
0571デフォルトの名無しさん
2009/09/10(木) 07:21:370572デフォルトの名無しさん
2009/09/10(木) 09:33:39EE使ってるんですけどwindowsmobile向けのプログラミングもしたいので。
新しく欲しいんですが
普通の奴は10マンとか馬鹿みたいな値段してますけどアカデミックは普通に買えるので。
0573デフォルトの名無しさん
2009/09/10(木) 09:37:290574デフォルトの名無しさん
2009/09/10(木) 17:03:49残念ながらPC買い換えの時期が近いのではないだろうか。
いや、それともよい機会かもしれないぞ。
0575デフォルトの名無しさん
2009/09/10(木) 21:45:39一般的にこれはVistaか7にすればまともになるものなんですか?
0576デフォルトの名無しさん
2009/09/10(木) 22:05:20なので、microsoftの中の人が
「どんどん最適化してるし、マルチスレッド化も進んでるよ、だから安心して」
ってブログで書いてた。
製品版は3倍くらいの速度になるとかしたいとか言ってた筈。
0577デフォルトの名無しさん
2009/09/10(木) 22:22:11これからどんなことを勉強していけばいいのでしょうか?
0578デフォルトの名無しさん
2009/09/10(木) 22:28:52SP1って何の効果があるの
0579デフォルトの名無しさん
2009/09/10(木) 22:49:09オプション-環境-スタートアップでコンテンツのロードのチェックをはずす
同じく、自動バックアップを1時間ごとくらいに設定、にしてみてはどうか。
0580デフォルトの名無しさん
2009/09/10(木) 23:03:44OpenGL
0582デフォルトの名無しさん
2009/09/10(木) 23:07:26Feature Packのライブラリが使えるようになる。
正規表現とか参照カウントのスマートポインタとか。
0583デフォルトの名無しさん
2009/09/10(木) 23:17:49そんなのはいってたの?しらんかった^^;;
0584デフォルトの名無しさん
2009/09/10(木) 23:46:46EXCELのvba
あのexcelという奴は本当に便利だわ
0585デフォルトの名無しさん
2009/09/11(金) 01:35:070586デフォルトの名無しさん
2009/09/11(金) 01:41:280587デフォルトの名無しさん
2009/09/11(金) 01:42:49std::tr1::shared_ptr
Boostのと同じ。
0588デフォルトの名無しさん
2009/09/11(金) 21:49:010589デフォルトの名無しさん
2009/09/11(金) 22:18:49リソースにするんじゃいやなのかい?
0591デフォルトの名無しさん
2009/09/11(金) 22:34:550592デフォルトの名無しさん
2009/09/11(金) 22:36:220593デフォルトの名無しさん
2009/09/11(金) 22:36:360595デフォルトの名無しさん
2009/09/11(金) 22:39:460596デフォルトの名無しさん
2009/09/11(金) 22:42:24VC++でリソースビュー開いて、プロジェクト名で右クリック→カスタムで
簡単にexeに組み込まれるリソースのできあがりじゃろw
0597デフォルトの名無しさん
2009/09/11(金) 22:57:38> 594 名前:588[sage] 投稿日:2009/09/11(金) 22:39:26
たかが数分で「なかなかヒットしない」などとほざくな。>>4 のいちばん上にも使用例は書いてある。
0598デフォルトの名無しさん
2009/09/11(金) 23:03:08>>596
resouce.hとかは関係無い?
勝手に読み込み先が変わってくれるってこと?
0599デフォルトの名無しさん
2009/09/12(土) 00:25:48読込先?何の話だ?
おまえが何語を話しているのか理解できなくなってきた。
0600デフォルトの名無しさん
2009/09/12(土) 00:52:24関係ある。
596の手順を行うと、VCが自動でresource.hを編集していく。
必要に応じてincludeする。
0601デフォルトの名無しさん
2009/09/12(土) 08:31:13なぜでしょうか?
0602601
2009/09/12(土) 08:38:09自己解決しました
0603デフォルトの名無しさん
2009/09/12(土) 12:09:10全角16文字*16行の256文字まで入力可能なテキストボックスを作りたいのですが
最大文字数を256に設定することはできたのですが最大行数を16に設定する方法がわかりません。
どなたかご教授お願いします。
0604デフォルトの名無しさん
2009/09/12(土) 12:32:070606デフォルトの名無しさん
2009/09/12(土) 15:52:29このページを参考に姓名を入力させ、表示するプログラムを作りました。
まんま写したつもりなんですけどビルドエラーが発生します。
どこか間違ってるのでしょうか?
自分では分からないので指摘お願いします。
以下ソースコード
#include "stdafx.h"
using namespace System;
int main()
{
String ^string1,^string2;
Console:Title="初めてのプログラム";
Console::Write("姓を入力してください:");
string1=Console:ReadLine();
Console::Write("名を入力してください:");
string2=Console:ReadLine();
Console::WriteLine("姓名は:" + string1 + " " + string2);
return 0;
}
0607デフォルトの名無しさん
2009/09/12(土) 16:00:190608606
2009/09/12(土) 16:03:38コンパイルしています...
C800.cpp
.\C800.cpp(14) : error C2275: 'System::Console' : この型は演算子として使用できません
c:\windows\microsoft.net\framework\v2.0.50727\mscorlib.dll : 'System::Console' の宣言を確認してください。
.\C800.cpp(14) : error C2143: 構文エラー : ';' が ':' の前にありません。
.\C800.cpp(14) : error C2143: 構文エラー : ';' が ':' の前にありません。
.\C800.cpp(16) : error C2275: 'System::Console' : この型は演算子として使用できません
c:\windows\microsoft.net\framework\v2.0.50727\mscorlib.dll : 'System::Console' の宣言を確認してください。
.\C800.cpp(16) : error C2143: 構文エラー : ';' が ':' の前にありません。
.\C800.cpp(16) : error C2143: 構文エラー : ';' が ':' の前にありません。
ビルドログは "file://c:\Users\Owner\Documents\Visual Studio 2008\Projects\C800\Debug\BuildLog.htm" に保存されました。
C800 - エラー 6、警告 0
mscorlib.dllってのをメモ帳で開いてみようとしたら応答なしになっちゃう
>>607
「ビルドエラーが発生しました」としか出ないんですが・・・
0609デフォルトの名無しさん
2009/09/12(土) 16:07:010610606
2009/09/12(土) 16:08:24Console:Title="初めてのプログラム"; を
Console::Title="初めてのプログラム"; に修正しましたが
同じくビルドエラーでした
0611デフォルトの名無しさん
2009/09/12(土) 16:10:450612デフォルトの名無しさん
2009/09/12(土) 16:12:340614デフォルトの名無しさん
2009/09/12(土) 16:19:19基本2つとかもうそういう問題じゃなくてですね・・・。
スコープ解決演算子というものが…(ry
0615デフォルトの名無しさん
2009/09/12(土) 16:19:32_ASSERT( FALSE);
0616デフォルトの名無しさん
2009/09/13(日) 01:11:34頭と後ろのconstの意味はなんでしょうか。。
virtual const DWORD GetInputNum(void) const = 0;
0617デフォルトの名無しさん
2009/09/13(日) 01:23:27後ろのconstは、そのメンバ関数がconstなインスタンスに対して呼べるしるし (thisがconstになる)
0618デフォルトの名無しさん
2009/09/13(日) 01:27:060619デフォルトの名無しさん
2009/09/13(日) 01:32:360620デフォルトの名無しさん
2009/09/13(日) 02:06:20その書き方が気になる
純粋仮想関数でぐぐれ
あと言語自体の質問はC++スレでやれ
0621デフォルトの名無しさん
2009/09/13(日) 04:08:580622デフォルトの名無しさん
2009/09/13(日) 08:38:34そうそれ。
0623デフォルトの名無しさん
2009/09/13(日) 11:56:13ボタンにBS_DEFPUSHBUTTONを設定し、SetFocusしても移動しませんでした。
TABとEnterは使えてます。
規定のボタンにマウスを自動で移動させるには、自身で実装する必要があるのでしょうか?
0624デフォルトの名無しさん
2009/09/13(日) 12:13:53俺はマウスが勝手に動くと逆に使いにくいから、そういう機能は使わない。
0625デフォルトの名無しさん
2009/09/13(日) 12:16:25マウス・ポインタを自動的に既定ボタン上に移動させる
0626デフォルトの名無しさん
2009/09/13(日) 19:32:00整数を全て加えた値を表 示するプログラムを作れ」という問題が分からないんで教えてください::
for next を必ず使わなければいけないそうです
自分で作ったプログラム↓
dim i,j,sum as integer
i=val(textbox1.text)
j=val(textbox2.text)
for i = val(textbox1.text) to val(textbox2.text)
sum=sum+i
next
label3.text=i&"〜"&j&"までの和は"&sum&"です"
一応動くのですが数値がおかしいんです・・・。
間違ってるところを教えてください。
0627デフォルトの名無しさん
2009/09/13(日) 19:39:31あなたは質問するスレを間違っている。
0628デフォルトの名無しさん
2009/09/13(日) 20:34:56うん、帰れ。
0629デフォルトの名無しさん
2009/09/13(日) 21:49:50ご教授願えればと思い質問させて頂きます。
環境:WindowsXP、Visual Studio6.0 MFC、SDI
テキストボックスに入力された16進数の値を、バイナリとしてファイル出力したいのですが、
文字列として読み込んだ値を16進数に変換してくれるような関数はあるでしょうか?
(イメージ)
Cstring AAA = "FF";
出力ファイルをバイナリエディタで開いた時 FF
もしあったら、無ければ代替方法を お教え願えればと思います。
よろしくお願いいたします。
0630デフォルトの名無しさん
2009/09/13(日) 21:58:23strtol
16進数に変換するんじゃなくて、文字列を16進数として解釈して変換後の数値を返す関数だが
0631デフォルトの名無しさん
2009/09/13(日) 23:00:070632デフォルトの名無しさん
2009/09/13(日) 23:37:08大体何したいか分かっててもこのスレじゃ答えてあげられないんだ
すまない
0633629
2009/09/14(月) 00:35:11回答ありがとうございます。
明日と言うか今日試して見ます。
また何かあったおりは、アドバイスお願いいたします。
0634デフォルトの名無しさん
2009/09/14(月) 03:05:100635デフォルトの名無しさん
2009/09/14(月) 09:50:48いったい何するプログラムなのか理解不能。
ただの興味本位や思いつきでやってることなら関わるだけ時間の無駄な気がする。
0636デフォルトの名無しさん
2009/09/14(月) 16:54:04これを変更するにはどこをいじればいいでしょうか
0637デフォルトの名無しさん
2009/09/14(月) 17:31:23わざわざ本人の代わりに探してやるほどお人よしじゃないから
0638デフォルトの名無しさん
2009/09/14(月) 17:40:48[ツール] - [オプション]
0639629
2009/09/15(火) 01:58:27多分自分の質問に対するレスですよね?
出力するファイルは、他のシミュレータが読み込むデータファイルとなります。
勉強がてらサポートツールを作ってみて、と言われて作成しているしだいです。
データ数としては全部で70Byte程なので、各テキストボックスからの入力を
教えて頂いた方法で、切り出し&ループして変換しようと思っております。
もちろん一括で簡単に変換できたら嬉しいですけど。
とにかく、お目汚しな質問スイマセンでした。
0640デフォルトの名無しさん
2009/09/16(水) 05:17:52インテリセンスが機能しなくなるのはあきらめるしかないんですかね
0641デフォルトの名無しさん
2009/09/16(水) 11:48:58C言語で書いていた画像処理のプログラムをVC++でWindowsアプリケーションにしようと思いやり始めたのですが、
なかなかC言語と同じようにはいかずに困っています。
環境:Windows XP, Visual C++ 2008 Express Edition, Windowsフォームアプリケーション
今、メニューを作っています。
メニュー⇒ファイル⇒画像を開く・画像を保存する・表示画像のクリア・終了する
と作っているところなのですが、表示画像のクリアでつまずいています。
ファイルから読み込んだ画像をpictureBoxで表示しているのですが、
pictureBoxの画像をクリアするにはどうすればよいのでしょうか?
0642デフォルトの名無しさん
2009/09/16(水) 20:39:58何度プロジェクトを作り直しても下記のエラーがでるようになったのですが
解決方法が分かりません。作業用フォルダはデフォルトのディレクトリです。
ChildWindow fatal error LNK1104: コンパイラは、ファイル 'Debug/ChildWindow.exe' を開くことができません。
0643デフォルトの名無しさん
2009/09/16(水) 20:57:10ファイル "filename" を開けません。
指定されたファイルを開けません。
ヒント
このエラーには次のような原因が考えられます。
ディスク容量が足りません。
ファイルが存在しません。
ファイル名またはパスの指定に誤りがあります。
ドライブの指定が無効です。
ファイルに適切なアクセス権がありません。
展開した filename のパス名が 260 文字を超えています
0644デフォルトの名無しさん
2009/09/16(水) 21:44:240645デフォルトの名無しさん
2009/09/16(水) 21:46:360646デフォルトの名無しさん
2009/09/18(金) 04:45:022005だとファイルが見つからないって起こられるのはなんとかならんかね?
オープンソースのをコンパイルする時にディレクトリ指定にすると同じ環境作り直すのが大変になるし
#include "hoge.h"って打ち返るのもめんどくさいし
0647デフォルトの名無しさん
2009/09/18(金) 08:49:14インクルードディレクトリにピリオド1文字指定するのがそんなに大変か?
あるいは、ダブルクォーテーションに直すのも正規表現で、ソリューション全体を検索対象にすればそんなに大変でもないと思う。
0648つーか、おかしいのは>646の頭か
2009/09/18(金) 09:47:10それは寧ろ、VC6の方がおかしいから。
0649デフォルトの名無しさん
2009/09/18(金) 14:32:560650デフォルトの名無しさん
2009/09/18(金) 14:35:52それは自前の、あるいはそのプログラム固有のヘッダでも?
インクルードパスを正しく設定していれば<>でいいと思う。
0651649
2009/09/18(金) 14:39:480652デフォルトの名無しさん
2009/09/20(日) 01:16:02VisualC++6.0SE・MFCを使用し、コンパイルオプションに/Ob1を指定したのですが
> コマンド ラインの警告 D4002 : 認識不可能なオプション '/Ob1' を無視しました。
と表示され効果がありません。この機能はStanderd Editionでは使えないと
マニュアルにありますが、何か代替手段は無いでしょうか。
用途としては、デバッグ時にも下記のコードをインライン化したいというものです。
>template <class T> class クラス名{
> T* m_pData;
> __forceinline T& operator[](int index){ return m_pData[index]; }
動的配列に大量のランダムアクセスを多箇所で行うため、これがインライン化
されていないと処理速度が落ちてしまいデバッグがつらいです。
どうかよろしくお願いします。
0653デフォルトの名無しさん
2009/09/20(日) 01:24:270654デフォルトの名無しさん
2009/09/20(日) 03:13:36ありがとうございます。
意図がよく飲み込めませんでしたが、最適化オプションを/Odから/O2あたりに
変更するようにアドバイスいただいたと受け取りました。試してみたところ
インライン化はできませんでした。
/O2にするとエディットコンティニューが使用できなくなりますが、そもそも
エディットコンティニューを使用しなければインライン化なしでも大幅な
速度低下は起こらないようになりました。不思議です。
以上のことから、大きなデータはデバッグコードオプションを/ZIから/Ziに
変更してデバッグすることにします。
ありがとうございました。
0655デフォルトの名無しさん
2009/09/20(日) 14:41:50さっさと最新VCのExpress Editionに移行しろ
0656デフォルトの名無しさん
2009/09/20(日) 15:09:54VC6はもうC++じゃねーんだってば!!
VC++2008 Express Editionにしろよ!
0657デフォルトの名無しさん
2009/09/20(日) 17:26:56くだらないな
0658デフォルトの名無しさん
2009/09/21(月) 00:46:220659デフォルトの名無しさん
2009/09/21(月) 01:08:00ものによるとしかいえないが、まず無理と考えたほうがよい
0660デフォルトの名無しさん
2009/09/21(月) 20:29:370661デフォルトの名無しさん
2009/09/21(月) 20:34:500662デフォルトの名無しさん
2009/09/23(水) 12:23:12ですが、なんとなくそろそろ最新のVCに変えようかと考えています。
最新のVCってバージョンはどれですか?
Vistaやwin7のプログラムも作れますか?
0663デフォルトの名無しさん
2009/09/23(水) 12:31:09次は2010
Vistaはおっけー
7は新しいWindowsSDKを入れてください
0664デフォルトの名無しさん
2009/09/23(水) 12:38:102005だけどWin7対応作れてるよ 今買うなら.NETの関係で断然2010待ちだが
0665デフォルトの名無しさん
2009/09/23(水) 14:27:380666デフォルトの名無しさん
2009/09/27(日) 01:18:38プログラムを書く→コンパイル→デバックなしで開始→でプログラムが起動しますが
その時に開くウィンドウC:\windows\system32\cmd.exeの日本語が全て白い四角で表示されてしまいます。
どうやって直したらいいでしょうか?
よろしくお願いします。
0667デフォルトの名無しさん
2009/09/27(日) 01:46:020668666
2009/09/27(日) 02:05:59int main(void)
{
printf("こんにちは世界\n");
return 0;
}
これをコンパイルして実行しても□□□□□□□こんな感じにしかならないんです。
なぜだ、、、
0669デフォルトの名無しさん
2009/09/27(日) 02:08:250670デフォルトの名無しさん
2009/09/27(日) 09:22:320671デフォルトの名無しさん
2009/09/27(日) 10:39:17悩んでおりますが、どなたかわかる方お助けくだされば幸いです。
開発環境は以下です
Windows XP SP2
Visual Studio .NET 2003 SP1
問題の発生手順
1.VB.NETのアプリケーションを作る
2.同ソリューションにVC.NET(マネージドC)のアプリケーションを作る
3.マネージドCのプロジェクトのプロパティーを以下のように設定
・C/C++のコマンドラインの追加のオプションを削除
・リンカの入力で削除してmsvcrtd.libを設定(リリースにはmsvcrt.lib)
・リンカの入力でシンボルの強制を__DllMainCRTStartup@12に設定する
・リンカのコマンドラインで追加のオプションを/NOENTRY /NODEFAULTLIB:LIBCMTDと設定
4.VB.netのプロジェクトの参照設定から参照の追加をしてプロジェクトタブの中に
マネージドCのプロジェクトがあるのでそれを設定
続きます
0672デフォルトの名無しさん
2009/09/27(日) 10:40:095.マネージドCのプロジェクトに以下のような簡単なプログラムを書く(ヘッダは割愛します)
int clsTest::tst(String* strFileName)
{
int nRet;
char* pstrFileName;
nRet=0;
pstrFileName = (char*)(void*)Marshal::StringToHGlobalAnsi(strZipFileName);
nRet=tstsub(pstrFileName);
Marshal::FreeHGlobal(pstrFileName);
return nRet;
}
int clsTest::tstsub(char* pstrFileName)
{
return 0;
}
6.VB.netからは以下のようにしてマネージドCを呼び出すようにします
Dim lclsTest As New clsTest
lclsTest.tst("ああああ.txt")
続きます
0673デフォルトの名無しさん
2009/09/27(日) 10:41:27さてここまでの手順でずっと開発を進めていましたが、特に問題らしい問題はなかったでした
ところが、マネージドCにSTLをつかうとコンパイルするたびに頻繁に落ちます
変更かけてコンパイルをすると2回〜4回くらいに1回の割合で落ちます。
テストコードは以下のとおりです
int clsTest::tstsub(char* pstrFileName)
{
vector<wstring> vstrwFilePath;
vector<wstring>::iterator itewstr;
wstring strwFilePath,strwTmp;
vstrwFilePath.push_back(L"あいうえお");
vstrwFilePath.push_back(L"かきくけこ");
vstrwFilePath.push_back(L"さしすせそ");
for(itewstr=vstrwFilePath.begin();itewstr!=vstrwFilePath.end();itewstr++){
strwTmp=*itewstr;
}
return 0;
}
落ちるタイミングはコンパイルエラーなり正常終了する直前で固まって落ちます。
なのでコンパイル自体はすべて行われているみたいです。
どうもタスク一覧に切り替わるようなタイミングで落ちています。
しかも連続でやっても再現性はなく、ある程度stlを含むソースをいじって
コンパイルしなおさないと再現しません。
色々調べてみましたがわかりません。
stl部分をアンマネージプロジェクトに分けてlib化やdll化をしても現象は同じです
どなたか解決策がわかる方お願いします。
0674デフォルトの名無しさん
2009/09/27(日) 10:44:52× Marshal::StringToHGlobalAnsi(strZipFileName);
○ Marshal::StringToHGlobalAnsistrFileName);
0675デフォルトの名無しさん
2009/09/27(日) 10:47:17× Marshal::StringToHGlobalAnsi(strZipFileName);
○ Marshal::StringToHGlobalAnsi(strFileName);
0676デフォルトの名無しさん
2009/09/27(日) 10:59:49× 2.同ソリューションにVC.NET(マネージドC)のアプリケーションを作る
○ 2.同ソリューションにVC++で.NET(マネージドC)のクラスライブラリ(.NET)を作る
0677666
2009/09/27(日) 11:12:45なんでMSゴシックじゃなくなってたんだ、、、
0678デフォルトの名無しさん
2009/09/27(日) 14:28:260679デフォルトの名無しさん
2009/09/27(日) 17:56:29↑サンプルを使ったHTTP通信の『multipart/form-data』について
教えて下さい。
リンク先はyahoo知恵袋です、回答が無く困っています… OTL
0680デフォルトの名無しさん
2009/09/27(日) 18:43:510681デフォルトの名無しさん
2009/09/27(日) 19:27:210682デフォルトの名無しさん
2009/09/27(日) 23:53:39文字コードをだな…。
0683デフォルトの名無しさん
2009/09/28(月) 01:14:37sReq = "Content-Type: multipart/form-data; boundary=-AAAABC\r\n\r\n";
sReq += "---AAAABC\r\n";
sReq += "Content-Disposition: form-data; name=\"FormName_X\"\r\n";
・・・
0684デフォルトの名無しさん
2009/09/28(月) 08:46:19この情報を読むにはどうしたらいいでしょうか?
0685デフォルトの名無しさん
2009/09/28(月) 09:40:160686デフォルトの名無しさん
2009/09/28(月) 10:09:450687デフォルトの名無しさん
2009/09/28(月) 23:10:55>680
おっしゃる通りです。
パケットキャプチャをインストールして確認が出来ました。
>683
解決した方法とは違いましたがありがとうございました。
0688デフォルトの名無しさん
2009/09/28(月) 23:19:44>683
boundary のハイフンの長さを指摘して下さってたんですね、
ご指摘の箇所で合ってました!
ありがとうございます!
違ったとか勘違いしてすいませんでした…(汗
0689デフォルトの名無しさん
2009/09/30(水) 05:19:420690デフォルトの名無しさん
2009/09/30(水) 15:08:48コンソールかGUIかでやり方が違う
0691デフォルトの名無しさん
2009/09/30(水) 15:25:11ggrks
0692デフォルトの名無しさん
2009/09/30(水) 16:54:34DATABOX* p_databox = new DATABOX[num];
構造体Aのポインタ にnewで 構造体Aの配列 を作った場合、
どうすれば 構造体Aの配列 のメンバ変数を1つ1つ取り出せるのでしょうか?(ループ処理等で扱いたくて。)
試しに p_databox[15].name p_databox[15].age などと書いてみても、
エラーにはならないものの常に値が一定で使い物にならず・・。
どうすれば良いのでしょうか orz
0693デフォルトの名無しさん
2009/09/30(水) 16:57:100694デフォルトの名無しさん
2009/09/30(水) 16:58:31アクセスの仕方はたしかこうだなw
0695デフォルトの名無しさん
2009/09/30(水) 17:00:030696デフォルトの名無しさん
2009/09/30(水) 17:04:510697デフォルトの名無しさん
2009/09/30(水) 17:48:18>error C2819: クラス 'XFILEVERTEX' にはオーバーロードされたメンバ 'operator ->' がありません。
>error C2232: '->XFILEVERTEX::x' : 左のオペランドが 'struct' 型です。'.' を使用してください。
と出てしまう様です。
>>693
参考元の通りにmemcpy()していましたが、
書き方に間違いがないとなると、値が入ってない可能性が高そうですね・・。
複写元のデータ形式がはっきりしていないので梃子摺りそうですが・・ありがとうございました。
入れてはいます。処理は成功してますが確認できていません;
>>695
ちょっと特殊な名前だったので仮名を使ってる内に。すみませんでした。
0698デフォルトの名無しさん
2009/09/30(水) 17:49:55失礼しました。
0699デフォルトの名無しさん
2009/09/30(水) 18:00:14コードをそのまま晒してないな
初心者が無駄なこと気にして余計な手間とらせんじゃねーよ
お前の常識の上で動いてないのに改変したコード貼ってんじゃねーぞ糞が
0700デフォルトの名無しさん
2009/09/30(水) 18:14:53はいはいすいませんすいません
0701デフォルトの名無しさん
2009/09/30(水) 18:19:26>試しに p_databox[15].name p_databox[15].age などと書いてみても
使い方はこれであってる。問題は別のところだろう。
要素に何も代入せずに、
name = p_databox[15].name;
などと試したのではないか?
0702デフォルトの名無しさん
2009/09/30(水) 18:35:28void*のポインタからmemcpy()で構造体の要素サイズ分(sizeof)をコピーしているのですが
多分そこが正しく動いていないのですね。
確認すべき場所がよりハッキリしました。
ありがとうございました。
0703デフォルトの名無しさん
2009/09/30(水) 22:28:58なんでそこを貼らないの?
0704デフォルトの名無しさん
2009/10/01(木) 02:07:31さしあたりやりたい事:
よくある「ファイルを開く」のダイアログを使って,
任意のフォルダまでのパスを取得したい.
本当にやりたい事:
事前設定として,「どのフォルダ以下に保存するか」をパスで与える.
設定後,とあるファイルを取得してきて,設定したフォルダ以下に保存する.
これは事前設定にする必要があるので,ファイル取得後に
保存先を指定するダイアログを出す作りは不可.
質問:
OPENFILENAME ofn;
構造体メンバに色々と代入して
GetOpenFileName(&ofn);
を呼ぶことで,よくある「ファイルを開く」のダイアログは出せます.
しかしこの場合, フォルダ を選択した状態でこのダイアログから
抜けることはできず,必ず ファイル を選択しなくてはいけません.
任意のフォルダまでのパスを,マウス操作にて取得する方法は
ありますでしょうか?
以上です,よろしくお願いします.
0705デフォルトの名無しさん
2009/10/01(木) 02:42:10GetOpenFileName()じゃなくてSHBrowseForFolder()使えばいいんだと思う
0706デフォルトの名無しさん
2009/10/01(木) 03:13:08「本当にやりたい事:」の意味が分からん
0707デフォルトの名無しさん
2009/10/01(木) 06:05:38意味わからんな
でも多分>>705で解決しそうな気がするな
0708デフォルトの名無しさん
2009/10/02(金) 09:21:40float z = ((a*b)*(1/c) + (d*e)*(1/f) + (g*h)*(1/i));
こういった式を組み込むと
「常に正常処理できる物」と「値が-1.#IND000になって正常処理できない物」が現れます。
どうやら0で割る(逆数?)ような形の計算になるのが悪いらしい という所まで解ったのですが
この式は最悪全ての変数が0になるので、その対策を教えて頂けませんでしょうか。
また、なぜ正常処理される/されないの差が生まれるか、推察して頂けると幸いです。
0709デフォルトの名無しさん
2009/10/02(金) 10:36:30もしかして知らなかったらもう一回基礎からやり直してほしい。
常識知らない人間に説明するだけ無駄だから
0710デフォルトの名無しさん
2009/10/02(金) 16:19:520で割ったら無限大になると言う人もいますが、C言語では
無限大など定義されてないのでエラーになります
0711デフォルトの名無しさん
2009/10/02(金) 16:33:490712デフォルトの名無しさん
2009/10/02(金) 16:38:370713デフォルトの名無しさん
2009/10/02(金) 17:41:230で割ったら駄目。習った気はするんですが・・完全に忘却してました。
確かに現実でも0で割るなんて言われてもどうすりゃ良いのか解りませんね。
INFとはInfinityって意味の警告だったのですね。
今回はif〜elseで回避しました。今後は同じ過ちをしないよう十分注意します。
為になりました。感謝。
0714デフォルトの名無しさん
2009/10/02(金) 19:06:18お前はINFとINDも区別がつかんのか。
0715デフォルトの名無しさん
2009/10/02(金) 19:14:34INDでしたか。失礼しました。
このスレはとてもお偉い方々が多くいらっしゃって恐縮です。
0716デフォルトの名無しさん
2009/10/02(金) 20:58:34さすがにこの件についてはお前を全く擁護できない
0717デフォルトの名無しさん
2009/10/03(土) 22:50:210718デフォルトの名無しさん
2009/10/03(土) 23:49:28プロジェクトに追加してビルドすると
未解決の外部シンボルというエラーがでます。
どうしたら同一ファイル名のファイルをビルドできますか?
0719デフォルトの名無しさん
2009/10/03(土) 23:50:170720718
2009/10/04(日) 00:22:060721デフォルトの名無しさん
2009/10/04(日) 17:14:32ファイルからBMP,JPG,PNG画像を読み込みCreateDIBSectionで作成した
バッファに展開しました。このときBITMAPINFOHEADER構造体の
biXPelsPerMeter,biYPelsPerMeterに物理解像度を指定しました。
編集する際にこのパラメータを参照しようと
HBITMAP hbm;// 読み込み時に作成したビットマップのハンドル
DIBSECTION dib={0};
dib.dsBmih.biSize = sizeof(BITMAPINFOHEADER);
GetObject(hbm, sizeof(DIBSECTION), &dib);
で取得したのですが、物理解像度だけゼロが返ってきてしまい
取得できません。
ビットマップハンドルに物理解像度を持たせておく方法は
無いでしょうか。よろしくお願いします。
0722デフォルトの名無しさん
2009/10/04(日) 17:45:12何がしたいんだよw
最終目的を言えよ
ハンドルに解像度はもてねぇだろ
0723デフォルトの名無しさん
2009/10/04(日) 18:10:390724デフォルトの名無しさん
2009/10/04(日) 18:50:17自分で保存したファイルを開いたら保存しておいた情報が消えていましたどうしましょうか?
ってこと?
それとも
この構造体にたしかに入れておいたはずなんだけどいつの間にか消えてるんだよね
ってこと?
前者なら
読み込むときにとってきてねぇんじゃね?
後者なら
GetObjectでとってきた構造体に値を入れても書き換えたことにはならないんじゃね?
って感じ?
0725721
2009/10/04(日) 19:23:44>>722
現在作成しているのは画像ファイル入出力ライブラリです。
MS-Wordやイラストレータのように、画像を読み込んだらその画像のDPI値を
考慮したデフォルトサイズで表示するような挙動をアプリケーションに
とらせようと思っています。取得したDPI値をずっとメンバ変数に持っておけば
実現できますが、OSが保持してくれるのなら構造がシンプルになります。
>>723
そうかもしれません。
>>724
情報はOSが管理しているため実装は不明です。後者に近い形になると思います。
・CreateDIBSectionで解像度情報を指定した
・戻り値であるHBITMAP以外は全て破棄した
・GetObjectで情報を再取得すると、画像のピクセル数とピクセルバッファは
取得できるのに解像度情報がゼロになっている
0726デフォルトの名無しさん
2009/10/04(日) 20:01:21自分で必要な情報覚えておけばいいんじゃね?
0727デフォルトの名無しさん
2009/10/05(月) 02:35:17メモリ容量以外にも
どちらの方が高速だとか違いはあるんでしょうか?
0728デフォルトの名無しさん
2009/10/05(月) 02:39:13嫌な言い方だけど、それをここで質問しているうちは全く問題にならない程度の違いだし、
そもそも一言でどちらがいいと説明できるようなものでもない。
0729デフォルトの名無しさん
2009/10/05(月) 02:43:04bool は true か false しか表現できない
BOOL は TRUE、FALSE を表現するが稀にそれ以外の値が使われる事もある
GetMessage() API がその筆頭
0730デフォルトの名無しさん
2009/10/05(月) 03:23:01つまり BOOL は int。
0731デフォルトの名無しさん
2009/10/05(月) 07:04:01その一言で全て解決だな
0732デフォルトの名無しさん
2009/10/05(月) 18:31:01操作を誤ってしまって入力画面に「→」や「・」などの表示がされるようになってしまいました。
(おそらくVBの補助的な機能かと思います)
スペースが「・」で、Tabでのスペースが「→」のように表示されます。
これを消す方法を教えていただけないでしょうか。
プログラミング自体の質問ではなくてすみません。
0733デフォルトの名無しさん
2009/10/05(月) 18:33:06メニューバー→編集→詳細→スペースの表示
0734デフォルトの名無しさん
2009/10/05(月) 18:40:46直りました。簡単なことでしたが非常に助かりました。ありがとうございます。
0735デフォルトの名無しさん
2009/10/05(月) 20:01:49グローバル変数をデバッガのウォッチで監視したいのですが、「スコープ外です」と言われ、参照できません。
ヘッダー内にて、
extern int hogehoge;
し、.cpp内にて
int hogehoge = 2;
して、実行される関数内にて、
hogehoge = 3;
としてブレークポイントをしかけています。
ウォッチでは、
hogehoge
と指定しています。
::hogehoge
でも駄目でした
参照する方法はありませんでしょうか?
0737デフォルトの名無しさん
2009/10/05(月) 20:18:07とか言えばいいのに
0738デフォルトの名無しさん
2009/10/05(月) 21:22:28ここで止まってるなら見れる
0739デフォルトの名無しさん
2009/10/06(火) 14:22:050740デフォルトの名無しさん
2009/10/08(木) 01:07:101.ファイルパスの正当性を確認するためのAPIってないですか?
ユーザがテキストボックスに入力したパスが
正当なものであるのかどうか(特定のファイルを明確に示しているか)を
判定したいのですが、どのようなAPIを使用すれば良いのか分かりません。
ファイルパス表記の判定APIみたいなのがあったら、教えてください。
2.ファイルの存否確認を行うAPIってないですか?
ある特定のファイルが存在するか否かを判断したいです。
現在、CFileFindクラスを使用して、ファイルが見つかったら存在する
としていますが、ファイルパスにワイルドカードを入れたりすると
複数のファイルが検索されてしまったりして、十分ではありません
ファイルの存否確認をするAPIみたいなのがあったら、教えてください。
0741デフォルトの名無しさん
2009/10/08(木) 01:11:14VC++2005を使用中どこかショートカットキーを押してしまったようで
エディタの左側から空白に→や・マークが急に現れて困っています。
戻し方がさっぱりわかりません。わかる方がいたら設定方法を教えてください。
0742デフォルトの名無しさん
2009/10/08(木) 01:14:510743デフォルトの名無しさん
2009/10/08(木) 02:17:191. ファイル命名規約のことを言っているのか?
\ / : * ? " < > | が入ってるか否かを判断したいのか?
2. GetFileAttributesEx() を使う。
戻り値が FALSE なら、そのファイルは存在しない。
0744デフォルトの名無しさん
2009/10/08(木) 02:37:50ありがとうございます。
1の質問についてですが、命名規約のチェックも問題解決の1つになります。
実は、今回この質問をさせていただいた背景には、以下の問題があります。
CFileDialogに初期ファイル名(ファイルパス)を渡せますが、
このときに変なパスを指定するとDoModalを行っても
ダイアログが開かないという現象が起きています。
(自分の環境だけなのかどうかは不明ですが。)
この問題を解決するため、
ユーザがテキストボックスに入力したファイルパスを、
事前にファイルの命名規則等チェックして、存在も確認して、
オールOKだったらCFileDialogのコンストラクタにファイルパスを指定し、
NGだったら空文字列(またはNULL)を指定しようとしています。
最終的に作成したい機能は単純で、ユーザがテキストボックスでもファイル選択ダイアログでも
どちらでもファイルパスを入力できるようにするだけです。
単純な機能なのですが、色々といじっているうちに厄介な問題に遭遇してしまったのです。
0745デフォルトの名無しさん
2009/10/08(木) 10:39:27ハードウェアを介して情報を読み込むアプリケーションを開発中で、
ハードウェアやドライバ、ライブラリーは他社より提供を受けています。
提供されているファイルはドライバ(xxx.inf、xxx.sys)とライブラリ(hoge.dll、hoge.lib、hoge.h)及び、
ライブラリを用いたサンプルアプリケーション(VC2005のソース)です。
アプリケーション本体は Visual Basic 2008、Visual C++2008でラッパーを作成しようとしています。
hoge.hの中で
#include "..\common\ioctl.h"
の1行があるのですが、ioctl.hというファイルは提供されていません。
サンプルアプリケーションを参照したところ、プリコンパイル済ヘッダーファイルを用いており
ioctl.hどころか hoge.hもソリューションには含まれていませんでした。
(質問)
(1) これは hoge.dllや hoge.libに含まれていて、VC2008のプロジェクトの設定等を編集すれば
参照できたりするものでしょうか?
(2) また、プリコンパイル済ヘッダーファイルから ioctl.hファイルを取り出す手段はありますか?
(3) それとも、単純に提供ファイル不足という認識でよいのでしょうか?
お分かりになる方が居ましたら、教えてください。
(余談)
提供元が「都度の質問は受け付けない」「どうしても必要なら打合せの場を設ける」という態度なので、
なかなか確認ができない状況です。
0746デフォルトの名無しさん
2009/10/08(木) 11:54:450747745
2009/10/08(木) 12:03:30だから単純に提供ファイル不足と断定できれば堂々とクレームつけてて赤っ恥かかせてやろうかと。
逆に知識不足で打合せの場を設けてしまうと、こちらが恥をかくことになってしまうので調査中です。
ただ、いくら調べても「ヘッダーファイルがlibやdllに含まれて無い」という決定的根拠が見つからず…
0748デフォルトの名無しさん
2009/10/08(木) 12:19:380749745
2009/10/08(木) 12:47:20VC初心者が
「libや dllの中には参照可能なヘッダーファイルは含まれていることはありますか?」
って質問をしていると解釈してもらえるとありがたいです。
細々書いたのは後出し情報が無いようにと思った次第。
0750デフォルトの名無しさん
2009/10/08(木) 12:49:31心配するな。
まさかとは思うが、その ioctl.h が↓だったら俺が腹をかかえて笑ってやる。
http://sourcejam.com/jp/linux-kernel-1.0/ioctl_8h-source.html
0751デフォルトの名無しさん
2009/10/08(木) 12:59:58普通にcommonフォルダをくれなかっただけだろ
文句言え
0752デフォルトの名無しさん
2009/10/08(木) 13:05:22その提供元自身も開発能力が足りないんだろうな。恐らくは、ソフトウェアは外注任せなんだろうね。
非常に興味深いのでコンサル引き受けたいくらいだ。
0753デフォルトの名無しさん
2009/10/08(木) 17:32:32ヘッダファイルにinlineを指定して関数を定義した場合とどう違うのでしょうか。
0754デフォルトの名無しさん
2009/10/08(木) 17:37:150755デフォルトの名無しさん
2009/10/08(木) 17:42:31違いがないということなので、自分でインライン関数を使う場合は慣れてる.hに書くことにします。
0756デフォルトの名無しさん
2009/10/08(木) 18:35:25冗談だった
0757デフォルトの名無しさん
2009/10/08(木) 21:10:22開発環境はVC++6.0またはVC++9.0Express Editionです。
Thumbsenseというソフトがありまして、このソフトはSynaptics製のタッチパッドに
手が触れているときにキーボードをショートカット代わりに使えるというものです。
今回作りたいものは、タッチパッドに触れる代わりに特定のキーを押す事によって
Thumbsenseを利用できるようにするソフトウェアです。
そのためにはまず、Synapticsのタッチパッドに手が触れているときに
Synapticsのドライバがシステムにどのようなメッセージを流しているかを
知らなければなりませんが、これが調べても判りません。
何方か詳しい方、調べ方だけでもご教示頂けないでしょうか?
SPY++も試してみたのですが結局良く判りませんでした…。
0758デフォルトの名無しさん
2009/10/08(木) 21:18:49ショーカット起動にThumbsenseとやらを経由する必要性は?
普通にショートカットランチャー作ればいいと思うが。
0759デフォルトの名無しさん
2009/10/09(金) 03:58:00. 1(. 1) HTML 約5,030,000,000件(約5,040,000,000件)-
. 2(. 2) PHP 約2,980,000,000件(約2,970,000,000件)+
. 3(. 3) Java.... 約 832,000,000件(約 835,000,000件)--
. 4(. 4) Forth. 約 322,000,000件(約 323,000,000件)-
. 5(. 5) Ruby.. 約 274,000,000件(約 275,000,000件)-
. 6(. 6) perl..... 約 244,000,000件(約 245,000,000件)-
. 7(. 7) Python... 約 205,000,000件(約 204,000,000件)+
. 8(. 8) pascal... 約 170,000,000件(約 170,000,000件)0
. 9(. 9) Delphi 約 127,000,000件(約 127,000,000件)0
10(10) VisualBasic... 約 121,000,000件(約 121,000,000件)0
11(11) lisp... 約. 26,700,000件(約. 26,700,000件)0
12(12) fortran....... 約. 21,300,000件(約. 21,300,000件)0
13(13) COBOL..... 約. 17,900,000件(約. 18,500,000件)--
14(14) HSP 約. 12,300,000件(約. 12,300,000件)0
15(15) FreeBasic.. 約 6,310,000件(約 6,320,000件)-
16(16) Tcl/Tk...... 約 4,940,000件(約 4,940,000件)0
17(17) QBasic..... 約 4,180,000件(約 4,190,000件)-
18(18) VisualC.... 約 1,340,000件(約 1,360,000件)--
19(19) DarkBASIC . 約 1,330,000件(約 1,320,000件)+
20(20) BasicStudio 約 302,000件(約 304,000件)--
21(21) N88basic...... 約 217,000件(約 215,000件)++
22(22) f-basic....... 約 109,000件(約 109,000件)0
23(23) ActiveBasic 約. 90,100件(約. 89,800件)++
24(24) 99BASIC.... 約. 11,300件(約. 11,500件)--
3Dprogramming 約790,000件(約794,000件)--
2Dprogramming 約. 57,600件(約. 57,400件)++
intel 約726,000,000件(約729,000,000件)--
amd 約352,000,000件(約355,000,000件)--
0760デフォルトの名無しさん
2009/10/09(金) 04:37:56確かにC言語の衰退は避けられない事実です。
- それはどうしてですか
趣味でC言語を体得しようとするプログラマがいないからでしょうね。
- 会社で使ってるのに趣味で使いたくない?
そうでしょうね。
そもそもC言語は生産効率向上には寄与しなかったと言う事実があります。
仕様書を噛み砕くだけの、馬耳東風な感覚では愛着が湧かないでしょう。
- 将来的にCプログラマは切り捨てられる?
すでに旧来のCプログラマは他の言語に移管してると思います。
職業的にもCでは使えない状況ですし。
- 加速するIT化に対応できないと言うことですか。
他の言語群がCを包括的に上回っています。
- BASIC言語の台頭の可能性はあると思いますか。
あるでしょうね。
言語仕様が簡素化されて生産効率が上がれば可能性はあると思います。
- かつてCはBASICより速い実行コードを生成すると自慢していましたが。
それは過去の幻想でしょうね。
0761デフォルトの名無しさん
2009/10/09(金) 05:22:36日韓併合で朝鮮は日本との併合に同意し、戦闘行為を伴わず日本領となりました。
その後、朝鮮に対して莫大な投資が行われ鉄道、工業、農業、教育などが飛躍的に発展しました。
100年前のソウルは道ばたに糞尿が落ちているような不潔な街でした、それは朝鮮を訪れた多くの外国人が記録を残しています。
朝鮮人の寿命は短く、病気で多数の者が死んでいました、一般市民の間には入浴の文化すら無かったのです。
日本支配36年の間に、朝鮮人の寿命は2倍に伸び、人口も2倍に増えました、これは弾圧ですか?
教育においては日本が朝鮮語の辞書を初めて作り、学校を建設し、識字率を向上させました。
日本軍への入隊募集が始まるとすごい倍率で志願者が殺到し、日本軍に入隊できた者は家族の誇りとなりました。
しかし日本が戦争に負けた途端、朝鮮人は態度を変え、日本人に対し略奪、暴行、強姦、殺害などありとあらゆる悪行を働きました。
かつて福岡には朝鮮人の暴行により妊娠した女性を堕胎する施設もありました。
そして時が流れ、1965年の日韓基本条約で日本政府と韓国政府は和解しました。戦後賠償は全て決着したのです。
その後も多くの投資が朝鮮に対してなされましたが、朝鮮人は感謝することもなく
日本の援助を自分の力で発展したかのように自慢をして、
乞食が金持ちにたかるように次々と金や技術を要求しているのです。
このように尊大で恥ずかしい行為が世界のどこにあるでしょうか?
それでも日本に対して謝罪と賠償を要求する朝鮮人の感覚が信じられないです。
日本は、朝鮮に対して、一切やましいことはなく、すべての責任は果たしました。
そして、日本は日本国民のものですから、外国人のあなたがでかい顔をする場所ではないとハッキリ言っておきます。
朝鮮人が疎まれているのは、朝鮮人自身の行為によるものです。
日本政府が提供する行政サービスを全て利用したいなら帰化しなさい、在日朝鮮人は帰化基準が緩いです。
日本の社会が気に入らないなら朝鮮半島に帰りなさい、あなたの国籍は朝鮮なのですから。
0762デフォルトの名無しさん
2009/10/09(金) 06:18:58ちょっとまてよw
cってどうやって検索かけるんだよw
日本語なら「C言語」でいけるがw
0763デフォルトの名無しさん
2009/10/09(金) 06:19:240764デフォルトの名無しさん
2009/10/09(金) 07:39:37強引に.netにリニューアルする仕事増やしたりするみたいだね
なるほどと思った
サポートしてる側だからなんとかして対応っていうんじゃなくて
いま、できないのを理由にして切っちゃうんだね
0765757
2009/10/10(土) 02:14:20Thumbsenseはただのランチャではなく、編集も容易に多様な機能を使用できるからです。
たとえば、以下のような機能を利用可能です。作れない事はないのですが、
かなり骨が折れる上、ソフトを作ったところでThumbsenseと同じ設定を維持する事は面倒なので…
・予め設定したファイルやプログラムの一発起動
・アクティブになっているウィンドウを移動したり(つまりカーソルを所定の位置に併せて掴まなくても
キー操作をしただけで掴んでいる状態になり移動させる事ができる)、
・ウィンドウの最大化・最小化
・アクティブとなっているウィンドウを消去する
・ページの戻る/進む
0766デフォルトの名無しさん
2009/10/10(土) 02:48:47ThumbsenseのHPにBBSがあるんだから、そこで訊きな。
0767デフォルトの名無しさん
2009/10/10(土) 09:36:19ところがそうではない情勢なんですね。
- 具体的にはどういった情勢なんですか。
人的負荷(Human-overhead)の問題を回避できない背景があります。
- 分かりやすく解説して下さい。
ヒューマンオーバーヘッド(以下H.O.H.)の問題は、1つのプログラムを作成する場合に、1つの言語やプラットホーム
の知識だけではなく、複数に跨る言語やプラットホームの知識を必要とする場合によく発生します。
- それがDarkBASICとどう関係するんですか。
DarkBASICはH.O.H.の問題を回避できるようにAPIやハードウェアの個体差を窺いながらプログラミングをする必要が
ありません。
もちろん、すべてではありませんが(笑)
- それはどのような場合に効力を発揮するのでしょうか。
3Dプログラミングにおいて抜群の生産効率を発揮するでしょうね。
- それはCやHSPでもAPIや外部のDLLを使えば簡単にできるでしょう?
確かにそのとおりです、しかしH.O.H.の問題は解決できません。
- 生産効率向上には何が必要なのですか。
体系的に簡素化された言語仕様、これに尽きますね。
0768デフォルトの名無しさん
2009/10/10(土) 19:37:47体系的に簡素化された言語仕様、これに尽きますね。
- 人的負荷(ヒューマンオーバーヘッド(以下H.O.H.))の問題の解決にあたっては、言語仕様の簡素化や、APIを経由した複雑な
プログラミングの回避が必要になりますね。
30年前のパソコンブームの火付け役になったのがBASICですが、CPUやハードウェアの違いを乗り越えて爆発的な普及力を見せ
付けました。
BASICの学習に必要なのは、中学生程度の学力と、紙切れ1枚程度の簡単なマニュアルだけで覚えられると言う特徴があります。
- それらの背景には現行の開発システムには存在しないインタープリタ、フルスクリーンエディト、ダイレクト実行モードなど、小回
りの利く機能がありましたね。
現在の開発システムの周辺環境は大規模アプリケーション作成向けが主流であって、セルフフィードバックの効果の高いインター
プリタ、フルスクリーンエディト、ダイレクト実行モードなどの機能は置き去りにされています。
これは大学や企業の教育機関が、実際に機能している間は問題ありませんが、それらが機能しなくなると開発システムの根幹は
緩やかに崩壊していきます。
なぜなら、ユーザーである学生や研究開発要員が、セルフフィードバックの機会、つまりは自習の機会を失ってしまうからです。
- DarkBASICにはダイレクト実行モードはありませんね。
デバッグモードはありますが、ダイレクト実行モードはありません。
- セルフフィードバック(自己帰還)と、大学や企業の教育機関、どちらに信頼を置くべきですか。
どちらにも信頼を置くべきですが、生産効率だけではなく、将来への展望に備えた自己啓発が必要不可欠であると思います。
0769デフォルトの名無しさん
2009/10/10(土) 19:44:410770デフォルトの名無しさん
2009/10/11(日) 10:09:40char buff[4096]
for(int i=0;i<500;i++) {
sprintf_s(buff, sizeof(buff), "%s%d", buff, data[i]);
}
上のようにすると、この処理そのものを何百回と呼び出すので負荷が高そうに思え、forを使わず
sprintf_s(buff, sizeof(buff), "%s%d%d ・・・500回分・・・ ", buff, data[0], data[1], data[2], ・・・500回分・・・ );
こう手書きしているのですが、
もっと賢いコードの書き方は無いでしょうか?
0771デフォルトの名無しさん
2009/10/11(日) 11:08:34とりあえずsprintfやめてstrcat風なもん使うか作るかしたら?
それでループすりゃいいべ。安全チェックも事前にやってしまうのがいいかも。
0772デフォルトの名無しさん
2009/10/11(日) 11:10:21文字位置カウントしてつないでは文字位置更新でループの中でやれば関数コールもいらんな。
0773デフォルトの名無しさん
2009/10/11(日) 11:22:42こういうbuffの使い方はやめたほうがいいんじゃね?
0774デフォルトの名無しさん
2009/10/11(日) 12:48:14どうしてでしょうか。
簡単で手軽、誰にでも学習の機会があることでしょうね。
CやHSPだとこうはいきません。
CやHSPだとAPIのノウハウが必要になりますし、それは大きな障壁となります。
0775デフォルトの名無しさん
2009/10/11(日) 13:11:50今の私にはちょっとまだやり方が具体的にまでは想像が出来ませんが、
最後尾に継ぎ足す仕組みを自作すればループにしても負担が増える訳ではないという事なんですね。
ご助言ありがとうございます。
>>773
確かに余裕を持たせていたとしても、sizeofしたものを継ぎ足すのは不味そうですね。注意します。
0776デフォルトの名無しさん
2009/10/11(日) 13:18:32確かにそのとおりです、しかしH.O.H.の問題は解決できません。
0777デフォルトの名無しさん
2009/10/12(月) 09:55:53大量のフラグ群を
char型のビットフラグで管理するか、変数名的にミスを起こし難いであろうboolで扱うかで悩んでいるのですが、
bool型の変数が1byte未満で確保される事なんて、ありえるでしょうか?
コンパイラはVC++2008ExpressEditionなのですが。
0778デフォルトの名無しさん
2009/10/12(月) 10:10:18下記の事をするにはどう書けばいいですか
int val[4];//各要素には0〜2が入る
int result;
<省略>
//↓ここをインラインアセンブラで書き換えたい
result = (((val[0]*3)+val[1])*3+val[2])*3+val[3];
0779デフォルトの名無しさん
2009/10/12(月) 10:14:55でかけるよ
0780デフォルトの名無しさん
2009/10/12(月) 10:19:08早くなる要素ないぞ
0781デフォルトの名無しさん
2009/10/12(月) 12:47:210782デフォルトの名無しさん
2009/10/12(月) 13:04:11展開すると
val0*27 + val1*9 + val2*3 + val3
dotがあれば一発じゃね?
0783質問
2009/10/12(月) 17:44:52ッ手思い始めた頃です^^;;;;
何を準備すればいいのか分かりません。
できれば無料の奴で!
18歳です
0784デフォルトの名無しさん
2009/10/12(月) 17:49:150785デフォルトの名無しさん
2009/10/12(月) 17:49:58VC++のスレで聞くならVC++用意しろよ
0786デフォルトの名無しさん
2009/10/12(月) 17:51:330787デフォルトの名無しさん
2009/10/12(月) 19:37:46STLを使って良いならstd::stringを使って
char buff[10];
std::string str;
for (int i = 0; i < 500;i++) {
sprintf_s(buff,sizeof(buff),"%d", data[i]);
str += buff;
}
という風に書けるし、
printfやsprintf_sは成功すると出力した文字数('\0'を覗く)を返すから
それを利用してbuffのポインタの位置を移動するというやり方もできるよ。
>>775
boolはVC++では1byteだし、bool b[32]は32byteだけど、
STLのvectorというサイズが変更できる配列では
bool型は特別でboolを1個1bitで管理してるとか。
0789788
2009/10/12(月) 19:42:53名前は787でした。
何やってるんだ俺。
0790デフォルトの名無しさん
2009/10/12(月) 19:43:25マルチスレッドデバッグ(/MTd)のモードでコンパイルすると、プログラム実行時に
MSVCR80D.DLLが見つからないと言われ実行することができません。
VC++の入っていないマシン上でこの問題が起きるのであれば分かるのですが
コンパイルを行ったマシン上でも実行することができません。
Releaseモードでコンパイルした場合は正常に動作します。
色々設定をいじってしまったプロジェクトなので原因が分かりませんでした。
原因として何が考えられるでしょうか。
よろしくお願いします。
0791デフォルトの名無しさん
2009/10/12(月) 21:27:49自分でMSVCR80D.DLL探して見たのか?
ReleaseモードはMSVCR80D.DLLを使わないから関係ないぞ
0792デフォルトの名無しさん
2009/10/12(月) 21:37:050793デフォルトの名無しさん
2009/10/12(月) 21:53:30vector・・可変長配列とかなんとかの呼び名を聞いた覚えがありますが、可能性が有るんですね。
確認できる方法を探ってみようかと思います。ありがとうございます。
0794デフォルトの名無しさん
2009/10/12(月) 21:54:040795デフォルトの名無しさん
2009/10/12(月) 22:25:110796デフォルトの名無しさん
2009/10/12(月) 23:13:27CRTを要求するマニフェストの記述がうまくいっていないみたいで、
標準C関係のヘッダを余計にインクルードしたり、プロジェクトのプロパティの
デバッグ時の環境変数にPATH追加するとかで動くようになった気がする。
0797デフォルトの名無しさん
2009/10/12(月) 23:18:010798デフォルトの名無しさん
2009/10/12(月) 23:44:49あれのソート順を変更したいんですが設定できるでしょうか?
使ってるのはVC++2008EEです
0799デフォルトの名無しさん
2009/10/12(月) 23:58:21そういう設定は見あたらないな。使用頻度の高い項目だけを表示するというオプションはあるが。
0800デフォルトの名無しさん
2009/10/13(火) 09:04:510801デフォルトの名無しさん
2009/10/13(火) 11:34:59買ってきた参考書についてるソースが2005と2003用しかなくて困ってます。
0802デフォルトの名無しさん
2009/10/13(火) 11:38:020803デフォルトの名無しさん
2009/10/13(火) 11:47:12なんで質問するんですか?
0804デフォルトの名無しさん
2009/10/13(火) 11:48:18以前他のプログラムで2005→2008をやりましたが、
2008用に微妙にソースフォルダ内が変更されたので、参考書通りに学ぶには適さないかなと思いました。
0805デフォルトの名無しさん
2009/10/13(火) 11:49:310806デフォルトの名無しさん
2009/10/13(火) 12:03:55その程度といわれても、2005→2008で具体的に何がどう変わるのか私は理解していませんし
C++ではありませんが、些細なプログラムのバージョン違いで苦労した経験があるので
参考書に記してあるバージョンに合わせるのがベターかなと考えました。
>>802さんからほとんどそのまま持っていけるとの回答をいただいたので
とりあえず2008で取りこんでみます。
0807デフォルトの名無しさん
2009/10/13(火) 12:22:40誰かが作った色設定ファイルで一発チェンジとか出来ないんだろうか
ググッても設定ダウンロードサイトみたいのがでてこないってことはそういうのはないのかな?
0808デフォルトの名無しさん
2009/10/13(火) 13:44:500809デフォルトの名無しさん
2009/10/13(火) 16:55:430810デフォルトの名無しさん
2009/10/14(水) 18:57:58そういう問題を解決してプログラミングを覚えて行くんだよ
0811デフォルトの名無しさん
2009/10/14(水) 23:22:03俺もそう思う。
でも、しょっぱなそんなところでつまづきたくないという気持ちもわかるw
0812デフォルトの名無しさん
2009/10/15(木) 08:55:56あまりにも違いすぎてびっくりする。っていうか、2008の方がコマンド減ってるんだよね。
0813デフォルトの名無しさん
2009/10/15(木) 17:54:23他のcppファイルの、クラス外側(#include等の真下。ヘッダ同等の領域?)で宣言〜内部クラスで実体化したデータ用構造体を
別のcppファイルからそのままの名前(タイピングの手間だけの都合)で利用できるようにするには
・extern ・クラスのメンバ ・名前空間
のどれを使うのが定番なのでしょうか?
今はexternしか使えていないので、後ろ2つのどちらの使い方を勉強し直した方が早いのか
を教えて下さると幸いです。
0814デフォルトの名無しさん
2009/10/15(木) 18:22:27今のコードと書きたいコード書いてくんない?
0815デフォルトの名無しさん
2009/10/15(木) 18:25:30全部クラスにするべき
0816デフォルトの名無しさん
2009/10/15(木) 18:48:58クラスの static なメンバ変数にするという手もある。これなら、クラスのヘッダさえインクルードすれば、どこからでもアクセスできる。
むろん、どこかに実体は必要だが。
class hoge
{
public:
static int nHoge;
}
#define g_Hoge hoge::nHoge;
0817デフォルトの名無しさん
2009/10/15(木) 19:04:50{
static T value;
};
template <class T> T hoge<T>::value = T();
これってどういう挙動をするの?
翻訳単位ごとにひとつ?
0818デフォルトの名無しさん
2009/10/15(木) 19:10:41その宣言って有効なの? valueの宣言時にTの定義が見えてないと、実質コンパイルできないと思うんだけど
0819デフォルトの名無しさん
2009/10/15(木) 19:26:200820デフォルトの名無しさん
2009/10/15(木) 20:25:44template<class T> struct C {
static T size;
C () { size++; }
};
template <class T> T C<T>::size = 0;
みたいなクラスを宣言して
C<int> と C<ungned> をいくつか作って
sizeを覗いてみると分かるかもしれない。
0821デフォルトの名無しさん
2009/10/15(木) 20:38:42defineという手もありましたね。ありがとうございます。
クラスでやってみます。
0822デフォルトの名無しさん
2009/10/16(金) 00:41:570823デフォルトの名無しさん
2009/10/16(金) 01:28:59あとインラインアセンブラはx64コンパイラでは使えなくなってるから、できるなら使わない方がいいよ。
0824デフォルトの名無しさん
2009/10/16(金) 01:31:300825デフォルトの名無しさん
2009/10/16(金) 05:39:40確かインラインアセンブラの部分も最適化の対象となるとなるんだよな。
0826デフォルトの名無しさん
2009/10/16(金) 09:55:58日本語でOK。
>>822
私の経験では、インラインアセンブラに渡すパラメータが最適化の影響でメモリになったりレジスタになったりした。
0827デフォルトの名無しさん
2009/10/16(金) 19:07:09GCCの話だったわ。
悪りぃ。
GNUコンパイラコレクション - Wikipedia
http://ja.wikipedia.org/wiki/GNU%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%A9%E3%82%B3%E3%83%AC%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3
> 言語機能の拡張のほかに、標準外機能としてasm文によるインラインアセンブラの機能はユニークである。
> ただし、GCCにおいてはこのインラインアセンブラ機能を利用して記述したコードに対しても最適化が行われる
> (プログラマが意図してアセンブリ言語を用いて書いたとしても、その通りのコードが出力されない可能性がある)
> 点に注意が必要である。
0828デフォルトの名無しさん
2009/10/16(金) 19:12:17c/c++には関数内で処理を特定の行に飛ばすjump機能は存在しないのでしょうか?
webプログラミング言語にはそこそこ有る気がするのですが・・。
スコープの問題などが有るからそもそも存在しなかったりするのでしょうか?
何か擬似的に再現する方法が有ればご助言頂けると幸いです。
0829デフォルトの名無しさん
2009/10/16(金) 19:13:08goto文があるじゃん。
そのレベルならC言語スレいけよ。
0830デフォルトの名無しさん
2009/10/16(金) 20:02:20あー・・エラー処理に使ってるgotoってソレだったんですね。
失礼しました; ありがとうございました;
0831829
2009/10/16(金) 20:45:56もう居ないかもしれないけど一応。
oto文 - Wikipedia
http://ja.wikipedia.org/wiki/Goto%E6%96%87
0832デフォルトの名無しさん
2009/10/16(金) 21:26:290833デフォルトの名無しさん
2009/10/16(金) 21:40:13>goto文はむやみに使ってはいけないと言う暗黙の約束
それであまり見かけないんですね。
乱用はしないよう注意します。ご忠告感謝。
0834デフォルトの名無しさん
2009/10/16(金) 22:46:46さらにいうなら、
gotoを使わなければ記述できないことはC/C++ではない。
gotoを使った方が綺麗ということはあるかもしれないが
「めっっっったに無い」。
if
while
do-while
for
switch
のどれかで書いた方が綺麗になる。
0835デフォルトの名無しさん
2009/10/16(金) 23:19:20どもです(´・ω・`)
0836デフォルトの名無しさん
2009/10/17(土) 01:58:57いや、むしろgoto使わないと嫌な目にあう場面がばっちり1場面だけある
if(!initXXX1()){
fclose(fp1);
fclose(fp2);
return FALSE;
}
if(!initXXX2()){
fclose(fp1);
fclose(fp2);
delete XXX1;
return FALSE;
}
・
・
・
こんな・・・
0837デフォルトの名無しさん
2009/10/17(土) 03:34:21ローカル変数で宣言して
デストラクタに処理させればOK
0838デフォルトの名無しさん
2009/10/17(土) 03:38:140839デフォルトの名無しさん
2009/10/17(土) 04:08:41無理やり回避する必要もないと思う
ただ、やっぱり長いのがダメであって短ければgoto使っても使わなくても問題なく読めるしね
0840デフォルトの名無しさん
2009/10/17(土) 09:03:39正直目障りでうっとおしい。
0841デフォルトの名無しさん
2009/10/17(土) 09:29:20じゃああぼんしろよwwwwww
0842デフォルトの名無しさん
2009/10/17(土) 15:56:32外部デバイスからのCTSとDSRをGetCommModemStatusで確認しようとしているんですが、
確認のメッセージボックスが作動しません。
コールバックで呼び出しているので「GetCommModemStatus成功」のメッセージボックスは
定期的にポップアップするんですが、それ以外のメッセージボックスはウンともスンとも…。
どなたか下記コード見てアドバイスいただけますか?
hdCom = CreateFile("COM2", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if( hdCom == INVALID_HANDLE_VALUE )
AfxMessageBox("createFileしっぱい");//開かない
■再帰部分----------------------------------------------------------
DWORD state;
BOOL fSuccess = GetCommModemStatus(hdCom, &state);//hdComは上で作ったやつ
if( !fSuccess ){
AfxMessageBox("GetCommModemStatusしっぱい"); //開かない
} else {
AfxMessageBox("GetCommModemStatus成功"); //定期的にオープン
if(state & MS_CTS_ON)
AfxMessageBox("MS_CTS_ON"); //開かない
if(state & MS_DSR_ON)
AfxMessageBox("MS_DSR_ON"); //開かない
}
}
0843デフォルトの名無しさん
2009/10/17(土) 16:04:51CTSとかDTRとか変化しない方が多いから
0844デフォルトの名無しさん
2009/10/17(土) 17:35:27シリアルチェッカーってのがよくわからなかったので
検索してシリアルチェッカーソフトウェアを起動してみたら
COM2じゃなくてCOM1を利用してたみたいです、
気づけて本当によかったです、ありがとうございます!
0845s
2009/10/17(土) 23:27:29[email protected]までメールしてください
お礼はしますので
お礼いらないって人もメールしてください
0846デフォルトの名無しさん
2009/10/17(土) 23:31:190847デフォルトの名無しさん
2009/10/17(土) 23:39:03経験者募集なのに、
未経験者歓迎ってどういうことですか!><
0848デフォルトの名無しさん
2009/10/18(日) 00:38:080849デフォルトの名無しさん
2009/10/18(日) 00:53:17double a = 24455115.0;
double b = 0.234;
double c = b + a;
でcが24455115.2500になってしまう現象で困っています。
debugモードでは正しい値になるのですが、Releaseだと上記のような結果になります。
ちなみにbが
0.123では24455115.000に
0.450では24455115.500になってしまいます。
どうも小数部が0.25の倍数になってしまう様なのです。
この部分だけ抜き出したテストプログラムではReleaseでも期待する値が返ってきたので、
コンパイルオプションを見比べてみても違いが無いようです。
こんな事は初めてなのですが、原因としてどのような事が考えられるか教えて頂けないでしょうか?
よろしくお願いします。
0850デフォルトの名無しさん
2009/10/18(日) 01:01:230851デフォルトの名無しさん
2009/10/18(日) 01:10:080852デフォルトの名無しさん
2009/10/18(日) 01:14:05double a = 24455115.0;
double b = 0.234;
double c = b + a;
CString s;
s.Format(L"%lf", c);
vs2008で↑で確認したら、debugでもreleseでも、同じ結果だった。
24455115.234
0853デフォルトの名無しさん
2009/10/18(日) 01:17:54もちろん2005でも普通は正しい値になるんですが、
今作っている物だけ不思議な事になってます。
こう言った事が起こりうる原因が全く分からないのですが、何か考えられる事が無いでしょうか?
0854デフォルトの名無しさん
2009/10/18(日) 01:28:54debugとreleaseとで、アセンブラのコードが違ってるか確認してみたら?
0855デフォルトの名無しさん
2009/10/18(日) 07:04:28アセンブラ確認してコードが同じだったので再度実行したら、Debugも同じ状況に
なってました。
で、もう一度調べていくと使用しているライブラリの中で単精度に強制的に
変更されてました・・・。
倍精度を使用するように変更する事で期待する値になりました。
お騒がせしてすいませんでした。お答え下さった方ありがとう御座いました。
0856デフォルトの名無しさん
2009/10/18(日) 13:45:22・やりたいこと
VisualStudio 6 世代に作られたあるアプリケーションAから呼び出される、
ユーザー拡張用のDLLを作りたい。
・開発ツール
VS2008C++ Express
自分はC→VB→C#しか経験が無いので、見よう見まねでWin32Dllを作成してみたのですが
アプリAからの呼び出しがうまくいかなく、手詰まり状態に落ちいてしまっています。
すいませんC++素人なんで、何から確認するべきかもわかっていません。
どなたかアドバイスを頂けないでしょうか?
ちなみにやりたいのは以下のサンプル実行です。
http://www.necel.com/nesdis/image/U16907JJ1V0UM00.pdf
0857デフォルトの名無しさん
2009/10/18(日) 14:31:39extern "C" していないとか。
0858デフォルトの名無しさん
2009/10/18(日) 16:11:29拡張子 .c でやってる?
.cppなら>>857 のようにCリンケージの宣言しとかないと
0859856
2009/10/18(日) 17:05:41レス有難うございます。
extern "C" {
}宣言ですよね。
C言語のexern宣言とごっちゃになりましたが、見ようみまねで、
意味も解らず、ビルドを通すためやっていました。
C言語として呼ばれる場合は、やはりextern "C"宣言が必要なんですね。
__stdcall/__cdeclの違いも良くわかりませんが、どっちが一般的/妥当なのかも
解らないので、両方で試してみて玉砕しているところです
参考になるかわかりませんが、以下dumpbin /exportsの結果です。
File Type: DLL
Section contains the following exports for test2.dll
00000000 characteristics
4ADACAC4 time date stamp Sun Oct 18 16:59:00 2009
0.00 version
1 ordinal base
2 number of functions
2 number of names
ordinal hint RVA name
2 0 00001000 DllMain = _DllMain@12
1 1 00001040 MakeUserModel = _MakeUserModel
Summary
1000 .data
2000 .rdata
1000 .reloc
1000 .rsrc
3000 .text
0860デフォルトの名無しさん
2009/10/18(日) 17:12:56>__stdcall/__cdeclの違いも良くわかりませんが、どっちが一般的/妥当なのかも
いやいやいや、呼んでる側に依存するだろう。
呼んでる側はバイナリのみで変更できない状況で、現在動作してるDLLと差し替え?
動作確認はどうやってて、ダメなのはどうやって知ったの?
0861デフォルトの名無しさん
2009/10/18(日) 17:19:07EXPORT する関数は関数の頭に WINAPI ( = CALLBACK)をつける。
つまり __stdcall にする。
0862856
2009/10/18(日) 17:36:02レス有難うございます。
Aに付属するcfgファイルを編集して、
ユーザー作成のDLLのファイルパスを指定しdllを読み込ませてます。
A起動時時に、MakeUserModelを呼ぶはずんですが、
以下のエラーメッセージが出てきてしまっています。
「E10181: ユーザ・モデル・ファイルをオープンできません。
1) 指定したユーザ・モデル・ファイルをオープンすることがでないか,MakeUserModel関数が存在しません。
ファイルの存在,およびファイルの属性とMakeUserModel関数の存在を確認してください。」
0863856
2009/10/18(日) 17:42:11VS2008c++の場合、デフォルトでは__cdeclのようだったので、そのままやってみて、
もしやと思い、861さまのおっしゃるように __stdcallに変えてやってみても駄目でした。
(よくわかっていないので、トンでもないことをやらかしているのかも知れませんが)
___stdcall/__cdeclに関してはマニアルに特に記述はなかったのですが、
あるとすれば、以下の項?ぐらいかと思います。
--------------------------------------------
1.2 インタフェースの方式
SM plus ユーザ・オープン・インタフェースでは,次に示すインタフェース方式を取っています。
1.2.1 C 言語インタフェース
SM plus ユーザ・オープン・インタフェースは,C 言語のAPI 関数注1 セットで構成されています。
このため,ユーザ・モデルのプログラミングはC 言語で行い,ターゲット・システムのシミュレーション環境
を構築してください。
注1 Application Program Interface 関数の略
http://www.necel.com/nesdis/image/U16907JJ1V0UM00.pdf
P.15より
0864856
2009/10/18(日) 18:17:22一度整理しておきたいのですが、以下認識でよろしいのでしょうか?
a) Win32DLLにてExportする関数は__stdcall をつけるのが一般的
b) 公開関数がC言語から呼ばれることを想定している場合、
Cリンケージの宣言にて全体をくくるか 拡張子cにてビルドをする必要がある
0865デフォルトの名無しさん
2009/10/18(日) 18:46:02extern "C" {
#endif
#include "suo.h"
#ifdef __cplusplus
}
#endif
0866デフォルトの名無しさん
2009/10/19(月) 10:13:16だから呼び出し規約は片方がリコンパイル不可能ならそっちに合わせるしかないって。
試しにMakeUserModelを呼ぶプログラム作ってもとからあるDLL呼んでみれば
0867デフォルトの名無しさん
2009/10/19(月) 10:14:29それで既存のDLL、EXEや自分で作ったDLL、EXEを調べてみて
0868デフォルトの名無しさん
2009/10/19(月) 16:09:10Windowsプログラムで画面右上の「×」で閉じると
Alt+F4や特定キーから呼び出すPostQuitMessage(0)を呼び出して終わった時と違ってアクセス違反が出てしまうのですが
画面右上の「×」って何が違うんでしょうか?
またこの「×」の隠し方や、挙動の記述(変更)方法が有ればヒント(関数名など)を教えて頂けると嬉しいです。
0869デフォルトの名無しさん
2009/10/19(月) 16:30:17変わらないと思うけど。
デバッガ使うかspy++で調べるとか。
通常消し方は、SYSMENU取得してSC_CLOSE消せば消える
At+F4も効かなくなるけど。
0870デフォルトの名無しさん
2009/10/19(月) 17:21:23バグじゃなかったらウイルスか何かにやられたと思った方がいい。
0871デフォルトの名無しさん
2009/10/19(月) 17:36:04>Alt+F4や特定キーから呼び出すPostQuitMessage(0)を呼び出して終わった時
まさか、いきなりPostQuitMessage(0)しているけじゃあるまいなw
0872デフォルトの名無しさん
2009/10/19(月) 17:39:04//コンパイルエラーでぶちころすための関数
*void operator new(size_t t){}
ん?size_tってなんだ?
定義へ移動・・・と。
「シンボル'size_t'は宣言されていません」
うそん。
調べてみたら、<cstddef>ヘッダで宣言されてるものらしいじゃないですか。
なんで定義へ移動できないの?
こんな事が多々あるんですが、なんで定義へ移動できないんでしょうか?
0873デフォルトの名無しさん
2009/10/19(月) 17:51:120874デフォルトの名無しさん
2009/10/19(月) 18:22:51あーなんかそんな気がしないでもないな。
WM_SYSCOMMAND → WM_CLOSE → WM_DESTROY → PostQuitMessage(0)
この順番になるのだけど、WM_CLOSEの時点でDestroyWindow呼ばないでいきなり
PostQuitで抜けたら、クローズボタンだと押したのを戻す描画をしようとしてアクセス違反が出るんじゃないかな
0875デフォルトの名無しさん
2009/10/19(月) 18:34:370876デフォルトの名無しさん
2009/10/19(月) 18:41:59おおかた、他人の家に土足であがりこんで (=無効になったポインタにアクセスしようとして) 叱られているのだろう。
0877デフォルトの名無しさん
2009/10/19(月) 19:18:32>バグじゃなかったらウイルスか何かにやられたと思った方がいい。
IE使ってるとブルーバックしたり、ネットがやけに重くなったりするし、ありそうです;
>WM_SYSCOMMAND → WM_CLOSE → WM_DESTROY → PostQuitMessage(0)
そういう順序なんですね。ここらへん、勉強しないとマズそうです。
>無効になったポインタにアクセスしようとして 叱られているのだろう。
追記している内にこの症状が出なくなりましたが、
なんか不安なので、上の勉強と共にいずれOSアンインスコもしてみようと思います。
ありがとうございました。
0878デフォルトの名無しさん
2009/10/19(月) 21:17:30ですが、未解決の外部シンボル〜 エラーがいくつか出たためプロトタイプ宣言をしたところ
error C2556: 'double *trackballRotation(void)' : オーバーロード関数は、'double trackballRotation(void)' と戻り値の型のみが異なります。
とメッセージがでてしまいます。
double trackballRotation(void);とプロトタイプ宣言をしているため出たエラーだと思い、
double +trackballRotation(void);や
double* trackballRotation(void);などと書き換えてみたのですが同様のメッセージが表示されて動きませんでした。
どのように直せばよいのか見当もつきません。
0879デフォルトの名無しさん
2009/10/19(月) 21:38:360880デフォルトの名無しさん
2009/10/19(月) 22:37:43ありがとうございます。
そのまま開くだけでは動かなかったため、自分で新しくプロジェクトをつくったことが原因でした。
main.cppをそのままvisual c++で開いて、F5キーですぐ動かせればよいのですが、そのような方法は知りません。
0881デフォルトの名無しさん
2009/10/19(月) 23:15:05そりゃまあ、C/C++ はコマンドラインインタプリタじゃないんだから・・・。
0882デフォルトの名無しさん
2009/10/20(火) 00:16:240883デフォルトの名無しさん
2009/10/20(火) 02:51:31インクルードガードがうまくいきません
具体的には
/*main.cpp*/
#include <stdio.h>
#include "header.h"
int main(void)
{
printf("x = %d\n", x);
return 0;
}
/* func.cpp */
#include "header.h"
void func(void){ x = 5;}
/* header.h*/
#ifndef __HEADER_H__
#define __HEADER_H__
int x;
void func(void);
#endif
この状態でxについてのエラーLNK2005と1169が出てしまいます
色々とぐぐったりして試行してみましたが解決には至らなかったため、
御教授頂ければと思います
0884デフォルトの名無しさん
2009/10/20(火) 03:30:23/*main.cpp*/
#include <stdio.h>
#include "header.h"
int x;
int main(void)
{
printf("x = %d\n", x);
return 0;
}
/* func.cpp */
#include "header.h"
void func(void){ x = 5;}
/* header.h*/
#pragma once
extern int x;
void func(void);
0885デフォルトの名無しさん
2009/10/20(火) 03:30:49#include "header.h"
int x = 0; // 初期化
void func(void){ x = 5;}
/* header.h*/
#ifndef __HEADER_H__
#define __HEADER_H__
extern int x; // extern が必要
void func(void);
#endif
0886デフォルトの名無しさん
2009/10/20(火) 07:18:430887デフォルトの名無しさん
2009/10/20(火) 08:16:480888デフォルトの名無しさん
2009/10/20(火) 10:00:590889デフォルトの名無しさん
2009/10/20(火) 15:29:32分かりました。どうもありがとうございます
実をいうと私は一度defineで定義したものは他のcppファイルをコンパイルする際にも
引き継がれた状態になっているという大きな勘違いをしていたため、
インクルードガードの用途さえ思い違いをしていた状態だったようです
しかし考えてもみればそれぞれのcppファイルを別個にコンパイルして
それらをリンカが繋ぐのですから当然のことですね・・・
なんでそれに気付かなかったんだろう
何はともあれ助かりました
どうでもいいですが私の書いたコード、mainでfunc使い忘れてますね・・・
0890デフォルトの名無しさん
2009/10/20(火) 20:07:10まあな、
#defineは翻訳単位でのみ有効
ってことを覚えておきましょう。
0891デフォルトの名無しさん
2009/10/21(水) 11:01:47例えば MessageBoxA と入力して、( 左かっこ を入力すると下にヒントが出ますが
MessageBox では出ないのですが仕様でしょうか?
0892デフォルトの名無しさん
2009/10/21(水) 11:52:25それとも買い替えするべきでしょうか?
0893デフォルトの名無しさん
2009/10/21(水) 11:54:32・いえ、先ずは2008ExpressEditionを試してみてはどうでしょう。
0894デフォルトの名無しさん
2009/10/21(水) 12:23:57でるよ
0895デフォルトの名無しさん
2009/10/21(水) 12:32:36ありがとう
今やったら出た(???
でも CreateWindowA は出るのに CreateWindow は出ない?
0896デフォルトの名無しさん
2009/10/21(水) 13:12:400897デフォルトの名無しさん
2009/10/21(水) 13:13:01#define CreateWindow CreateWindowA
のように定義されてる。
だから CreateWindow と入力してから少し経って
引数を取る CreateWindowA と解釈されて
CreateWindowAに対応する補完のヒントが出たりするというわけ。
(もしかしたら出ないかもしれない)
MessageBox や CreateDirectory でも同じ。
0899デフォルトの名無しさん
2009/10/21(水) 22:34:42しばらく次のVCが出るまで待った方が良いでしょうか?
0900デフォルトの名無しさん
2009/10/21(水) 22:36:550901デフォルトの名無しさん
2009/10/21(水) 22:39:25ビミョーな時期だな。
0902デフォルトの名無しさん
2009/10/21(水) 22:43:560903デフォルトの名無しさん
2009/10/21(水) 23:16:01int main(void)
{
double num;
printf("小数を入力してください。\n");
scanf("%f",&num);
printf("%fが入力されました。\n",num);
return 0;
}
この簡単なC言語をVC++で実行すると入力した小数を正しく返してくれません
Vi環境では正しく返してくれたのですがVC++は使って日が浅いためなにか問題
でもありますでしょうか?ご教授よろしくお願いいたします
0904デフォルトの名無しさん
2009/10/21(水) 23:19:20printf,scanfでの%fの扱い
http://www.ei.fukui-nct.ac.jp/~t-saitoh/edu/ProgAppl/pa-faq-float.html
0905デフォルトの名無しさん
2009/10/21(水) 23:43:550906デフォルトの名無しさん
2009/10/22(木) 02:59:40scanf 使うな
sscanf 使えと
あれほど(ry
0907デフォルトの名無しさん
2009/10/22(木) 09:52:360908デフォルトの名無しさん
2009/10/22(木) 10:33:470909デフォルトの名無しさん
2009/10/22(木) 11:33:24日本だけの事情?
0910デフォルトの名無しさん
2009/10/22(木) 11:59:470911デフォルトの名無しさん
2009/10/22(木) 15:56:220912デフォルトの名無しさん
2009/10/22(木) 23:01:190913デフォルトの名無しさん
2009/10/22(木) 23:24:540914デフォルトの名無しさん
2009/10/22(木) 23:27:060915デフォルトの名無しさん
2009/10/23(金) 00:36:13出来上がるのは「.exe.embed.manifest」の様なファイル達です。
どうすれば.exeが出力される様になるのでしょうか?
VC++2008ExpressEditon
プロジェクトの種類:Win32プロジェクト
アプリケーションの種類:Windowsアプリケーション
0916デフォルトの名無しさん
2009/10/23(金) 00:46:020917デフォルトの名無しさん
2009/10/23(金) 00:49:49通常は何もしなくても作成される。
出力ウィンドウにエラーメッセージが出てないか?
0918デフォルトの名無しさん
2009/10/23(金) 01:11:35エラーも警告もゼロです。
しかし、リビルド時に
1>LINK : 前回のインクリメンタル リンクで C:\Users\xxx\Debug\Sound2.exe が見つからなかったか、ビルドされませんでした。フル リンクを行います。
というログが残っています。
>>916
指摘の通り、そこにありました。
ソリューションのディレクトリに出力されるのがデフォルトなんですか。
変更したいのですが、変更すべき項目が見当たりません。
リンカ>全般>出力ファイルにはプロジェクトディレクトリ\xxx.exe
となっているのですが。
0919918
2009/10/23(金) 01:16:11リンカ>全般>出力ファイルがこうなっていたので、問題ないと思っていたのですが、
$(OutDir)\$(ProjectName).exe
C:\〜フルパスを指定したらプロジェクトディレクトリ内のDebugにexeが出力されるようになりました。
出力ファイル指定のマクロの名前にOutDirが自プロジェクトパスが正しく入っているのに何故・・・
0920デフォルトの名無しさん
2009/10/23(金) 01:18:48リンカじゃなくて、構成プロパティ>全般>出力ファイル
0921918
2009/10/23(金) 01:47:19直しました。
exeはプロジェクト内のDebugに出力されるようになりましたが、
exeを実行すると一瞬画面が出てきてすぐ消えてしまいます。
プロジェクトでデバッグ実行すると、正しく動いているのですが、
exeで実行すると消えてしまいます。
何が違うのでしょうか・・・。
0922デフォルトの名無しさん
2009/10/23(金) 01:50:08ちゃんとコマンドプロンプトから実行してみ。
0923デフォルトの名無しさん
2009/10/23(金) 17:22:40フローティングってとこを押したらフローティングしたまま元に戻せなく
なった(ドッキングできない)んですけど、元に戻すにはどうすればいいですか?
VCEE2008です
0924デフォルトの名無しさん
2009/10/23(金) 17:24:42メインメニューのウィンドウってとこから操作できましたorz
0925デフォルトの名無しさん
2009/10/24(土) 10:28:00クラス(大分類).構造体(中分類).構造体(小分類) の3層構造で扱っています。
利用頻度は1秒間にint型に1000回アクセスする程度の負担なのですが、
3層になっていると1層で扱うより負担が極めて大きくなるなんて事は有りますか?
3層くらいなら気にする必要は無い負担なのでしょうか?
0926デフォルトの名無しさん
2009/10/24(土) 11:44:090927デフォルトの名無しさん
2009/10/24(土) 13:54:02変わらないんですね。ありがとうございます。
0928デフォルトの名無しさん
2009/10/24(土) 20:01:15プログラムの最後に
kbhit();
0929デフォルトの名無しさん
2009/10/24(土) 21:55:40b バット
hit ヒット
0930デフォルトの名無しさん
2009/10/24(土) 23:34:16それ押さなくても関数から戻るからな
0931デフォルトの名無しさん
2009/10/25(日) 03:17:16コンストラクタでクラスのメンバ変数とかポインタとかの最後に(0)ってつけたのを羅列してたんだけど、
(0)って何をしてるんですか?
0932デフォルトの名無しさん
2009/10/25(日) 03:22:320933デフォルトの名無しさん
2009/10/25(日) 03:45:360(つまりNULL)で初期化だと思う。
見てみないと分からないけど。
0934デフォルトの名無しさん
2009/10/25(日) 06:48:05基本型もコンストラクタを持つ
sttaic_cast<T>()的な
0935デフォルトの名無しさん
2009/10/25(日) 16:16:38コンパイルして実行するとAssertion failedという警告が出るのですが、
この警告の意味と、警告を出なくするためにすべきことを教えてください
DXUTmisc.hの109行目、以下の部分で警告が出ています
TYPE& CGrowableArray::GetAt( int nIndex ) const
{
assert( nIndex >= 0 && nIndex < m_nSize ); return m_pData[nIndex];
}
0936デフォルトの名無しさん
2009/10/25(日) 16:21:30nIndex の値が 0 より小さいか m_nSize 以上のとき、カッコの中が FALSE となって 「Assertion failed」になる。
したがって、nIndexの値をチェックすべし。
0937935
2009/10/25(日) 16:37:39問題の行まで実行したとき、int nIndexの値は0でした
int m_nSizeも0だったので、nIndex<m_nSizeの方で引っかかってるみたいですね
protected:
int m_nSize; // # of elements (upperBound - 1)
こうなっているので、GetAtを呼び出す前にm_nSizeの値を増やさないといけないようです
template<typename TYPE> HRESULT CGrowableArray <TYPE>::Add( const TYPE& value )
template<typename TYPE> HRESULT CGrowableArray <TYPE>::Insert( int nIndex, const TYPE& value )
DirectXでリストボックスを作るクラスを利用しようとしていたのですが、
これらふたつの関数でm_nSizeが増加するようなので、恐らくアイテムが入ってない場合
あるいはアイテム数より多い場所にインデックスがある場合にエラーを出すということだと思います
0938935
2009/10/25(日) 16:39:030939デフォルトの名無しさん
2009/10/25(日) 16:41:53そりゃそうだろ。空のサイフからは1円も出てこんよ。まずは、金をいれなきゃ。
0940デフォルトの名無しさん
2009/10/25(日) 17:32:050941デフォルトの名無しさん
2009/10/25(日) 17:38:100942デフォルトの名無しさん
2009/10/25(日) 18:24:05今までMFCでちょっとしたツールを作っていたんですが、
VC++の.NET版で作ったやつは64bitでも動きますか?
なんか、仮想マシンで動かすとか聞いたんですが・・
0943デフォルトの名無しさん
2009/10/25(日) 18:40:070944デフォルトの名無しさん
2009/10/25(日) 18:45:05ただし、64bit版WindowsではWOW64により32ビットプログラムもそのまま動く。
64ビットのEXE/DLLを作りたければソリューション構成から設定する。
ただ、.NET 2002/2003は64ビット版コンパイラ・ライブラリなどが付属していなかったと思うけど。
仮想マシン云々は関係ない。VCで普通にMFCプロジェクトを作れば今まで通りの普通のプログラムになる。
0946デフォルトの名無しさん
2009/10/25(日) 21:39:100947デフォルトの名無しさん
2009/10/25(日) 23:20:140948デフォルトの名無しさん
2009/10/26(月) 10:22:21なんとなく、今までMFCで書いてたけど.NET、つまりC++/CLIで書くと
64bit(ネイティブ)でも動かせるのか?と聞いてるような気がする・・・
64bitネイティブなのかどうかで答え方も変わってくるけど、
まあC++/CLIで1から書くならC#でいいしなあ
0949デフォルトの名無しさん
2009/10/26(月) 12:13:09MFCで CFileDialog を使用し、ファイルを選択。
GetPathName()を使い、パスを取得し、エディットボックスに表示する。
という部分を作ったのですが、
選択したファイルを開く(可視状態で。)方法がわからないので、教えていただけないでしょうか。
調べてみても、内部的にオープンするようなものばかりで、実際に開いてみるという部分のヒントが見つけられませんでしたので、
お願い致します。
0950デフォルトの名無しさん
2009/10/26(月) 12:25:05CFileとか使うんじゃダメなのか。
0951デフォルトの名無しさん
2009/10/26(月) 12:40:50CFile オブジェクトを構築して、CFile::Open() でファイルを開いて、CFile::Read() でファイルの内容を読み込んで、
最後に CEdit::SetWindowText() でエディットボックスに表示する。
ファイルをロック状態にしないなら、直後に CFile::Close() すればいい。
それぞれの関数の使い方は MSDN あたりを参照すべし。
0952949
2009/10/26(月) 14:18:39VCを1から始めているところで、
・ボタンを押すとファイルを選択出来る。
・→選択するとパスを表示する。
上記2点の拡張として、開くためのボタンを追加し、選択したファイルを開きたい。
と思ったので、本当にただ開きたいだけです。
>>951
ありがとうございました。
'CWnd::SetWindowTextW' : 1 番目の引数を 'const char [7]' から 'LPCTSTR' に変換できません。(新しい機能 ; ヘルプを参照)
error C2660: 'CFile::Open' : 関数に 1 個の引数を指定できません。
error C2660: 'CFile::Read' : 関数に 1 個の引数を指定できません。
みたいなエラーと戦っていますが、もう少しやってみます。
0953デフォルトの名無しさん
2009/10/26(月) 14:27:45だから“開く”の定義は何よ。Openするだけか。
その問題は、Unicodeのプロジェクト(デフォルト)に対して
マルチバイトのコードを書いたから。
その範囲だと、
"文字列"を_T("文字列")にするか、プロジェクトをマルチバイトにすればいい。
0954949
2009/10/26(月) 14:37:24わかりづらくてすみません。
"開く"は、例えば abc.txt を
マウスでダブルクリックして開かれる状態と同じ状態にしたいです。
現状は、abc.txtを選択し、 「C:\abc.txt」がエディットボックスに表示されている。
という部分を組んだ状態です。
そのエディットボックスにある 「C:\abc.txt」を開きたい
→マウスでダブルクリックして開いたのと同じようにしたい。
・・・です。
0955デフォルトの名無しさん
2009/10/26(月) 15:17:520956デフォルトの名無しさん
2009/10/26(月) 15:33:05結局のところ、
A: 自身のエディットボックスに選択したテキストファイルの内容を表示したい。
B: 選択したテキストファイルを、関連付けられたアプリケーションで開きたい。
の、どっちなんだよw
0957949
2009/10/26(月) 15:41:06ありがとうございました。
ShellExecute()で無事開くことができました。
目的に対して使用する命令をもっと覚えなければいけないと思っています。
まだMSDNの解説を読んでもいま一つ理解できない状態なので、
検索にひと苦労ですが、頑張ってみます。
ありがとうございました。
0958949
2009/10/26(月) 15:48:46上記で、ダブルクリックで・・・とやりたいことを書きましたが、
例えばデスクトップ上で abc.txt をダブルクリックして開く(普通に開く)
というニュアンスが伝えたかったです。
とすると、B・・・になるんですかね。
開く とただ単に表現してすいませんでした。
0959デフォルトの名無しさん
2009/10/26(月) 16:59:17無料で手に入れた2005にMFCが入ってただけなんだろうけど
0960949
2009/10/26(月) 17:07:15開発職なのですが、業務を効率化するためにVCをでツールを作りたいというのが目的で始めました。(自己啓発的な)
C言語を使う環境にあり、会社にあるVC2005をインストールしました。(自分は業務でCを使いませんが)
会社にVCを聞ける人がいないので、2Chで聞いている次第です。(汗)
0961デフォルトの名無しさん
2009/10/26(月) 20:29:54MFCは優れたオブジェクト指向のモデルじゃないし
ドキュメントアーキテクチャに縛られるので
ライブラリ内部のコードが読めるレベルのプログラマでないと
逆に悪戦苦闘する羽目になる。
ペゾルドは社内プログラマや趣味のプログラマなら
VBかDelphiを使ったほうがいいと書いているくらいだ。
0962デフォルトの名無しさん
2009/10/26(月) 21:29:14だいぶ前からドキュビューは使わなくてもいいようになってる。
0963デフォルトの名無しさん
2009/10/26(月) 22:46:160964デフォルトの名無しさん
2009/10/26(月) 23:13:25俺がぶち当たるプロジェクトは尽く使ってないな>ドキュメントビューアーキテクチャ
これ、無駄じゃね?
こういう構造にしたいアプリってなかなかないよね?
0965デフォルトの名無しさん
2009/10/26(月) 23:15:21テキストファイルをバッファに読み込んだあと、
一行ずつ文字列に格納していくため、以下のように作ろうと思っています
�@バッファの終点に\0を追加
�Astrchr(wcschr)でバッファの始点から\n(0x0D0A)を一文字ずつ検索
�Bstrcpy(wcscpy_s)でバッファの始点から�Aで得たポインタから\nの分戻した場所までを文字列0に格納
�Cバッファへのポインタを\nのひとつ先まで移動する
�D�A〜�Cをループ
�Ea バッファへのポインタとバッファの終点のポインタが一致したらループから抜ける
�Eb strchrがNULLを返したら、バッファの終点から\0を除いた場所までを文字列に格納してループから抜ける
こんな感じで作ろうと思っているのですが、もっと簡単な方法はあるでしょうか?
0966デフォルトの名無しさん
2009/10/26(月) 23:24:58同意。業務アプリだと、ダイアログベースで済む事が多いからな。
ドキュメントビューアーキテクチャを使うのは、開発ツールそのものを作るときぐらいだろうか?
0967デフォルトの名無しさん
2009/10/26(月) 23:31:12簡単ってことならfgtes()使えば簡単になると思う。
C++でいいなら、getline()を使えばもっと簡単になる。
一気に文字列に読み込んでsplit()すればと思ったけど、
std::stringにもCStringにもsplit()ないみたいね。
ググればsplit()のソースがいっぱいでてくるから、それ
見てもいいけど。
0968デフォルトの名無しさん
2009/10/26(月) 23:36:56行単位で毎度コピーするの無駄だから
終端だけ書き替えてargvみたいな感じで扱う
0969デフォルトの名無しさん
2009/10/26(月) 23:41:21昨今、MFCに関する書籍が出回らなくなったり
世間的にはレガシーライブラリなんて呼ばれるようになったのも
MFCの核であったドキュメントビューアーキテクチャが
一般的な用途ではあんまし役に立たなかった証左かもね。
VS2010でスタンダードエディションをなくす(MFCはProfessionalエディション以上となる)のも
ExpressやStandardエディションですんでいたような個人、SOHOクラスのプログラマには
MFCの需要がまったくなかったからかもしれん。
0970デフォルトの名無しさん
2009/10/26(月) 23:47:50http://www9.plala.or.jp/sgwr-t/lib/strtok.html
0971デフォルトの名無しさん
2009/10/26(月) 23:50:510972デフォルトの名無しさん
2009/10/26(月) 23:52:58ホント使えないよね>汎用文字列クラス
どの環境でもsplitに当たるもんは自分でこさえないといけない気がする
0973デフォルトの名無しさん
2009/10/26(月) 23:58:35改行コードなら平気なんじゃない?
0974デフォルトの名無しさん
2009/10/27(火) 00:04:450975965
2009/10/27(火) 01:46:33strtokのかわりにwcstok_sを使うことにしたのですが、
3番目の引数にwchar_t **contextを要求されて、
これが解説を読んでもなんのことかよくわかりません
http://msdn.microsoft.com/ja-jp/library/ftsafwz3(VS.80).aspx
ためしにNULLを入れてみたら
Assertion failure
context == NULL
とか言って怒られました
0976デフォルトの名無しさん
2009/10/27(火) 01:47:43その時点で簡単じゃねーし
その方法はやめちゃえw
0977デフォルトの名無しさん
2009/10/27(火) 01:58:16そこには strtok( wcstok_s) 関数が次のトークンを探すためのポインタを放り込むから、
そのバッファを呼び出し側で用意してやる。
wchar_t* pszContext = NULL;
として受け皿を用意して、 &pszContext を関数に渡せ。
というか、>>967 の言うように fgtes() を使ってテキストファイルから1行ずつ読み込んだほうがラク。
0978975
2009/10/27(火) 03:14:28fgets()を使って書き直す場合、最大読み込み数に工夫が必要そうですね。
0979デフォルトの名無しさん
2009/10/27(火) 10:59:06改行文字で切り出したいだけならsscanf(fileBuffer, "%[^\n]", lineBuffer)って要領でもできるよ。
0980デフォルトの名無しさん
2009/10/27(火) 11:29:47このテストという文字列をVisualStudioの「出力」の「デバッグ」部分に出力したいのですが、どのようにすれば良いのでしょうか?
0981デフォルトの名無しさん
2009/10/27(火) 11:37:210982デフォルトの名無しさん
2009/10/27(火) 12:14:53TRACEマクロというものでしょうか?
どうも使えないみたいなのですが、これはMFCのどこかで定義されているマクロですよね?
プロジェクトを右クリック→構成プロパティ→全般→MFCの使用 標準 Windows ライブラリを使用する
これだけでは使用できないのでしょうか?
0983デフォルトの名無しさん
2009/10/27(火) 12:18:33#include "ToolKitA.h"
#include "ToolKitB.h"
class small : public ToolKitB {
public:
small( ToolKitA* parent );
hogehoge();
fugafuga();
}
class large : public ToolKitA {
public:
large();
void foo();
bool bar;
}
こんな風になっている時、つまりlargeでToolKitAクラスをオーバーライドしていて、
smallはToolKitAというクラスは知っているけど、largeというクラスは知らない時、
smallクラスの関数からlargeクラスの変数barを読み出したり、foo()関数を呼び出したい。
こういう事はできる?
0984デフォルトの名無しさん
2009/10/27(火) 12:21:590985デフォルトの名無しさん
2009/10/27(火) 12:23:51どうやんのww
0986デフォルトの名無しさん
2009/10/27(火) 12:35:33そのToolKitAのポインタは、当然ながらlargeインスタンスから得られる。
0987デフォルトの名無しさん
2009/10/27(火) 12:38:26::OutputDebugString();
>>983
>largeというクラスは知らない
意地悪しないで教えてあげればいい。
前方宣言、フレンドクラス・・・。方法はいくつかある。
0989デフォルトの名無しさん
2009/10/27(火) 15:34:51アク禁に巻き込まれて返答が遅くなってしまいました。
アウトプットデバッグストリングで目的の文字列が表示されました。
ありがとうございます。
0990デフォルトの名無しさん
2009/10/27(火) 16:15:35>>982
>プロジェクトを右クリック→構成プロパティ→全般→MFCの使用 標準 Windows ライブラリを使用する
それはMFC使ってない。
0991デフォルトの名無しさん
2009/10/27(火) 16:46:05windows標準のライブラリというのはwin32APIの事ですか?
0992デフォルトの名無しさん
2009/10/27(火) 16:46:300993デフォルトの名無しさん
2009/10/27(火) 16:49:28ありがとうございます。
0994デフォルトの名無しさん
2009/10/27(火) 17:28:000995デフォルトの名無しさん
2009/10/27(火) 17:42:340996デフォルトの名無しさん
2009/10/27(火) 19:16:43if (i < a){
//処理
return;
}
if (i < b){
//処理
return;
}
を繰り返すよりも簡単な方法はあるでしょうか?
switchだと値が一致する場合にしか使えませんよね
0997デフォルトの名無しさん
2009/10/27(火) 19:20:31static struct {
int lower;
int upper;
func_t func;
} table[] = {
{0, a, func1},
{a, b, func2},
};
0998デフォルトの名無しさん
2009/10/27(火) 19:24:54なるほど、簡略化できそうです
ありがとうございました
0999デフォルトの名無しさん
2009/10/27(火) 20:33:56private:
struct myStruct{
int a;
int b;
} param[40];
ヘッダーでこう宣言したのですが、コンストラクタでこの配列に初期値を入れようとするとうまくいきません
param[0] = {0, 0};
1000デフォルトの名無しさん
2009/10/27(火) 20:40:3710011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。