★初心者にVisual C++を教えるスレ★ Part22
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2005/11/08(火) 18:48:04Visual C++入門者・初心者からの質問を、
お兄ちゃん達が優しく、時には厳しく回答してくれるスレッドです。
■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう。
・できるだけ具体的に。
質問の仕方については次のページが大変参考になります。
http://www.hyuki.com/writing/techask.html
http://www.geocities.co.jp/Beautycare/4965/public/template.html
http://myu.daa.jp/osiete/
■回答するにあたって
・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。
(MSDNのどの項目だとか、何のキーワードでGoogleするとか)
・ネタや煽りは軽く流しましょう。
過去スレ、関連スレなどは>>2-5。
0002デフォルトの名無しさん
2005/11/08(火) 19:11:35Part21 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デフォルトの名無しさん
2005/11/08(火) 19:43:37( ゚∀゚)彡 おっぱい!
⊂彡
_ ∩
( ゚∀゚)彡 おっぱい!
⊂彡
_ ∩
( ゚∀゚)彡 おっぱい!
⊂彡
0004デフォルトの名無しさん
2005/11/08(火) 20:00:21■MFC相談室 mfc14d.dll■
http://pc8.2ch.net/test/read.cgi/tech/1121200124/l50
Win32API質問箱 Build36
http://pc8.2ch.net/test/read.cgi/tech/1128951330/
鬱だ氏のう DirectX (Part 15)
http://pc5.2ch.net/test/read.cgi/tech/1096649788/l50
C言語なら俺に聞け! Part 117
http://pc8.2ch.net/test/read.cgi/tech/1131282679/
C++相談室 part44
http://pc8.2ch.net/test/read.cgi/tech/1128512737/
C/C++の宿題を片づけます 52代目
http://pc8.2ch.net/test/read.cgi/tech/1130431335/
【初心者歓迎】C/C++室 Ver.20【環境依存OK】
http://pc8.2ch.net/test/read.cgi/tech/1121644782/l50
【関連サイト】
猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
MSDN ライブラリ ※変更された
http://msdn.microsoft.com/library/ja/
Platform SDK Update ※変更された
http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en
http://www.google.co.jp/
0005デフォルトの名無しさん
2005/11/08(火) 20:01:47part 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.html
0006デフォルトの名無しさん
2005/11/08(火) 20:11:03関連スレ修正
【初心者歓迎】C/C++室 Ver.22【環境依存OK】
http://pc8.2ch.net/test/read.cgi/tech/1128872687/
0007デフォルトの名無しさん
2005/11/08(火) 21:47:030008デフォルトの名無しさん
2005/11/10(木) 19:58:32CAsyncSocketを使って通信のクライアント処理を作ろうとしていますが、
CAsyncSocket socket;
socket.Create();
で、socket.Create()の返り値が 0(異常終了) で返ってきます。
Windowsフォーム アプリケーション(.NET)では、CAsyncSocketは使えないのでしょうか?
また、Windowsフォーム アプリケーション(.NET)の通信の実装は、CAsyncSocketを使う以外に
あるのでしょうか?
知っている人がいれば、よろしくお願いいたします。
0009デフォルトの名無しさん
2005/11/10(木) 20:09:450010デフォルトの名無しさん
2005/11/10(木) 20:39:55VC++.NET 2003 の MFCベースの場合
socket.Create()の返り値が 1(正常終了)でした。
Windowsフォーム アプリケーション(.NET) の標準的なクライアント通信機能の
実装方法のご教示よろしくお願いいたします。
0011デフォルトの名無しさん
2005/11/10(木) 20:51:22自分でMSDN調べろや
それでも解らんかったらその時教えてやるよ
0012デフォルトの名無しさん
2005/11/10(木) 23:12:48実家にあったMicrosoftVC++6.0 をインストールして、プログラミング勉強してみようと始めたんです
とりあえず、dialogを作ろうとしてリソースエディタで新規で作ったんです。
で、コントロールを足していこうとしてるんですけど、 コントロールボックスが出てきません。
解説サイトを見ても、コントロールボックスからbuttonとかeditboxとかを選んでるんですが、
その選ぶボックスがでてこないのは何でなんでしょうか? だれか教えてください。
0013デフォルトの名無しさん
2005/11/10(木) 23:23:42表示メニューからツール バーをON/OFFする項目を探すか、
ツールバーの開いているところで右クリックする。
メニューが出てくるから必要なツール バーにチェックを入れる。
ボックスみたいになっているが当然ツール バーの一種だ。
0014デフォルトの名無しさん
2005/11/10(木) 23:24:24001512
2005/11/10(木) 23:31:16早い反応でありがとうございます。
すぐ↑の質問への殺伐とした反応から こんな初歩(ってかソフトの操作法)を質問したら
どんなこと言われるかと思いましたw
>>14 のツールバー右クリックの方法で無事にボックスが現れました。解決です。
また勉強して、次はちゃんとプログラムについての質問できるように頑張ります。
0016デフォルトの名無しさん
2005/11/11(金) 00:39:22クラスとか構造体とかまったくわかりません
0017デフォルトの名無しさん
2005/11/11(金) 07:41:46勉強してください。
0018デフォルトの名無しさん
2005/11/11(金) 09:18:10タブオーダって1から順にクリックして決めますよね。
これって途中からできないんでしょうか。
たとえば、100個のコントロールを貼り付けたダイアログで、99と100を入れ替えたいだけの場合にも
1から順に100までぽちぽちクリックするのはあまりにもひどいですよね。
うまいやり方をご存知の方、よろしくお願いします。
0019デフォルトの名無しさん
2005/11/11(金) 09:20:580020デフォルトの名無しさん
2005/11/11(金) 09:33:080021デフォルトの名無しさん
2005/11/11(金) 09:36:33バージョンも使用フレームワークも書かんで何を察しろと言うのか
0022デフォルトの名無しさん
2005/11/11(金) 10:00:06#これくらい察すれば?
0023デフォルトの名無しさん
2005/11/11(金) 10:03:15そのファイルの中身を一つ一つ検索かけて「ちんこ」って書いた行があるとしたら
その行を抽出して新たにそれをまとめたエクセルファイルを作るような
仕組みにしたいんですが、なにぶん初心者なもんでして
どういったあたりから手がけていったらいいのか・・・。
エクセルファイルの中身を見て検索するあたりがどうしたらいいのかが
わからんもんでして。便利な関数かなんかがあるんでしょうか?
0024デフォルトの名無しさん
2005/11/11(金) 10:15:300026デフォルトの名無しさん
2005/11/11(金) 10:21:13それです。
できました。
どうもありがとうございました。
0028WinXPにて
2005/11/11(金) 15:13:31#include <stdio.h>
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
BOOL bRet; STARTUPINFO si; PROCESS_INFORMATION pi; FILE* fpredir;
if (( fpredir = freopen("OUTPUT.txt", "w", stdout)) == NULL){
fprintf(stderr, "標準出力へのリダイレクトエラー\n");
}
ZeroMemory(&si, sizeof(si)); ZeroMemory(&pi, sizeof(pi));
si.cb = sizeof(si);
// コマンドウインドウを非表示にする
si.wShowWindow = SW_HIDE;
si.cb = sizeof(STARTUPINFO);
si.lpReserved = NULL;
si.lpDesktop = NULL;
si.lpTitle = NULL;
si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
si.cbReserved2= 0;
si.lpReserved2= NULL;
si.hStdInput = GetStdHandle(STD_INPUT_HANDLE);
si.hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);
si.hStdError = GetStdHandle(STD_ERROR_HANDLE);
// プロセスを起動する
bRet = CreateProcess(NULL, "ipv6.exe if", NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi);
if(0 == bRet){ // エラー}
Sleep(1000);
fclose(fpredir);
return 0;
}
"OUTPUT.txt"ファイルに"ipv6.exe if"の結果が出力されません。
ご指導よろしくお願いいたします。
0029デフォルトの名無しさん
2005/11/11(金) 21:29:23WinAPIプログラミングを誠意勉強中です。
スタティックライブラリを使ってみようとしてるところです。
ライブラリにしたダイアログ(lib_test.lib)とリソース(lib_test.rc)を、リンクしようとしてます。
ヘッダ(lib_test.lib)をプロジェクトにもってきてインクルードして、
VC++のプロジェクトの設定から リンクするライブラリに lib_test.libを追加したんですが、
このlib_test.libとlib_test.rcは どこに置いたらいいんでしょうか?
プロジェクトファイルと同じディレクトリに置いたら
・外部シンボルが未解決
・外部参照が未解決 って出ました。
実行ファイルができるディレクトリ(debug版なので \Debug です)に置いたら
・入力ファイル(lib_test.lib)がオープンできません。 って出ました。
libファイル自体に変な属性(アクセスコントロールとか読取専用とか)はつけてません。
なのでオープンできないってのはリンカが見つけてないのかな・・・
どなたかご指南お願いします
003029
2005/11/11(金) 22:10:590031デフォルトの名無しさん
2005/11/11(金) 22:16:33プロジェクトファイルと同じフォルダにlibなどを置くのが正解だと思う。
入力ファイル(lib_test.lib)がオープンできませんのエラーが出ませんということは、
リンカーはとりあえずLIBファイルを開けたということだから。
0032デフォルトの名無しさん
2005/11/11(金) 22:46:53> リンカーはとりあえずLIBファイルを開けたということだから。
言ってることが意味不明。
>>29は 「入力ファイル(lib_test.lib)がオープンできません。 って出ました。」って言ってるが?
いちいちlibファイルをコピーするのは面倒だから、どこかlibの出力用ディレクトリを決めて、
そのディレクトリを参照するような設定にしとくのがいいかとおもうが。
0033デフォルトの名無しさん
2005/11/11(金) 22:51:13> >>29は 「入力ファイル(lib_test.lib)がオープンできません。 って出ました。」って言ってるが?
言ってることが意味不明。
「実行ファイルができるディレクトリ(debug版なので \Debug です)に置いたら」って言ってるが?
0034デフォルトの名無しさん
2005/11/11(金) 22:51:320035デフォルトの名無しさん
2005/11/11(金) 22:53:19プロジェクトのディレクトリに置いた→シンボル・参照の未解決
debugに置いた→入力ファイルがオープンできません
と29は書いてあるだろ。
俺は入力ファイルが〜のエラーが出なかった前者にLibを置くのが良いと書いたまでだ。
入力が見つからないというのは論外だから。
0036デフォルトの名無しさん
2005/11/11(金) 22:58:390037デフォルトの名無しさん
2005/11/11(金) 23:05:1731の書き方がなんかおかしいだろ
> 入力ファイル(lib_test.lib)がオープンできませんのエラーが出ませんということは、
この書き方じゃ質問者が「エラーが出ません」と言ってるように聞こえるぞ
0038デフォルトの名無しさん
2005/11/11(金) 23:15:480039デフォルトの名無しさん
2005/11/11(金) 23:17:36>プロジェクトファイルと同じディレクトリに置いたら
>・外部シンボルが未解決
>・外部参照が未解決 って出ました。
この時点では
>VC++のプロジェクトの設定から リンクするライブラリに lib_test.libを追加したんですが、
この作業をしてなかったということはないよな。
0040デフォルトの名無しさん
2005/11/12(土) 00:44:39外部のテキストファイル(test.txtとします)に5 7 10と書くと
VCプロジェクトのほうで実行時に変数xに5、yに7、zに10を代入するようなコードはどう書くのでしょうか?
0041デフォルトの名無しさん
2005/11/12(土) 00:52:050042島野
2005/11/12(土) 01:18:08pgmファイルの求め方がわかりませんのでプログラムお願いします。
/* SN比*/
g = 0.0;
f = 0.0;
for (y = 0; y <= ysize ; y++){
for (x = 0; x <= xsize ; x++){
g = g + a[x][y] * a[x][y];
f = f + (a[x][y] - b[x][y]) * (a[x][y] - b[x][y]);
}
}
h = 20 * log(sqrt(g/f));
printf(" %lf\n",h);
exit(0);
}
まではわかります
急いでます
0043デフォルトの名無しさん
2005/11/12(土) 01:33:51004429
2005/11/12(土) 01:49:13>>38
> LIBの使い方もしらないのにLIB作ってもしょうがないだろ
はい。まさにそのとおりなんですよね。
ライブラリつくるのって、汎用っぽいオブジェクトファイルをまとめたもの って解釈なんですが
まずここが間違ってますか?
>>36
>自分でlib作る前に既存のlibでビルドできるようになれ
既存のlibは、システムの標準ライブラリが入ってるところからリンクするんですよね?
それはビルドできます。
>>39
した後でした。
lib_test.lib自体が間違ってるんでしょうかね・・・
004529
2005/11/12(土) 01:57:44ttp://www7.plala.or.jp/keny01/windows/win32/#sub3-6 ここで順番通りやってみて
ライブラリを作るってので立ち止まってる状況です。
ライブラリを作るにあたってプロシージャが
WM_COMMANDのメッセージ処理で IDC_CHK_1を2回やってるのは違うなってくらいで
あとは一応書いてあるとおりにやってみてるんですが。 著者のコードミスも疑ってみたんですが、
.libがまず動いてみないと どうしようもないです。
実際のエラーメッセージは 以下
LINK : warning LNK4075: /EDITANDCONTINUE は /INCREMENTAL:NO の指定によって無視されます
static_test.obj : error LNK2001: 外部シンボル ""int __cdecl ShowSubDialog(struct tagConfData *)" (?ShowSubDialog@@YAHPAUtagConfData@@@Z)" は未解決です
Debug/statictest.exe : fatal error LNK1120: 外部参照 1 が未解決です。
0046デフォルトの名無しさん
2005/11/12(土) 02:00:14libを作るとき.cで。
.cppのやつにリンクとかじゃないよなぁ・・・
0047デフォルトの名無しさん
2005/11/12(土) 02:07:33#ifdef __cplusplus
extern "C" {
#endif
と
#ifdef __cplusplus
}
#endif
で囲む。で良いのかな?
004829
2005/11/12(土) 02:38:11プログラム自体は異常な動きですが、リンカは通りました。
多分解決です(あとはコーディングをチェックです^^;)
ありがとうございます。
>>46 >>47
えっと、C++(.cpp)はC(.c)で書いたLIBをリンクするときに変数の名前の変更をさせないオプションとして
extern "C"
と指示するようですね。
【参考URL】
ttp://www.med.osaka-u.ac.jp/pub/cl-comp/saito/cppintro/cppintro14.html
>>47さんのtipsはとても便利ですね。というか常識レベルなんでしょうね。 ものすごくありがとうございました。
004916
2005/11/13(日) 00:40:460050デフォルトの名無しさん
2005/11/13(日) 08:41:270051デフォルトの名無しさん
2005/11/13(日) 10:19:510052デフォルトの名無しさん
2005/11/13(日) 11:01:380053デフォルトの名無しさん
2005/11/13(日) 11:04:55コンパイルしたexeファイルを実行しようとすると、
それに関連付けられた、テキストファイルなどは、
どうも、探すことができないようなのです。
同じフォルダで実行すると、大丈夫ですが、
プロジェクトを実行していた別のフォルダーで、実行させると、
テキストファイルを探すことができません。
皆さんは、どうされているのでしょうか
0054デフォルトの名無しさん
2005/11/13(日) 11:08:58意味不明。
勘で答えるとGetModuleFileName()。
0055デフォルトの名無しさん
2005/11/13(日) 11:10:010056伝説新人タクシ
2005/11/13(日) 11:13:40郵便配達を考えろ。地元の町なら「鈴木さんち」と言えば
場所がわかる。ところがただ「鈴木さんち」と言われても
見当もつかないだろう。だから、絶対パスか相対パスで
指定してやる。例) C:\WINDOWS\programfiles\a.txt
0057デフォルトの名無しさん
2005/11/13(日) 12:05:59>>54-56さんありがとうございます。
フルパスで、できました。
詳しい説明まであり
皆様どうもありがとうございました。
0058デフォルトの名無しさん
2005/11/13(日) 13:31:220059デフォルトの名無しさん
2005/11/13(日) 13:36:040061デフォルトの名無しさん
2005/11/13(日) 14:03:490062デフォルトの名無しさん
2005/11/13(日) 15:32:58nWidthはあるのにnHeightがありません。
仕様ですか?
0063デフォルトの名無しさん
2005/11/13(日) 15:34:50006458
2005/11/13(日) 19:45:160065デフォルトの名無しさん
2005/11/13(日) 19:48:31ヒント: 英語を読む
0066デフォルトの名無しさん
2005/11/13(日) 20:03:060067デフォルトの名無しさん
2005/11/13(日) 20:17:040068デフォルトの名無しさん
2005/11/13(日) 20:41:55ケース1:
日本語版をインストールする
ケース2:
英語版ヘルプのチェックボックスをはずす
ケース3:
志村!それエラーメッセージ!!
0070デフォルトの名無しさん
2005/11/14(月) 23:27:56作業画面に行数を表示させてくれることは可能なのでしょうか?
あと、特にエラーがなくてもたまにビルドをし続けてそのまま止まってしまうという事が
多いような気がしますがコンパイラ(Visual C++だけ?)とはそのようなものなのでしょうか?
初心者といってもいいわけにしかならない事は十分承知の上ではありますが、最近はじめたばかりという事もあり
自分なりにいろいろ調べてみてもわからないので質問させて頂きました。
0071デフォルトの名無しさん
2005/11/14(月) 23:45:59>作業画面に行数を表示させてくれることは可能なのでしょうか?
可能です。しかしエラーメッセージをダブルクリックすると自動的に
エラー発生地点にジャンプしてくれるので行数表示してない人が多いようです。
ときたま指定行にジャンプしたいときはCTRL+Gを使うのが楽でしょう。
>あと、特にエラーがなくてもたまにビルドをし続けてそのまま止まってしまうという事が
>多いような気がしますがコンパイラ(Visual C++だけ?)とはそのようなものなのでしょうか?
そのようなものではありません。今のPCが購入して4年以上なら買い替え時です。
0072デフォルトの名無しさん
2005/11/15(火) 05:36:47>>71
>一応可能です。
[ツール]-[オプション]-[エディタ]タブ あたりにチェック項目があると思ったのですが 見当たらないです。
どこから操作すれば表示できるのでしょうか?Ctrl+Gでもいいのですが、そんな大規模なコードじゃないので
行番号を表示させていたほうが、(今のところ)便利なもので。
0073デフォルトの名無しさん
2005/11/15(火) 06:11:170074デフォルトの名無しさん
2005/11/15(火) 06:33:450075デフォルトの名無しさん
2005/11/15(火) 08:24:04>そのようなものではありません。今のPCが購入して4年以上なら買い替え時です。
VC++.NETしか知らない人はお帰りください
たぶん>>70はVC++6.0じゃろ
0076デフォルトの名無しさん
2005/11/16(水) 00:30:03コンパイルすると
c:\Program Files\Microsoft Platform SDK\Include\WinNT.h(222) : error C2146: 構文エラー : ';' が、識別子 'PVOID64' の前に必要です。
c:\Program Files\Microsoft Platform SDK\Include\WinNT.h(222) : error C2501: 'PVOID64' : 識別名を宣言するのに、型が指定されていません。
c:\Program Files\Microsoft Platform SDK\Include\WinNT.h(5940) : error C2146: 構文エラー : ';' が、識別子 'Buffer' の前に必要です。
c:\Program Files\Microsoft Platform SDK\Include\WinNT.h(5940) : error C2501: '_FILE_SEGMENT_ELEMENT::PVOID64' : 識別名を宣言するのに、型が指定されていません。
c:\Program Files\Microsoft Platform SDK\Include\WinNT.h(5940) : error C2501: '_FILE_SEGMENT_ELEMENT::Buffer' : 識別名を宣言するのに、型が指定されていません。
というエラーが発生します。
どうしたらなおるでしょうか?
再インスコは無しで。
0077デフォルトの名無しさん
2005/11/16(水) 00:49:03してる行より上で
あやしいヘッダーをinclude してたり
あやしい定義があったりするとか。
0078デフォルトの名無しさん
2005/11/16(水) 07:54:500079デフォルトの名無しさん
2005/11/16(水) 08:07:08あなたの意見をみると安定度は
VC++.NET>>>>>VC++6.0
ということでOKなのかな?
実際は同じくらいじゃね?
0080デフォルトの名無しさん
2005/11/16(水) 09:57:52VBからは参照設定とか一切しないで下記のコードで動きます。
Dim obj as Object
Set obj = CreateObject("Hoge.Document")
obj.Property = "test"
obj.Function()
OLEを提供しているアプリケーションはHoge.exe, Hoge1.ocx Hoge2.ocxといった構成です。
VCで「タイプライブラリからクラスの追加」でHoge1.ocxやHoge2.ocxからスタブクラスを生成しても
VBのソースで参照しているプロパティやメソッドが抽出されません。
僕はHoge.exeにこれらプロパティが含まれている気がしてならないのですが
VCで「タイプイブラリからクラスの追加」でHoge.exeを選択すると、
「LoadTypeLibでエラーが発生しました。指定されたファイルがタイプライブラリではない可能性があります。」と出ました。
でもVBのソースを実行するとタスクマネージャのプロセス一覧でHoge.exeが立ち上がっているんですよね。
regeditでProgIDが"Hoge.Document"を検索すると下記のエントリが見つります。
マイコンピュータ\HKEY_CLASSES_ROOT\CLSID\{0000-0000-0000} <- 実際はクラスID
InprocHandler32 REG_SZ ole32.dll
LocalServer32 REG_SZ Hoge.exe
ProgID "Hoge.Document"
VC付属のOLE Viewで上記のプロパティやメソッドを持つタイプライブラリを探したのですが見つかりませんでした。
なにか別のやり方があるのでしょうか?それともVCから利用することは無理なんでしょうか?
0081デフォルトの名無しさん
2005/11/16(水) 18:35:49以前に作成したソケット関連のモジュールで、GetRTTAndHopCount関数を
使用しているのですが、WindowsXP SP2でそのモジュールを試したところ
GetRTTAndHopCount関数でフリーズしてしまいます。
何分待てども帰ってきてくれません。
SP2以前のOSでは、正常に返ってきてくれます。
どうやらネットワーク上に存在しないIPアドレスを指定するとフリーズしてしまうみたいです。
SP2以前の環境では、なんともなかったので、SP2でこの関数に手を加えられたのかと思いぐぐってみましたが、
見つけられませんでした。
環境は、VC++6.0 です。
長いので余計なコードは省略しています。(cHostNameがIpアドレス)
IPAddr DestIpAddress;
ULONG HopCount;
ULONG MaxHops = 64;
ULONG Rtt;
DestIpAddress = inet_addr(cHostName);
GetRTTAndHopCount(DestIpAddress, &HopCount, MaxHops, &Rtt);
SP2環境でGetRTTAndHopCount関数を使用してこの現象を回避できないのでしょうか?
使い方が変わったのでしょうか?
また、参考になるサイトなどあればお教えください。よろしくおねがいします。
0082デフォルトの名無しさん
2005/11/16(水) 19:49:44VBのObject型はC++ではIDispatchに相当するので、
最悪でもIDispatchからプロパティやメソッドを呼び出すラッピングクラスを自分で作れば絶対にできる。
#そこには果てしない棘の道が待ち構える。
0083デフォルトの名無しさん
2005/11/17(木) 00:36:11VBでActiveX DLLを書いてVC++アプリとOLEオブジェクトの間のプロキシー役をさせることにしました。これが一番手っ取り早かったので。
本当はVCのみで実現したかったのですが棘の道はイヤだったので諦めました。レスどうもです。
0084デフォルトの名無しさん
2005/11/17(木) 01:16:48中々賢明な手段ではないか。
0085デフォルトの名無しさん
2005/11/17(木) 03:50:38↓以外にいい方法はありませんか?
SendMessage(GetForegroundWindow(), WM_SYSCOMMAND, SC_MOVE | 2, 0);
0086デフォルトの名無しさん
2005/11/17(木) 03:52:370087デフォルトの名無しさん
2005/11/17(木) 08:45:06008881
2005/11/17(木) 12:35:27>ULONG MaxHops = 64;
と、書いていましたが実は200でした。
どうやら最大ホップカウントを変えるとタイムアウトに差がでるようです。
しかし、Win2k、XP(SPなし)で行ってみた結果、最大ホップカウントが、30でも200でも
約5秒でタイムアウトしてました。
SP2の場合は、30では約2分半。200では約17分というかなりの差がでました。
この状況はなにが原因でOSで差がでるかまったく検討つきません。
ぐぐってみてもOS(SP2)について書いてあるサイトを見つけられませんでした。
なぜSP2ではこんなに差が出るのでしょうか?
また、参考になるサイトなどあればお教えください。よろしくおねがいします。
0090デフォルトの名無しさん
2005/11/17(木) 17:37:54コンボボックスで、ドロップダウンされたリストから選択した後、
選択したものと異なる文字列をエディットボックス部分に表示させるには、
どうしたらよいですか?
リストの中から、「apple」を選ぶと、「りんご」とエディットボックス部分に表示させたいのです
0091デフォルトの名無しさん
2005/11/17(木) 17:49:40009290
2005/11/17(木) 18:10:12リストを選択「CBN_SELCHANGE」のタイミングで文字列を書き換えても、
コンボボックスの制御で、すぐに選択リストの文字列にされちゃうんです・・・
0093デフォルトの名無しさん
2005/11/17(木) 18:16:390094デフォルトの名無しさん
2005/11/17(木) 18:50:10VK_TABとかはwinuse.hにあるんだが、VK_0〜9、VK_A〜Zがどこにあるか分からん
0095デフォルトの名無しさん
2005/11/17(木) 18:52:450096デフォルトの名無しさん
2005/11/17(木) 19:09:57たしかVB限定。
0〜9、A〜Zの仮想キーコードはASCIIコードの値と同じ。
C/C++では直接'A'や'B'と文字定数を書けば済むので定義されていないのだと思う。
0097デフォルトの名無しさん
2005/11/17(木) 19:34:36なんか使いにくいです。
本当にありがとうございました。
0098デフォルトの名無しさん
2005/11/17(木) 19:41:540099デフォルトの名無しさん
2005/11/17(木) 19:43:03010090
2005/11/17(木) 21:33:07それも駄目でした・・・
010190
2005/11/17(木) 21:41:080102デフォルトの名無しさん
2005/11/17(木) 21:44:45書き換えればいいんじゃない?
0103デフォルトの名無しさん
2005/11/18(金) 00:02:52CBN_SELCHANGEでいいと思うが?
010490
2005/11/18(金) 00:15:10エディットボックスにWM_SETTEXTが飛んで来ませんでした・・・
(サブクラス化は知りませんでした)
>>103
void xxx::OnCbnSelchangeComboExpand(){
m_combo.SetWindowText("りんご");
}
じゃ駄目っぽいです。。。
0105デフォルトの名無しさん
2005/11/18(金) 01:00:22CSimpleStringTのGetLength()とstrlenの動作の違いではまっています。
過去にも
79 名前: デフォルトの名無しさん 投稿日: 2001/05/20(日) 09:11
CStringってstrlenで調べるとちゃんとした値が出るのに、
GetLengthだとたまに変な値が帰ってくるのは何故?
特に400byteとか大きな文字列を入れているとき起こりやすいような。
80 名前: デフォルトの名無しさん 投稿日: 2001/05/20(日) 12:12
>>79
GetLength()がNUL文字までの文字長を返すわけではないからです。
文字列バッファの前方に長さ等を保持しているんですが、詳細は
MFCのソースを読んでください。
と言うのがあったようですが、GetLengthのソースって
int GetLength() const throw()
{
return( GetData()->nDataLength );
}
↑ですか?どうしてこの二つは動作が異なるのでしょうか。
GetLengthを使うのはまずいのでしょうか。
よろしくお願いします。
0106デフォルトの名無しさん
2005/11/18(金) 01:04:43その違いが問題になるような最低限のソースを貼ってみるといいかもしれない。
0107105
2005/11/18(金) 01:32:50会社じゃ2chに書き込みできないのでソースを持って帰ってきます。
それにしても普通は同じように動く…。ん。ポインタの問題かもしれないですね。
確認してみます。失礼しましたm(__)m
0108デフォルトの名無しさん
2005/11/18(金) 04:58:010109デフォルトの名無しさん
2005/11/18(金) 13:34:44VBみたいに BeginUpdate 〜 EndUpdateみたいに、高速化でき
ないんでしょうか。1000アイテムくらいでも、あまりにも遅くて。
コンパイラはVC6.0です。よろしくお願いします
0110デフォルトの名無しさん
2005/11/18(金) 13:38:490111デフォルトの名無しさん
2005/11/18(金) 14:32:500112デフォルトの名無しさん
2005/11/18(金) 15:30:57ぐぐったらモノは違うけど、こんなの見つけた。
ttp://forums.belution.com/ja/vc/000/075/69.shtml
0113デフォルトの名無しさん
2005/11/18(金) 16:22:01まだ遅いけど、前よりはずいぶん早くなりました。
助かりました。
0114デフォルトの名無しさん
2005/11/19(土) 15:11:43質問です
eMbedded Visual Tool 3.0をインストールすると
次の画像にあるエラーが出てしまいインストールが強制終了してしまいます。
http://f42.aaa.livedoor.jp/~imawaka/imgboardphp/src/1132379880306.jpg
なぜなのでしょうか?
0115デフォルトの名無しさん
2005/11/20(日) 09:58:29>次の画像にあるエラーが出てしまいインストールが強制終了してしまいます。
インストールする→インストールしようとする
インストールが強制終了→インストーラが強制終了
という解釈で宜しいか?
0117デフォルトの名無しさん
2005/11/20(日) 17:25:29想像の域を出ませんが、空白を含むディレクトリ名を対象としていませんか?
或いはそのようなディレクトリで作業していませんか?
0118デフォルトの名無しさん
2005/11/20(日) 20:48:430119デフォルトの名無しさん
2005/11/21(月) 18:33:01これを実行してtextAっていう入力ボックスから取得した文字列を整数に変換するとき
中身がヌルだとエラー出るんですがどう回避したらいいですかね
0120デフォルトの名無しさん
2005/11/21(月) 18:45:250121デフォルトの名無しさん
2005/11/21(月) 18:53:55中身がヌルだったらParse()を呼ばなければいい。
中身がヌルかどうかの判定は自分で探してくれ。
0122デフォルトの名無しさん
2005/11/21(月) 20:23:53int a = Int32::Parse(textA->Text);
ってやってみたけどどうもうまくいきません。
!= ""もやってみたんだけどなぁorz
0123デフォルトの名無しさん
2005/11/21(月) 20:35:170124デフォルトの名無しさん
2005/11/21(月) 20:56:000125デフォルトの名無しさん
2005/11/21(月) 21:31:120126デフォルトの名無しさん
2005/11/22(火) 07:31:22通報しますた。
0127デフォルトの名無しさん
2005/11/22(火) 07:50:400128デフォルトの名無しさん
2005/11/22(火) 09:23:22文字を打ったらきちんと押し出しして欲しいのですが・・
設定の方法がわかりません。助けて下さい
0129デフォルトの名無しさん
2005/11/22(火) 09:26:55上書きモードになってるんじゃないかな。
Insertキーで挿入モードに切り替わるよ。
0130デフォルトの名無しさん
2005/11/22(火) 09:45:10トンクスです
0131デフォルトの名無しさん
2005/11/22(火) 10:50:02それで作ったhoge.exeを他のpcに持っていって実行すると、MFC71.dllとmsvcr71.dllがないと怒られて実行できません。
仕方がないので、MFC71.dllとmsvcr71.dllをコピーしてやったら実行できました。
こういうのっておそらくうまい処理の仕方があると思うのですが、どうやるのでしょうか?
ご教授のほどよろしくお願いします。
0132デフォルトの名無しさん
2005/11/22(火) 10:51:380133デフォルトの名無しさん
2005/11/22(火) 11:08:530134デフォルトの名無しさん
2005/11/22(火) 12:20:41参照できるサイトありますか?わかる人いますか?ヒントください><
もう三ヶ月悩んでます、助けて
馬鹿な為ほんとプログラムわからないんです
0135デフォルトの名無しさん
2005/11/22(火) 12:31:57プロジェクトメニュー → プロパティ → MFCの使用「スタティック ライブラリでMFCを使用する」
Standard版にもスタティックライブラリが使えたかどうかは不明・・・
0136デフォルトの名無しさん
2005/11/22(火) 12:34:06日本語でおk
0137デフォルトの名無しさん
2005/11/22(火) 12:55:13>その4点の一番大きい値から小さい方へいく
なにが行くのかね。
0138137
2005/11/22(火) 12:56:48http://pc8.2ch.net/test/read.cgi/tech/1132102992/285
0139134
2005/11/22(火) 16:36:430140デフォルトの名無しさん
2005/11/22(火) 16:41:27小学校からやり直せ。
0141デフォルトの名無しさん
2005/11/22(火) 18:47:58135の方法で静的リンクにするのが嫌なら131で言った元の状態で良い。
mfc71.dllやmsvcr71.dllはEXEと一緒に再配布できる(というよりしなければならない)。
(そのままEXEと同じフォルダに置いておくこと)
0142デフォルトの名無しさん
2005/11/24(木) 21:59:24・Winsock
・MFCのCAsyncSocketクラス
の2つがあるとわかりました(違ったらごめんなさい・・・)
初心者はどちらを使用して勉強したほうがよいのでしょうか?
0143デフォルトの名無しさん
2005/11/24(木) 22:00:280144デフォルトの名無しさん
2005/11/24(木) 22:02:440145デフォルトの名無しさん
2005/11/24(木) 23:00:020146デフォルトの名無しさん
2005/11/24(木) 23:02:220147デフォルトの名無しさん
2005/11/25(金) 01:54:54座標指定をすることは可能ですか?
0148デフォルトの名無しさん
2005/11/25(金) 06:14:460149デフォルトの名無しさん
2005/11/25(金) 07:34:59WinSock or WinSock2
0150デフォルトの名無しさん
2005/11/25(金) 08:05:370151デフォルトの名無しさん
2005/11/25(金) 09:14:13http://www.kt.rim.or.jp/~ksk/wskfaq-ja/articles/csocket.html
0152デフォルトの名無しさん
2005/11/25(金) 11:33:560153デフォルトの名無しさん
2005/11/25(金) 20:37:53MFCでスレッドを使ったプログラム書いています。
DialogAppを書き換えたものでプログラム自体はWndクラスとAppクラスのみで動いてます。
そいでCXXApp::InitInstance()にてWindowを生成
生成後に
m_pThread = ::AfxBeginThread(ThreadProc, this) ;
AutoDeleteはfalseに設定
見たいな感じでスレットを開始しています。
呼び出されたスレッドでは
UINT CXXApp::ThreadProc(LPVOID pParam)
{
CXXApp*pApp = (CXXApp*)pParam ;
CWnd* pWnd = pApp->m_pMainWnd ;
while(pApp->m_isActive == true)
{
pWnd->SetWindowText(FPSの数値) ; //ここが問題の場所です。
描画処理
}
return 0 ;
}
これでとりあえずは意図した動作はしているのですが
閉じるときにAssertErrorが出てしまいます。
プログラムを閉じる際にExitInstanceにてループしながらスレッドの終了を待つように
しています。実際エラーは、スレッドが終える前に起きています。
SetWindowTextをコメントアウトすると出なくなるのでどうやらこれが問題みたいです。
その他の関数は問題ないみたいなんですがこれだけがどうしてもわからないです。
なにか特別な事が必要なんでしょうか?よろしくお願いしまう。
0154デフォルトの名無しさん
2005/11/25(金) 20:51:490155デフォルトの名無しさん
2005/11/25(金) 20:53:040156デフォルトの名無しさん
2005/11/25(金) 21:24:23移動します。
>>155
そうでした。良く見たらソースと行数が書いてありました。
0157デフォルトの名無しさん
2005/11/25(金) 23:09:19>153が使うと、常に「あんたの頭」と表示されるとか?
0158デフォルトの名無しさん
2005/11/25(金) 23:15:44かなり基本的で申し訳ないのですが・・・。
空のプロジェクトを作成し、リソースビューから「追加」→「リソースの追加」→「ダイアログ」としました。
ダイアログ作成画面になったのですが、ツールボックスのダイアログエディタを見ると、
「ポインタ」しかなく、ボタン、チェックボックス、などが全て灰色表示で選択でません。
何か根本的に間違っている気がしますが・・・よろしくお願いします。
0159デフォルトの名無しさん
2005/11/25(金) 23:42:380160158
2005/11/26(土) 00:08:24きちんとボタンなどを貼り付けることができました。
プロジェクト作成時に何か設定ミスったのかもしれません。
もういちど作り直してみます。
0161158
2005/11/26(土) 00:12:43新しく空のプロジェクトを作成すると、正常に動きました。
少々気持ち悪いですが、とりあえずはこのまま行って見ようと思います。ありがとうございました。
0162デフォルトの名無しさん
2005/11/27(日) 13:08:32使ってるの環境はVC++6.0 SP6です。
#include<stdio.h>
int main(int argc, char *argv[])
{
printf("引数の数は%d個です。\n",argc);
printf("引数の値\n");
for(int i=0; i < argc; i++)
{
printf("%d %s\n",i, argv[i]);
}
return 0;
}
上のプログラムがコンパイル通りません。
forの中で int i と宣言してるのが嫌らしいのですが、できるはずですよね?
ためしにforの外でint i;
を宣言して、
int main(int argc, char *argv[])
{
int i;
(略)
for(i=0; i < argc; i++)
(略)
}
としたらちゃんと通りました。forの中でintを宣言するのは今まで何度もやってきたのですが、
今回にかぎってなぜかだめらしいのです。理由を教えてください。
0163デフォルトの名無しさん
2005/11/27(日) 13:26:520164デフォルトの名無しさん
2005/11/27(日) 13:33:53Σ(゚Д゚)
それで解決した。
そうか、、、for内で宣言できるのはC++からの仕様なんですか。
C++大学の授業とかでやって、最近Cをやりはじめたんでごちゃごちゃですorz
0165デフォルトの名無しさん
2005/11/27(日) 13:39:49forの初期化式での宣言はC99からの仕様
.cのままでやりたいなら、gcc使ってるなら -std=c99 でできる
他はシラネ
0166デフォルトの名無しさん
2005/11/27(日) 13:47:460167デフォルトの名無しさん
2005/11/27(日) 13:55:21スコープ外でも使えちゃう親切仕様☆
0168デフォルトの名無しさん
2005/11/27(日) 14:17:47使えてねーじゃん>>162
0169デフォルトの名無しさん
2005/11/27(日) 14:18:09それバグだろw
0170デフォルトの名無しさん
2005/11/27(日) 14:56:050171デフォルトの名無しさん
2005/11/27(日) 15:52:330172デフォルトの名無しさん
2005/11/27(日) 16:55:26どうすればよいでしょうか。やさしいお兄ちゃん教えて。
0173デフォルトの名無しさん
2005/11/27(日) 18:55:180174デフォルトの名無しさん
2005/11/27(日) 21:48:52ARMではそれが正しかったのさ。
0175デフォルトの名無しさん
2005/11/28(月) 00:54:13Visual C++ 6.0をインストールしようとするのですが、いつも
「インストールは正常に終了しませんでした」
となりインストールが実行されません。
OSはMe、MDAC2.8もインストールして必要なものは
揃っていると思うのですが何が原因なんでしょうか
0176デフォルトの名無しさん
2005/11/28(月) 01:02:210177175
2005/11/28(月) 01:13:41制限ユーザというのついてはよく分かりません。
6.0でも料金が発生したりユーザ登録が必要なのでしょうか?
それと、「インストールが・・・」ではなく「セットアップが・・・」でした
0178デフォルトの名無しさん
2005/11/28(月) 01:21:45空きメモリは足りてる?
そのメッセージが出る一つ前の操作は何をやったの?
0179175
2005/11/28(月) 01:31:07使用承諾契約に同意したあとにいつも終わってしまいます。
再インストールや再起動も何度かしましたが変わりありません。
メモリは足りています
0180デフォルトの名無しさん
2005/11/28(月) 06:00:180181デフォルトの名無しさん
2005/11/28(月) 07:07:330182デフォルトの名無しさん
2005/11/28(月) 08:50:09初耳だな
>>177
ダウン元のサイトってどこ?
0183デフォルトの名無しさん
2005/11/28(月) 14:52:19もうインストゥールできたから
おまえらなんかに用はないよ
プギャ
0184デフォルトの名無しさん
2005/11/28(月) 23:40:170185デフォルトの名無しさん
2005/11/29(火) 11:42:38偶然セブンイレブンでB.Bって漫画読んだけど、大人がママのおっぱいをしゃぶるシーンがあった。
0186デフォルトの名無しさん
2005/11/30(水) 03:48:580187デフォルトの名無しさん
2005/11/30(水) 10:35:38予めリダイレクトするファイルを指定することはできませんか?
プロレクトのオプションで引数を指定することはできたのですが・・
例えば生成された実行ファイルが TEST.exe のとき,「!」ボタンを押すことによって
TEST < data.dat
を実行したいのです.
0188デフォルトの名無しさん
2005/11/30(水) 10:36:22×プロレクト
○プロジェクト
0189デフォルトの名無しさん
2005/11/30(水) 10:51:17VC.NETなら、プロジェクト→プロパティ→コマンド引数に"< data.dat"
0190デフォルトの名無しさん
2005/11/30(水) 17:59:03返信ありがとうございます.
できました!
0191デフォルトの名無しさん
2005/12/01(木) 09:27:19将来、このファイルを64bitOSでも正しく開けるようにしたいんです。
どのように保存したら良いでしょうか?
0192デフォルトの名無しさん
2005/12/01(木) 09:41:04OS変わるとファイルが読めなくなるんだ
へー
0194191
2005/12/01(木) 09:49:340195デフォルトの名無しさん
2005/12/01(木) 10:10:172000年問題みたいだね
へーへー
見ものだね
へーへーへー
0196デフォルトの名無しさん
2005/12/01(木) 10:51:53OSでintサイズが変わるわけではない。
コンパイラの種類やそのオプションで決まる。
0197デフォルトの名無しさん
2005/12/01(木) 11:02:064バイトintでも2バイトintでも、好きなもので書き込めばいいだろう。
読む方は必要なだけ読むようにプログラミングすればいいだけだ。
何れにしろ、int型のサイズで制限されることはない。
0198デフォルトの名無しさん
2005/12/01(木) 12:01:310199191
2005/12/01(木) 12:31:03って事ですね
ありがとうございました
0200デフォルトの名無しさん
2005/12/01(木) 19:02:000201デフォルトの名無しさん
2005/12/01(木) 20:24:160202デフォルトの名無しさん
2005/12/01(木) 23:28:070203デフォルトの名無しさん
2005/12/02(金) 10:25:310204デフォルトの名無しさん
2005/12/02(金) 10:31:530205デフォルトの名無しさん
2005/12/03(土) 11:06:29Platform SDKはSDK、インストールして使う。
0206デフォルトの名無しさん
2005/12/04(日) 02:29:39http://www.kumei.ne.jp/c_lang/index_sdk.html
ここ見てWindowsプログラム練習してみようとおもったら、
イントロダクションのサンプルがいきなりコンパイル通らない。
ここ古くて使えませんか?
お勧めなサイトとかあったら教えてください。
0207デフォルトの名無しさん
2005/12/04(日) 02:31:42ビルドエラーを表示するウィンドウ左下にあるタブ「タスク一覧」を
押しても無反応になるんですが、これMSのバグ??
環境はWindows2000で.net 2003。
XPの場合は全く起こらない気がする。
再インストール何回かしてるんだけど、しばらくするとこの症状が起こる...
0208207
2005/12/04(日) 02:34:15再インストール → システムのリストア
リストア後はもちろん症状治るけど、しばらくすると再発するって意味です。
0209デフォルトの名無しさん
2005/12/04(日) 02:46:04http://www.kumei.ne.jp/c_lang/setvc.htm
0210デフォルトの名無しさん
2005/12/04(日) 10:59:43かろうじてコマンドラインではコンパイルして実行することはできたんですが、VC++本体では操作がさっぱりわかりません。
比較的単純なファイルをコンパイルして実行するだけなので、そこらへんの操作の仕方が書いてあるサイトあれば教えていただけないでしょうか?
もしなければ教えていただければ幸いです。
どなたかお願いします。
0211デフォルトの名無しさん
2005/12/04(日) 12:17:570212デフォルトの名無しさん
2005/12/04(日) 12:22:330213210
2005/12/04(日) 12:50:19インストールする前の状況にしたいのですが、
アンインストールはFramework等も行ったほうが良いでしょうか?
0214デフォルトの名無しさん
2005/12/04(日) 12:52:13諦めが早いな。
0215デフォルトの名無しさん
2005/12/04(日) 13:12:250216210
2005/12/04(日) 13:29:45でも、めっちゃ汚してる気がするなぁ。
0217デフォルトの名無しさん
2005/12/04(日) 16:42:270218210
2005/12/04(日) 16:59:56初心者に教えるスレなんだからさぁ。
0219デフォルトの名無しさん
2005/12/04(日) 17:12:28ベータ版落としたんだけど
どっかサイト教えて
↑
こいうのはマジ死んでほしい。
本ぐらい買って勉強しろよ
0220210
2005/12/04(日) 17:15:410221デフォルトの名無しさん
2005/12/04(日) 17:22:34ここがどこだか理解した上での発言かな?
0222デフォルトの名無しさん
2005/12/04(日) 17:29:300223210
2005/12/04(日) 17:41:42もしかして超初心者スレで聞くべきだったんですか?
0224デフォルトの名無しさん
2005/12/04(日) 17:45:010225デフォルトの名無しさん
2005/12/04(日) 18:37:54cout.writeってもしかしてwin32上では使えないんですか?
0226デフォルトの名無しさん
2005/12/04(日) 18:57:490227デフォルトの名無しさん
2005/12/04(日) 19:34:16あれ?ほんとっすか?
consoleでは問題ないんですけどwinmainで始まる奴だと
空っぽのままです。
0228デフォルトの名無しさん
2005/12/04(日) 20:29:280229デフォルトの名無しさん
2005/12/04(日) 20:54:570230デフォルトの名無しさん
2005/12/04(日) 20:55:17LPTSTR lpBuf = _T("") ;
std::cout.write(lpBuf, 0) << _T("Test") << std::flush ;
Consoleアプリならちゃんと"Test"がlpBufに入ってるんですけど
MFC等やその他winmainから始まる奴だとlpBufは空のままで
その後SetWindowText(hWnd, lpBuf)やその他いろいろやってみたんですが
文字が所得で来ていませんでした。
なにか別に必要なことでもあるのかと思っていろいろ探してみたんですが
やってる人がいないみたいなのでわからんです。
0231デフォルトの名無しさん
2005/12/04(日) 21:42:050232デフォルトの名無しさん
2005/12/04(日) 21:50:24CPUが変わるとエンディアンの問題が出るよね。
0233デフォルトの名無しさん
2005/12/04(日) 22:00:110234デフォルトの名無しさん
2005/12/04(日) 22:22:400235デフォルトの名無しさん
2005/12/04(日) 22:58:51コンソールアプリ以外では闇に葬り去られる。
というのは嘘で,あらかじめ自分でリダイレクトして置けばstd::coutへの出力は捕獲できる。
それは面倒だから普通はstd::ostringstream(std::basic_ostringstream<TCHAR>)を使う。
0236デフォルトの名無しさん
2005/12/04(日) 22:59:46「読めない」の定義にもよるかな。
0237デフォルトの名無しさん
2005/12/04(日) 23:48:49出来たー!ありが�d!
0238コンパイルどーてー
2005/12/04(日) 23:52:01ウインドウプロシージャに書いているみたいですが
どちらでもいいのですか?
それとも利点があるのですか?
私の書いてる事じたいが、おかしな事でしたらスルーしてください
0239デフォルトの名無しさん
2005/12/05(月) 01:37:560240デフォルトの名無しさん
2005/12/05(月) 05:06:27ここ池
http://pc8.2ch.net/test/read.cgi/tech/1131884991/
0241デフォルトの名無しさん
2005/12/05(月) 06:08:540242デフォルトの名無しさん
2005/12/05(月) 06:46:54自分は、大きいプログラムでstatic変数を
使いたくないときは、メイン部分(非プロージャー部分)に書いて、
テスト用とか、小さいプログラムの時はプロージャーに書いている。
0243デフォルトの名無しさん
2005/12/05(月) 06:53:010244デフォルトの名無しさん
2005/12/05(月) 08:09:420245デフォルトの名無しさん
2005/12/05(月) 08:31:480246デフォルトの名無しさん
2005/12/05(月) 08:51:290247デフォルトの名無しさん
2005/12/05(月) 08:52:500248デフォルトの名無しさん
2005/12/05(月) 08:58:34ttp://www.sas.com/offices/asiapacific/japan/periodicals/technews/pdf/5-2.pdf
0249コンパイルどーてー
2005/12/05(月) 22:24:35レスさんきゅーでつ
つまり、好みしだいって事かな
入門書また読み直しまつ
0250デフォルトの名無しさん
2005/12/06(火) 21:45:06VC6のSP6を使っているのですが、
const float PI = 3.14159;
float fHoge, fHuga;
〜略〜
float fPugya = ((2.0f * PI * fHoge / fHuga) / (60.0f * 75.0f)) * 1.5f;
みたいなコードを、最適化をかけるとどんなアセンブリコードになってるのか
確認して最適化の勉強をしようと思ったのですが、
デバッグでアセンブリコードを見れるようにして、なおかつ
リリースビルドと同じような最適化をかけてビルドするというのが
どうやればいいのかわかりません。
実行速度優先の最適化を選択し、なおかつデバッグのオプションをつけた構成で
ビルドしようとすると、/GZと/O2を一緒には指定できませんとか言われたので
カスタマイズの最適化でグローバルの最適化や最大限の最適化を外すと
ビルドできたのですが、アセンブリコードを見ても、上記の部分は最適化無しと
同じものでした。
ビルドのオプションの設定の仕方が悪いのか、それともfloatは最適化がかからないとか
そういった理由なのか、よくわからないのでどなたか教えて頂けませんでしょうか。
よろしくお願いします。
0251デフォルトの名無しさん
2005/12/06(火) 22:05:590252デフォルトの名無しさん
2005/12/06(火) 22:21:23デバッグのオプションとは別にアセンブリコードをはくだけのオプションがあるはず。
0253デフォルトの名無しさん
2005/12/06(火) 22:23:43あ、リリースビルドでも見れるのは見れるんですね、
知りませんでした・・・(;´Д`)
でもブレークポイントの設定等ができないのですが、
これは最初から追っていくしかないということでしょうか?
0254デフォルトの名無しさん
2005/12/06(火) 22:25:40デバッグしたいのなら兎も角、アセンブリ出力を見たいだけなら出力の設定だけ変えてReleaseビルドでよかろう。
0255デフォルトの名無しさん
2005/12/06(火) 22:30:27Releaseビルドでもブレークポイントは張れると思うけど。
#但し、最適化の影響で順序は変わるし行は消えるしで、あまり意味はないけど。
0256250=253
2005/12/06(火) 22:34:41色々試してみます、どうもありがとうございました。
0257デフォルトの名無しさん
2005/12/06(火) 22:37:470258デフォルトの名無しさん
2005/12/06(火) 22:40:020259デフォルトの名無しさん
2005/12/06(火) 22:43:550260250
2005/12/06(火) 22:50:38かなりの回数のループになると思ったので、速いか遅いかを完全に無視という
わけにはいかないので、今のうちから最適化されたコードを
ブレークポイント置いて確認する方法を知りたいと思ったのです。
説明が足りなくてすみません。
問題のコードだけ十行くらいで書いてビルド、というのもありかもしれませんが
恐らくそれでは実際にゲームの中で書いてビルドした場合とかなり異なると
思ったのです。だからブレークポイント置いて、そのコードがどうなるか
知りたいのです。
0261デフォルトの名無しさん
2005/12/06(火) 22:50:45交通工学分野で、料金所混雑について調べています。
料金所利用車を、ETC利用車と人による料金支払いをする車に分けて、後者の車による渋滞にETC利用車が
巻き込まれる事象をシミュレートしたいと思っています。
到着率やETC普及率を変化させ、車の平均滞在時間がどのように変化してゆくのかを調べるために、プログラム
を書こうとしているのですが、Visual C++で表現できるのでしょうか?
滞在時間を2次元のグラフィックで表したいのですが。
0262デフォルトの名無しさん
2005/12/06(火) 22:57:270263デフォルトの名無しさん
2005/12/06(火) 22:58:12出来る出来ないでいうなら出来る
後はおまい次第。研究なら自力でがんがれ
ところで交通工学って学部的には何処になるんだ?
0264デフォルトの名無しさん
2005/12/06(火) 22:59:16[リンカ]->[デバッグ情報の生成]を[はい]に。
適当にブレークポイントを設定して実行。
[デバッグ]->[ウインドウ]->[混合モード]で機械語が表示される。
0265デフォルトの名無しさん
2005/12/06(火) 23:00:290266デフォルトの名無しさん
2005/12/06(火) 23:03:21待ち行列理論を勉強してて、理論構築はできるのですが
プログラムが書けなくて、、
確かに、研究なので自力でやるべきです。
0267デフォルトの名無しさん
2005/12/06(火) 23:03:26よほどの事情があるんだろう
0268250
2005/12/06(火) 23:17:32なるほど、出来ました!
どうもありがとうございました。
でも10行くらいブレークポイント入れてみましたが
全部「設定できませんでした」になりました・・・
全然違うコードになってしまうのですかね(;´Д`)
ともあれ色々試してみて勉強します。
教えてくださった皆様どうもありがとうございましたm(_ _)m
0269デフォルトの名無しさん
2005/12/06(火) 23:23:56・最適化されたコードのアセンブリ出力を読みたい
・最適化されたコードのデバッグをしたい
では全然話が違うぞ。
後者を本格的にやりたかったらICEに頼らないといけないと思うし。
0270デフォルトの名無しさん
2005/12/06(火) 23:24:02アウトオブオーダーとかやっちゃういまのCPUでは勉学のため
参照にする程度ならともかく、手作業での最適化は難しいでしょう。
どうしても少しでも高速化したいならIntel最適化コンパイラの
導入を検討するか、並列化可能ならばSSE2等を使用するのが
現実的な選択肢かと。
0271デフォルトの名無しさん
2005/12/06(火) 23:32:12これに、最適化のしようが無いと思われるが。
0272デフォルトの名無しさん
2005/12/06(火) 23:41:400273デフォルトの名無しさん
2005/12/06(火) 23:45:14テーマが見つかったのはいいんですが、プログラム書くのにつまずいて、
先が見えなくなったので、何か助言をもらいたくてきました。
0274デフォルトの名無しさん
2005/12/06(火) 23:51:21まずは、コンソールアプリケーションから作るのがよいのでは?
0275250
2005/12/07(水) 00:05:29誤解されやすかったですね、明確な説明でなくてすみませんでした。
目的は前者です。
デバッグの方は、いつも最適化無しのデバッグビルドでやってますし、
今後もそれで問題ないと思います。
>>270
なるほど〜・・・CPUの高速化技術とかは聞いた程度にしか
知らなかったので、あまり深く考えていませんでした。
なるべく、「意味がわかりやすいけど遅くならない」コードが書ければ、と
常々思っていたのですが、そのためにはそういうことを扱った
サイトを見た方がいいですかね。SSE2等もいずれ使ってみますm(_ _)m
>>272
ありがとうございます!
今回、float fPugya =の行のように書いて、
整数の定数がまとまることは知っていたのですが浮動小数点数でも
そうなるのか不安があったので、調べるついでに高速化の勉強のため・・・とか思って
質問しました。でもそう簡単にアセンブリコードを見てわかるものでは
ないのですね・・・・。アプローチを変えて勉強してみます。
0276デフォルトの名無しさん
2005/12/07(水) 00:06:00プロファイラ使って最適化したほうがいいと思うぞ
0277デフォルトの名無しさん
2005/12/07(水) 00:17:29>全部「設定できませんでした」になりました・・・
まさかCのコードにブレーク設定してるとか
0278デフォルトの名無しさん
2005/12/07(水) 00:22:05Windowsアプリケーションとの違いがあるのですか?コンソールアプリケーション
を用いる利点がいまいち分からないのですが、、
0279274
2005/12/07(水) 00:38:41コンソールアプリケーションはCやC++の言語の知識だけで作れる。
WindowsアプリケーションはCやC++の言語、それにWindowsの知識(APIやらMFCやら)
が必要。そういうことです。
まずは、CやC++の言語の知識を取得してコンソールアプリケーションをつくる。
Windowsではコンソールアプリだけでは物足らなくなるでしょうから、CやC++
の言語の知識を習得したら、APIやらMFCやらの勉強をしてWindowsアプリを作るのが
良いのではないでしょうか?
>>278さんがCやC++の言語の知識をすでに習得しているのであれば、Windowsアプリを
いきなり作っても良いです。
0280デフォルトの名無しさん
2005/12/07(水) 01:10:270281デフォルトの名無しさん
2005/12/07(水) 01:13:12>>279が書いてくれてるように、GUIアプリとCUIアプリじゃ
必要とされる知識レベルが数段違う
0282デフォルトの名無しさん
2005/12/07(水) 01:13:56他のプログラムがアクティブになっている状態で
Ctrl+Aなどで一定のキーボード操作を自動で行う。
というソフトを作りたいのですが、JavaとC++とどちらが簡単にできそうですかね?
Javaで作ろうと試みてみたのですが
「他のプログラムがアクティブになっている状態で」という機能が困難なため
C++で作り直すか迷っています。。
0283デフォルトの名無しさん
2005/12/07(水) 01:33:22>Ctrl+Aなどで一定のキーボード操作を自動で行う。
ここんとこがいまいち不明。とくに「自動」ってところ。
何をきっかけにCtrl+A(=全選択)を自動で行うの?
0284デフォルトの名無しさん
2005/12/07(水) 02:21:58Java/C++関係なくフォーカスのないウインドウはキーボードイベント
取得できないでしょ。
本気でやりたいならドライバ書くしかないんじゃ?
0285284
2005/12/07(水) 02:28:040286デフォルトの名無しさん
2005/12/07(水) 02:39:27Bがアクティブになっている状態で、AがBに対してCtrl+Aを
送るってことでは?
0287284
2005/12/07(水) 02:52:25自作アプリから任意のキー操作を発行するってことだと理解した。
0288デフォルトの名無しさん
2005/12/07(水) 03:10:05APIならWM_SETHOTKEYあたりじゃないかな。自分は使ったことないけど。
0289デフォルトの名無しさん
2005/12/07(水) 07:38:410290デフォルトの名無しさん
2005/12/07(水) 08:49:21最近VC++が楽しくなってきました
0291デフォルトの名無しさん
2005/12/07(水) 12:09:440292282
2005/12/07(水) 15:38:18>>283
別に処理開始のタイミングを決めるだけなんでキーはなんでも良いです。
>>284,285
常駐プログラムなら他のアプリケーションがアクティブになっている状態でも
処理開始のタイミングを伝えられるかと思ったんですが、無理ですかね?
>>286
ブラウザで一定の処理をしたいんですけど
ブラウザにメッセージを送っても、ブラウザを変更するほど技術がありません・・・
>>287
そういう事になりますね。
>>288
WM_SETHOTKEYは自プログラムをアクティブにするだけなんで
とあるキーを押したらブラウザで処理というのは難しそうです。。
>>289
NO!
>>290
これからも頑張ってください。
0293デフォルトの名無しさん
2005/12/07(水) 19:16:49とりあえず、次の条件のとき、
CSimpleArray<CAtlString> strArray ;
配列の3番目をwatchしたいときに、入力フィールドどう記述したらいいですか?
strArray[3]
こんなふうにしてみましたダメでした。。。
0294デフォルトの名無しさん
2005/12/07(水) 19:24:120295デフォルトの名無しさん
2005/12/07(水) 20:27:030296デフォルトの名無しさん
2005/12/07(水) 20:41:090297デフォルトの名無しさん
2005/12/07(水) 20:46:03こんな事したいんだけど、どうやって記述したらいいの?
0298デフォルトの名無しさん
2005/12/07(水) 20:51:550299デフォルトの名無しさん
2005/12/07(水) 20:53:12CSimpleMap<LPTSTR, CSimpleArray<LPTSTR> > map;
>>と書くと現在のC++の仕様上右シフト演算子と解釈されてしまう。
typedefを使って回避する方法もある。個人的にはこっちがお薦め。
typedef CSimpleArray<PTSTR> PTStrArray;
CSimpleMap<LPTSTR, PTStrArray> map;
0300デフォルトの名無しさん
2005/12/07(水) 20:55:200301デフォルトの名無しさん
2005/12/07(水) 21:35:540302デフォルトの名無しさん
2005/12/07(水) 21:39:12「>>」の演算子疑って「> >」こんなふうにもしてみたんだけど、ダメだったもんで
違う問題化と思ってた。。。
ありがとう!!!
0303デフォルトの名無しさん
2005/12/07(水) 23:02:130304デフォルトの名無しさん
2005/12/08(木) 02:27:120305デフォルトの名無しさん
2005/12/09(金) 15:12:32>>187と同じような質問なんですが、
標準入力のリダイレクトができません。
デバッグで開始すると、
「プログラムを開始できません。
出力をリダイレクトできません。指定されたファイルが無効です。」
と表示されます。
>>189にあるように、コマンド引数に < test.dat
と書いているんですが、
何か他に設定するべき所とかあるのでしょうか?
0306デフォルトの名無しさん
2005/12/09(金) 17:11:48<でのリダイレクトはコマンドプロンプトが行っているのであり、Windowsの機能ではない。
だからコマンドライン引数に指定してもリダイレクトはできない。
だからほかの方法を考えろ。たとえばfreopen(stdinとかさ。
0307デフォルトの名無しさん
2005/12/10(土) 15:14:48ビルドも上手く行って思った通りに動いているソースがあるんですが
これをステップインでデバッグしてみるとfopen.cやfprintf.cなどの
標準ライブラリの関数のソースのパスを入力しろというダイアログが出てきてエラーになってしまいます。
回避するにはどうしたらいいんでしょうか?
0308デフォルトの名無しさん
2005/12/10(土) 15:50:140309デフォルトの名無しさん
2005/12/10(土) 16:39:390310デフォルトの名無しさん
2005/12/10(土) 17:34:00エラーにはならない。
ちゃんとfprintf()の中もデバッグできる。
#ただし混合モードで。
0311デフォルトの名無しさん
2005/12/10(土) 18:13:37エラーでもなんでもなかった。
関数の中の処理を飛ばしたければステップオーバー使うってことですね。
0312デフォルトの名無しさん
2005/12/11(日) 01:37:04卒研のためVC++.NETを研究室で購入してもらう事になりました。
で、VC++.NETでWebアプリケーション(ホームページに載せて動かす)を作りたく、
入門書を立ち読みしたりネットで勉強しようと思ったのですが、どれもWindowsプログラムの事は書かれているのですが
Web上で動かす方法については見つけることが出来ません・・・。
ホームページ上でプログラムを動かす勉強をするのにオススメな書籍やサイトがあれば教えていただきたいです。
ちなみに目的のプログラムはコマンドプロンプト上で動くものを作るのは成功し、
あとはそれをWeb上で動かせるようにしたい、という状況です。
0313デフォルトの名無しさん
2005/12/11(日) 01:51:41apacheとかのサーバープログラムをセットアップすれば
目標が達成される気が…
0314伝説新人タクシ
2005/12/11(日) 02:09:430315デフォルトの名無しさん
2005/12/11(日) 02:33:53CGIってことなら細かいことは忘れたがヘッダはき出すようにすればいいだけだろ
XMLサービスって事ならシラネ。まぁググれば大量に出てくるだろ
つーか卒研するぐらいならこれぐらい自力で調べるとか教授に聞くとか出来るだろ
もし教授がそういうのやってないなら自分所の情報系の学部・学科の教授捕まえるなり
メールするなりして聞くとかさ
0316デフォルトの名無しさん
2005/12/11(日) 03:50:46http://pc8.2ch.net/php/
0317デフォルトの名無しさん
2005/12/11(日) 08:33:270318デフォルトの名無しさん
2005/12/12(月) 19:59:480319デフォルトの名無しさん
2005/12/12(月) 22:29:440320デフォルトの名無しさん
2005/12/12(月) 23:20:500321デフォルトの名無しさん
2005/12/12(月) 23:43:58VC++.NET2003 でVBなどから参照できるクラスライブラリ作成しております。
基本的には機嫌良く動いているのですが、同じクラスライブラリ内のクラスを
継承した派生クラスでデストラクタを記述しようとするとエラーが出ます。
継承関係のないクラスのデストラクタは成功します。
中身を空にしたりvirtual や void を付けたり取ったりしても同じです。
また普通にFormのプロジェクト内で作成したクラスの継承では問題ありません。
error LNK2001: 外部シンボル ""void __cdecl __CxxCallUnwindDtor(void
(__thiscall*)(void *),void *)" (?__CxxCallUnwindDtor@@・・・・)" は未解決です。
クラスライブラリ内で継承したクラスにデストラクタをつけるにはどうしたらいいでしょうか?
0322デフォルトの名無しさん
2005/12/13(火) 08:03:54VB.NETやC#用の資料を見ろ。それを元にVC++.NETに置き換えろ。
文法が違うだけで、使用するフレームワークは同じなんだから、それで十分だろ。
それも出来ないようなら、中学校からやりなおせ。
0323323
2005/12/13(火) 11:36:07よろしければお願いします。
環境はWinXP・VC++6.0です。
IEコンポーネント(CWebBrowser2)をフォームに表示し
それを編集モードにしたいと思っています。
ttp://www.nitoyon.com/vc/tips/ie_component.htm
こちらを参考にしてサンプルソースをDLし、
put_designModeで編集モードに出来ることは確認できました。
自分はMFCAppウィザードで作ったSDIのプログラムで
同様の事を行いたいのですがうまくいきません。
サンプルではWinMainでAtlAxDialogBoxを使ってダイアログを表示していて
どうも自分がこれを使ってないことが原因のひとつに考えられるのですが
WinMainが無いプログラムの場合、AtlAxDialogBox、あるいは
それに変わる処理というのは何処で記述すればいいでしょうか?
よろしくお願いします。
0324323
2005/12/13(火) 11:36:32BOOL CXXXXView::PreCreateWindow(CREATESTRUCT& cs)
{
_Module.Init(0, cs.hInstance);
AtlAxWinInit();
return CFormView::PreCreateWindow(cs);
}
void CXXXXView::FuncA(){
CWnd* pIE = (CWnd *)GetDlgItem(IDC_EXPLORER1);
if (pIE == NULL) return;
// コントロールのハンドルを得る
HWND hWnd = pIE->GetSafeHwnd();
// 使えるかどうかチェック
if (hWnd != NULL && ::IsWindow(hWnd) != 0) {
CComPtr<IUnknown>punkIE;
if (AtlAxGetControl(hWnd, &punkIE) == S_OK){
CComQIPtr<IWebBrowser2> pWB2 = punkIE;
if(pWB2 != NULL){//ここにNullが入ってきてしまう
CComPtr<IDispatch> pDisp ;
pWB2->get_Document( &pDisp) ;
CComQIPtr<IHTMLDocument2> pDoc = pDisp ;
pDoc->put_designMode(L"On");
}
}
}
}
0325デフォルトの名無しさん
2005/12/13(火) 12:33:220326デフォルトの名無しさん
2005/12/13(火) 15:27:43ツリーコントロールの『プロパティ』→『拡張スタイル』→『ドラッグドロップを許可』にチェックを付けたのですが、
ドラッグ出来ず、OnBegindragのイベント内にも入ってきてくれません。
環境は
WindowsXP Home
VC++6.0
です。
どうかよろしくおねがいします。
0327デフォルトの名無しさん
2005/12/13(火) 19:12:33自分で実装
0328デフォルトの名無しさん
2005/12/13(火) 19:22:18MFCじゃないかもしれないな
気になるけど時間ないからまた来週来ます。
0329321
2005/12/14(水) 17:29:11すいませんでした。
マネージドやってる人、少ないのか・・・orz
0330デフォルトの名無しさん
2005/12/14(水) 18:02:340331デフォルトの名無しさん
2005/12/14(水) 18:12:28重い○
0332デフォルトの名無しさん
2005/12/14(水) 23:30:460333デフォルトの名無しさん
2005/12/16(金) 00:36:45HOGE.h / HOGE.cpp で定義されている関数 Hoge() を、
複数のプロジェクトで使いまわすことを考えています。
ヘッダの方は、HOGE.h を適当な場所に置き、
ツール→オプション→Projects→インクルードファイル でそのフォルダを追加すれば、
後はプロジェクトの適当なソースファイルで #include "HOGE.h" とすればOKです。
cpp ファイルはどうすればよいでしょうか?
ツール→オプション→Projects→ソースファイル で、HOGE.cpp をおいたフォルダを指定してみましたが、
プロジェクトをビルドすると、HOGE() の定義が見つからず、リンクエラーが起きてしまいます。
現状では、プロジェクトごとに、ソリューションエクスプローラにて HOGE.cpp を追加しています。
使いまわせているといえば言えるのですが、プロジェクトごとにコンパイルする必要がある上に、
HOGE.cpp のようなファイルが複数ある場合、いちいち全て追加しなければなりません。
#include <stdio.h> とするだけで、printf が定義されている c ファイルを自動的に検索してくれるのを思い、
同じことが実現できるのではないかと思って質問しました。
よろしくお願いします。
0334デフォルトの名無しさん
2005/12/16(金) 00:51:51ソリューションエクスプローラのフォルダを右クリックして「既存項目を追加」なり
ソリューションエクスプローラにエクスプローラから直接D&Dするなり
0335333
2005/12/16(金) 00:58:41ありがとうございます。
>>333 にありますように、現状はその方法で行っていますが、それだといくつか問題が生じています。
他に何か方法はないでしょうか。
0336新人
2005/12/16(金) 01:42:51汎用化したいプログラムをDllのプロジェクトにしてワークスペースに追加すればいいんじゃないでしょうか?
Dllを使いたいプロジェクトの実行ファイルの直下に置けばそのDllを参照してくれます。
もちろんインクルードファイルの参照もしといてください。
0337デフォルトの名無しさん
2005/12/16(金) 06:34:30これは誤解
0338デフォルトの名無しさん
2005/12/16(金) 11:01:02>>336
別にDLLじゃなくてスタティックライブラリで委員で内科医?
デバッグビルド用とリリースビルド用を用意する必要はあるけど。
0339デフォルトの名無しさん
2005/12/16(金) 12:28:32F1キーヘルプでAPIを調べようとすると英語ヘルプが優先されてしまします。
日本語ヘルプをはじめに表示するにはどうしたらいいのでしょう?
0340デフォルトの名無しさん
2005/12/16(金) 15:43:05マルチポストはお帰りください
0341デフォルトの名無しさん
2005/12/16(金) 15:44:020342デフォルトの名無しさん
2005/12/16(金) 16:52:46class Base
{
public:
virtual func(int n){処理}
virtual func(int* p){ func(*p);} //オーバーロード
};
class Derived : public Base
{
public:
virtual func(int n){処理} //オーバーライド
};
以上のように、派生クラスのオーバーロード元のメンバ関数をオーバーライドしたとき
基本クラスでオーバーロードした関数は派生クラスで呼び出せないのでしょうか?
int* p;
〜処理〜
Derived* derived = new Derived;
derived->func(p);
↑これでコンパイルエラーが出ます。
やっぱり基底クラスでオーバーロードした関数もオーバライドしなければいけないのでしょうか?
0343デフォルトの名無しさん
2005/12/16(金) 17:24:10そんなオーバーロードなんてやるほうがおかしいからやめろ。
一応解決策を書くけどさ。
たとえばこうすればいい。
class Base
{
protected:
func_(int n) {処理}
public:
func(int n) {return func_(n);}
func(int* p) {return func_(*p);}
};
class Derived : public Base
{
protected:
virtual func_(int n) {処理} //オーバーライド
};
ほかにDerivedのpublicなところでusing Base::func;を書く方法でも
一応コンパイルは通るが、これは一時しのぎのつもりで使え。
0344デフォルトの名無しさん
2005/12/16(金) 17:24:470346デフォルトの名無しさん
2005/12/17(土) 08:04:05個人的には結構面白いサッカーゲームです。
一人用ですが。
某雑誌に掲載されてた記事
「一試合3分から楽しめる本格派サッカーゲーム。
グラフィックは簡素だが、やり込み派にはオススメしたい一本。
こだわりのカスタマイズが面白い。
簡素なグラフィックとは逆に、戦術面は細部まで作りこまれている。
システムやプレスのON/OFFから、なんと選手一人一人のポジショニングまで設定可能だ。
こだわりのチーム作りが楽しめる。」
フリーゲームなんですが、管理人がいないらしいので、
サッカー好きでプログラムのできる方居たら助けてやってください。
このゲームで対戦できたら面白いと思うので
RolePlaying Eleven
http://ime.st/www.geocities.co.jp/Bookend-Kenji/2279/
最近立った2chスレ
http://game10.2ch.net/test/read.cgi/netgame/1134392861/
0348デフォルトの名無しさん
2005/12/21(水) 04:17:58[Nullpo.h]
---------------------------
#ifndef ___Nullpo_h
#define ___Nullpo_h
namespace Nullpo {
// 宣言
void Ga();
}
#endif ___Nullpo_h
[Nullpo.cpp]
---------------------------
namespace Nullpo {
// 定義
void Ga() {
...
}
}
で、クラスビューにGa(void)が二重に表示されるんですが、なんででしょう。
0349デフォルトの名無しさん
2005/12/21(水) 21:16:58ダイアログバーを使いたいのですが、Createの
virtual BOOL Create(
CWnd* pParentWnd,
UINT nIDTemplate,
UINT nStyle,
UINT nID
);
nIDTemplateとnIDがわかりません
IDというと、リソースエディタでつけたIDD_DialogBarしかわからないのですが、
どちらがこれに当たり、もう一つには何を与えればよいのでしょうか。
0350デフォルトの名無しさん
2005/12/21(水) 22:30:49リソースビュー→Dialog→リソースの追加→Dialogを選択。
OKとキャンセルボタンがついたダイアログが出来ますが、
これをプログラム中から呼び出すと、ダイアログエディタで表示されていたOK,キャンセルボタンとは別に
OK、キャンセルボタンがもう一組表示されています。
これはなんでしょうか。また、消し方についてもお願いします。
0351デフォルトの名無しさん
2005/12/21(水) 22:41:10どっちも同じIDD_DialogBarでいいんぢゃねーか?
CDialogBar m_wndDBar;
m_wndDBar.Create( this, IDD_DialogBar, CBRS_xxx , IDD_DialogBar );
みたいな感じ
0353デフォルトの名無しさん
2005/12/22(木) 12:07:03自前でボタンを生成しているとか、ダイアログIDが混乱しているとか、そういう落ちじゃないよな。
0354デフォルトの名無しさん
2005/12/22(木) 19:17:05行をドラッグするような事はできるのでしょうか?
それとも、「アイコン」スタイルでないとできないのでしょうか?
0355デフォルトの名無しさん
2005/12/22(木) 19:44:080356デフォルトの名無しさん
2005/12/23(金) 20:21:04Ctrl+Cしたいと考えているのですが、可能なのでしょうか?
ご教授宜しくお願い致します。
UpdateData(TRUE);
CString copydata;
copydata = m_text1;
このcopydataを自動でCtrl+Cしたいと考えております。
0357デフォルトの名無しさん
2005/12/23(金) 21:25:060358デフォルトの名無しさん
2005/12/23(金) 21:38:04Ctrl+C という「アクセラレータ・キー」に機能を割り振るのは、プログラマの仕事だ。
というわけで、したい事をお好きなように……
クリップボードにテキストをコピーしたいのなら、
1) OpenClipboard(), SetClipboardData() などの標準クリップボードAPI
2) MFC の COleDataSource クラス
3) CLI では System::Windows::Forms::Clipboard クラス
のどれかを使え。
0359デフォルトの名無しさん
2005/12/23(金) 22:06:59解決しました
0360デフォルトの名無しさん
2005/12/23(金) 23:15:050361デフォルトの名無しさん
2005/12/24(土) 17:46:23ダイアログにリストビューを配置しようとしたのですが、
ツールボックスからリストビューを見つけられません。
似たようなものとして List Box、List Control があったのですが、どうも違うようです。
LVM_INSERTCOLUMN を用いてコラムを追加したり、
LVS_EX_GRIDLINES を用いてグリッドを引いてみたりしようとしてみましたが、どちらも無理でした。
Visual Studio 6.0 を使っていたころはあったのですが・・・。
.NET ではインターフェイスが違いすぎて困っています。
よろしくお願いします。
0362361
2005/12/24(土) 17:49:39自己解決です。お騒がせしました。
0363デフォルトの名無しさん
2005/12/26(月) 20:08:52Debug Asseriton Failed
Program: ***********
File: objcore.cpp
Line: 39
とエラーが出て止まってしまいます。
OnDraw関数内にはじめからある CDocumentClass* pDoc = GetDocument(); ではエラーは出ないのですが、
その他の関数中で同様に書くと、上記のエラーが出て実行できません(ビルドは通ります)。
GetDocumentは、OnDrawの中でしか使えないわけではないですよね?
よろしくお願いします。
0364デフォルトの名無しさん
2005/12/26(月) 22:00:37objcore.cppの39行目を見る気は無いわけだな
0365363
2005/12/26(月) 22:34:0940:// it better be in valid memory, at least for CObject size
41:ASSERT(AfxIsValidAddress(this, sizeof(CObject)));
すいません、見ても意味がわかりませんです…
0366デフォルトの名無しさん
2005/12/26(月) 22:36:390367363
2005/12/26(月) 22:57:30足りない知識で考えると、this==NULLとは、GetDocumentでドキュメントクラスのポインタが取得できなかったと言うことですか?
あってます?
だとしたら、それが何でかわからないのでお聞きしたかったのですが。
ビューとドキュメントの関連づけは問題ないと思います(OnDraw関数内では使えてる)。
0368デフォルトの名無しさん
2005/12/26(月) 23:00:020369デフォルトの名無しさん
2005/12/26(月) 23:00:380370デフォルトの名無しさん
2005/12/26(月) 23:07:02ドキュメントクラスのオブジェクトが作成される前に、GetDocumentしてるのでは?
OnDrawでうまくいくのはOnDrawの段階ではドキュメントクラスのオブジェクトが存
在するからではないの?
0371デフォルトの名無しさん
2005/12/26(月) 23:09:37ドキュメントクラスのコンストラクタ抜ける直前と、問題のGetDocumentに
ブレーク張って前後関係確かめたら?
0372363
2005/12/26(月) 23:26:28ビューのコンストラクタから呼んでいたので怪しいかと思い、
ご指摘のブレークポイントを設定してみました。
しかし、ドキュメントクラスのコンストラクタのほうが先に呼ばれているようです。
>>369
以後気をつけます…
0373デフォルトの名無しさん
2005/12/26(月) 23:34:09virtual void OnInitialUpdate( );
解説
ビューが初期表示される前で、ドキュメントが最初にビューに関連付けられた後にフレームワークが呼び出します。
0374デフォルトの名無しさん
2005/12/26(月) 23:36:27じゃビュークラスのコンストラクタからGetDocumentしてるとか。
この場合のthisがどのオブジェクトのポインタなのか良く知らないで
書いてるもんで・・・
詳しい人のレスを待ったほうがいいかな。
0375デフォルトの名無しさん
2005/12/26(月) 23:41:07オブジェクトが完成するのはコンストラクタ抜けた直後だよ。
0376130
2005/12/26(月) 23:45:36>ビューのコンストラクタから呼んでいたので怪しいかと思い
って思い切り書いてあった。
0377363
2005/12/26(月) 23:53:28つまり、ビューのコンストラクタの段階では関連づけされてなくて、
コンストラクタを抜けて関連づけられた後に
OnInitialUpdateが呼ばれるということですか。
OnInitialUpdateから問題の関数を呼んだらうまくいったようです。ありがとうございます。
レスをくださった皆様ありがとうございました。
0378デフォルトの名無しさん
2005/12/27(火) 06:58:44違う。
0379デフォルトの名無しさん
2005/12/28(水) 10:26:17VC6.0で動的に配列を作ると
時たま破棄するときにエラーになります。
例えば関数内で以下のようなものを書くと
Debug Assertion Failed!
Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
などと出てエラーとなってしまいます。
delete[] array;
を削除すると一応は通ります。
このようなエラーが頻発するのですが、
どのようにすれば解決するのでしょうか?
詳しい方宜しくお願いします…
int *array;
array = new int[100];
処理
delete[] array;
0380デフォルトの名無しさん
2005/12/28(水) 10:41:51恐らく、その「処理」の間にメモリ管理領域をぶち壊している。
delete[]しないと通るのは、その(ぶち壊していると言う)事実に直面しないで済んでいるだけ。
0381デフォルトの名無しさん
2005/12/28(水) 10:43:33ヒント有難う御座います。
これから調べてみます…
0382デフォルトの名無しさん
2005/12/28(水) 18:58:55他のコントロール(リストボックス)上でドロップする処理をつくっているのですが、
ドロップされた場所がリストボックスのどのインデックスか取得する方法が分かりません。
ドロップした瞬間は↓のイベントでわかるのですが、
void CDlg055::OnLButtonUp(UINT nFlags, CPoint point)
引数のpointからリストボックスのどのインデックスか取得はできるのでしょうか?
環境はVC++6.0 WinXP Homeです。
0383デフォルトの名無しさん
2005/12/28(水) 19:46:540384デフォルトの名無しさん
2005/12/28(水) 22:46:200386デフォルトの名無しさん
2005/12/29(木) 22:09:370387デフォルトの名無しさん
2005/12/29(木) 22:12:210388デフォルトの名無しさん
2005/12/30(金) 00:47:3952ビットだから約16桁だね。
0389デフォルトの名無しさん
2005/12/30(金) 01:30:02#define DBL_EPSILON 2.2204460492503131e-016 /* smallest such that 1.0+DBL_EPSILON != 1.0 */
かな?
0390デフォルトの名無しさん
2006/01/04(水) 16:45:472003で自作アプリを/GLオプション付でコンパイルするとどう見ても
ソースが要求する動きをしないコードが出来上がるんだがどういうこっちゃ。
0391デフォルトの名無しさん
2006/01/04(水) 17:52:14ライブラリにするからじゃん
0392デフォルトの名無しさん
2006/01/04(水) 18:31:44ライブラリには/GLを使うなと言うようなことが書かれている。
http://msdn.microsoft.com/library/ja/vccore/html/vcgrfglwholeprogramoptimization.asp
0393デフォルトの名無しさん
2006/01/04(水) 22:50:57使うなじゃなくてバージョン合わせろって事だろ。
同じ環境でコンパイルしてるんだからそれは問題ないはずじゃないの?
0394デフォルトの名無しさん
2006/01/04(水) 23:27:21他のアプリからリソースを取り出す方法まではわかりました。
そこで、アイコン確認するためダイアログの背景に取得したアイコンを表示してみようと思ったのですが、
その方法がわかりません。
わかる方、御教授お願いします。
0395デフォルトの名無しさん
2006/01/04(水) 23:45:21/GLオプションの意味わかってんのか?
0396デフォルトの名無しさん
2006/01/04(水) 23:45:58バージョンじゃなくて同一PCでやれって書いてないか?
0397デフォルトの名無しさん
2006/01/04(水) 23:53:21わかってるつもりだけど、俺のレスのどこら辺からわかってないと思ったのか教えて欲しい。
何でもいいから問題解決の糸口がほしいんだ。
>>396
プリコンパイル済みヘッダー使った場合だろ?
そもそも使ってないし、同一PCでやってる。
0398394
2006/01/05(木) 10:53:310399デフォルトの名無しさん
2006/01/05(木) 13:14:470400デフォルトの名無しさん
2006/01/05(木) 14:21:49MFCでもええやん。
0401デフォルトの名無しさん
2006/01/05(木) 14:27:50つーかプログラムを教えるスレでもねぇがな
0402デフォルトの名無しさん
2006/01/05(木) 15:30:31MFCスレが他にあるけどapiスレもあるし、
それをやるなと言ったらここで何をやれと?
0403デフォルトの名無しさん
2006/01/05(木) 15:33:530404デフォルトの名無しさん
2006/01/05(木) 15:35:050405デフォルトの名無しさん
2006/01/05(木) 17:12:030406デフォルトの名無しさん
2006/01/05(木) 18:59:20MFC、API、コンパイラ等、幅広く教えるんじゃないのか?
0407デフォルトの名無しさん
2006/01/05(木) 19:18:550408デフォルトの名無しさん
2006/01/05(木) 19:23:40やりたきゃ自分でやれ
0409デフォルトの名無しさん
2006/01/05(木) 19:29:000410デフォルトの名無しさん
2006/01/05(木) 21:30:46たまにだけど自分の守備範囲外だってだけで拒否反応する香具師いるんだよ
MFCが使えない399とかコンパイラスイッチが苦手なやつとかさ
0411デフォルトの名無しさん
2006/01/05(木) 21:46:400412デフォルトの名無しさん
2006/01/06(金) 00:14:30(話に加われないから)俺にわからない話はするな
ってことだな。
0413デフォルトの名無しさん
2006/01/06(金) 08:29:240414デフォルトの名無しさん
2006/01/06(金) 08:55:17VC++のスレって事は、環境やコンパイラとか固有の物についてのスレでそ?
MFCやAPIは専用スレがあるんだから、そっちでやるのがいいんじゃね?
0415デフォルトの名無しさん
2006/01/06(金) 09:03:50とりあえず過去ログぐらい読もう
そんなこと言ってるのお前だけだ
0416デフォルトの名無しさん
2006/01/06(金) 13:44:21MFCもVC++固有だけど・・・・・・
0417デフォルトの名無しさん
2006/01/06(金) 15:15:58で?
0418デフォルトの名無しさん
2006/01/06(金) 16:33:35過去がそうだったからといって今後も続けなきゃいけないとは限らない。
0419デフォルトの名無しさん
2006/01/06(金) 16:36:580420デフォルトの名無しさん
2006/01/06(金) 19:40:280421デフォルトの名無しさん
2006/01/06(金) 20:01:040422デフォルトの名無しさん
2006/01/07(土) 22:15:340423デフォルトの名無しさん
2006/01/08(日) 01:19:230424デフォルトの名無しさん
2006/01/09(月) 03:35:172005でコンパイルすると上手くいかないのです。
34 wc.lpszClassName = (LPCSTR)szClassName;
警告warning C4133: '=' : 'LPCSTR' と 'LPCWSTR' の間で型に互換性がありません。 34
0425デフォルトの名無しさん
2006/01/09(月) 03:38:35グローバル変数char szClassName[] = "template";の型に互換性がなくなってるらしいのですが、、
0426デフォルトの名無しさん
2006/01/09(月) 03:39:580427デフォルトの名無しさん
2006/01/09(月) 03:41:080428デフォルトの名無しさん
2006/01/09(月) 03:49:50有難うございます
明日また、考えたいと思います。今日はもうメモリリークしそうなので寝ます
0429デフォルトの名無しさん
2006/01/09(月) 04:23:440430デフォルトの名無しさん
2006/01/09(月) 06:28:360431デフォルトの名無しさん
2006/01/09(月) 08:30:15TCHAR szClassName[] = TEXT("template");
0432デフォルトの名無しさん
2006/01/09(月) 12:32:01もし、手書きで編集するにはvisual c++を終了してメモ帳などで別に開くしかないのですかね?
0433デフォルトの名無しさん
2006/01/09(月) 12:39:37ソリューションエクスプローラ
右クリック
0434デフォルトの名無しさん
2006/01/09(月) 12:42:07できました!ありがとうございました。
0435デフォルトの名無しさん
2006/01/09(月) 18:01:44複数配置した場合、メッセージを拾うとき、
BN_CLICKED指定だけではどのボタンか特定できませんよね?
そこでIDC_xxxxとかそのあたりのIDを使っているのだと思いますが…
コントロールのIDってどこで追加するのですか?
VC++6.0使用です。ものすごい初歩的な質問で恐縮です。
ダイアログベースならどこかで追加できた気がしますが、
そうでない場合の追加の仕方がわからなくて…。
0436435
2006/01/09(月) 18:30:560437435
2006/01/09(月) 18:39:10.rcファイルを開いて手動で追加すればいいのですか?
あぁでも書式がわからん…。
0438デフォルトの名無しさん
2006/01/09(月) 18:49:040439435
2006/01/09(月) 19:04:19#define IDC_BUTTON1 1
#define IDC_BUTTON2 2
のような感じで。
さらにenumなんか使っちゃてもOKですか?
0440デフォルトの名無しさん
2006/01/09(月) 19:31:130441デフォルトの名無しさん
2006/01/09(月) 19:37:010442デフォルトの名無しさん
2006/01/09(月) 19:45:50サンプル探せば簡単にみつかる
0443デフォルトの名無しさん
2006/01/09(月) 20:31:46CreateWindowExの引数でIDを指定できる。
そのIDは439のように#defineやconstやenumを使って名前をつけて良い。
0444デフォルトの名無しさん
2006/01/09(月) 20:35:460445デフォルトの名無しさん
2006/01/09(月) 21:01:15ありがとうございます。
どうも自分で指定してよかったみたいですね。
予めどこかで、一定の手順に従って定義されているIDを渡すものだとばかり思っていたので、
(でないと重複などが問題になると思ったから)
こんがらがっていたようです。
webで調べてもダイアログベースでプロパティから弄る場合や、
自動的についてる場合などしか見当たらなくて。
失礼しました〜。
0447428
2006/01/09(月) 23:19:55これは漏れに2005を使うなという意味ですか?
0448デフォルトの名無しさん
2006/01/09(月) 23:26:290449デフォルトの名無しさん
2006/01/10(火) 00:12:380450デフォルトの名無しさん
2006/01/10(火) 02:24:16'IDC_COMBO' : 定義されていない識別子です。
というエラーが出て困ってます。
'IDC_COMBO'はコンボボックスのIDでIDはきちんとIDC_COMBOになっているし
ソースファイルにも
#define IDC_COMBO 101
というように定義してあります。
いろいろ調べたのですが、わからなかったのでお願いします。
0451デフォルトの名無しさん
2006/01/10(火) 02:45:40どうやったら元に戻せるのですか?説明にはチェックがついてます
0452451
2006/01/10(火) 02:47:260453デフォルトの名無しさん
2006/01/10(火) 03:21:28Sub ex2()
Dim x As Integer, s As Integer
s = 0
For x = 1 To 100
s = s + x
Next x
If x Mod 2 Then
End If
MsgBox "合計=" & s
End Sub
ってのに奇数だけの和を求められるようにするにはどう変形すればよいですか?
0454デフォルトの名無しさん
2006/01/10(火) 03:52:01スレ違い
0455デフォルトの名無しさん
2006/01/10(火) 05:10:06禿げ上がるほどスレチガイだが教えてやる。
算数をもう一度勉強しなおせ。以上
0456デフォルトの名無しさん
2006/01/10(火) 06:53:040457デフォルトの名無しさん
2006/01/10(火) 10:56:19PreTranslateMessage関数では、ちゃんとメッセージが飛んできて、処理可能ですが、
メッセージマップで追加設定した関数OnUnko()には、処理が飛んで来ません・・・
なにがいけないのでしょうか??
ちなみに、メッセージはPostMessage(UM_UNKO)で飛ばしております
(SendMessageでは、PreTranslateMessageに飛んでこない・・・)
BEGIN_MESSAGE_MAP(Cxxx, CDialog)
ON_MESSAGE(UM_UNKO, OnUnko)
END_MESSAGE_MAP()
BOOL Cxxx::PreTranslateMessage(MSG* pMsg)
{
switch (pMsg->message){
case UM_UNKO:
・・・ // 飛んでくる
break;
}
LRESULT Cxxx::OnBnSetfocusPictEditor(WPARAM wParam, LPARAM lParam)
{
・・・ // 飛んでこない
return 0;
}
0458457
2006/01/10(火) 10:57:29LRESULT Cxxx:OnUnko(WPARAM wParam, LPARAM lParam)
{
・・・ // 飛んでこない
return 0;
}
0459デフォルトの名無しさん
2006/01/10(火) 10:57:460460デフォルトの名無しさん
2006/01/10(火) 11:05:35MFCスレ行った方がいいんじゃね?
0461457
2006/01/10(火) 11:27:090462チラシの裏
2006/01/10(火) 12:03:40ユーザー定義メッセージは、通常、WM_USER から 0x7FFF の範囲で定義します。
0463デフォルトの名無しさん
2006/01/10(火) 18:06:2004641/2
2006/01/11(水) 00:49:59XP SP2
Visual Studio 6.0(VC++6.0)
・現象
ExcelVBAから呼び出す収束計算用のWin32DLLを作成しています。
問題の箇所は
y = (x - a) / b;
変数はすべてdouble型です。
VBAでマクロを繰り返し実行する際、1回目で当該箇所を実行すると
右辺と左辺は等しくなるのですが、2回目以降では左辺の値が異なっていることがあります。
有効桁数が16桁とごくわずかな誤差ですが、最終的に大きくなってしまうので無視できません。
対処方法(できれば原因も)をご教授ください。
04652/2
2006/01/11(水) 00:50:34a = 4.047;
b = 1.8413;
x = 0.052;
// 中略
y = (x - a) / b;
ウォッチウィンドウにて、以下の値となりました。
【1回目】
a 4.0469999999999997
b 1.8412999999999999
x 0.051999999999999998
(x - a) / b -2.1696627382827347 …右辺
y -2.1696627382827347 …左辺
【2回目以降】
a, b, x 同上
(x - a) / b -2.1696627382827347 …右辺
y -2.1696627382827351 …左辺
※1
y = (0.052 - 4.047) / 1.8413;
を実行した場合は、2回目以降も現象は再現しません。
ただし、y = (x - 4.047) / 1.8413; のように右辺の項のどれか1つでも変数の場合は再現します。
※2
上の例で x = 0.056; のときは(a、bはそのまま)、再現しません。
0466デフォルトの名無しさん
2006/01/11(水) 01:10:27念のため、全部明示的にdoubleにキャストして試してみては?
0467デフォルトの名無しさん
2006/01/11(水) 01:34:38対処法:
・doubleの精度ギリギリまで使おうとせずに丸める
・long doubleを使う。
まぁ、ソース晒して味噌。
0468デフォルトの名無しさん
2006/01/11(水) 02:12:46その部分だけconsoleで試してみたけど、再現しなかったよ。
#include <stdio.h>
int main(int argc, char *argv[])
{
double a=4.047;
double b=1.8413;
double x=0.052;
double y=0.;
int i;
for(i=0;i<=1;i++){
y=(x-a)/b;
printf("y =%.16lf\n",y);
printf("raw =%.16lf\n",(x-a)/b );
}
getchar();
return 0;
}
0469デフォルトの名無しさん
2006/01/11(水) 05:56:40gccの場合そのままだと再現しなかったけどlong doubleにキャストしたら再現したから。
16桁の精度が必要なら、long doubleを使うしかないと思うよ。
(long double) y =-2.1696627382827351
(x - a) / (long double) b =-2.1696627382827349
0470デフォルトの名無しさん
2006/01/11(水) 07:59:030471デフォルトの名無しさん
2006/01/11(水) 08:24:53http://www.geocities.co.jp/SiliconValley/5634/t82DC_0005.html
> まるめごさ
> 丸め誤差
> 【現象】
> ・2進数では小数以下が正しく表現できない事がある為に発生する問題。
> ・誤差の一つ一つは小さいけれど、「チリも積もれば山となる」で
> 当然の如くさまざまな問題を引き起こす。
> ・2進数も分からずに、「C言語できます」「VBできます」
> てな人が何も考えずに作ったプログラムでは良くある事です。
> ・あ〜恐ろしい。
0472デフォルトの名無しさん
2006/01/11(水) 08:29:160473デフォルトの名無しさん
2006/01/11(水) 08:52:11> 丸め誤差
> 【現象】
> ・あ〜恐ろしい。
0474デフォルトの名無しさん
2006/01/11(水) 12:33:46折角の用語辞典も下2つを入れてるだけで台無しだよな
0475デフォルトの名無しさん
2006/01/11(水) 13:19:270476デフォルトの名無しさん
2006/01/11(水) 14:12:5110進数から2進数への変換誤差
整数値の場合、全ての10進数は2進数に変換できますが、
小数の場合、10進数を2進数に変換できないことがあります。
例えば、2進数では10進数の0.1を表現できません。
丸めの指定
2進数では表現できない小数を扱うとき、通常、コンピュータは適当な2進数に変換します。
このように近似値に変換することを丸めといいます。丸めの方法には幾つか種類がありますが、
Visual C++では丸めの種類を明示的に指定することが可能です。
0477デフォルトの名無しさん
2006/01/11(水) 14:29:16>32bit計算機ではintには-2^-16 < int < 2^16-1の範囲の数値しか入りません。
#「^」は補った。
すげぇ、-2^-16が整数だって。
0478デフォルトの名無しさん
2006/01/11(水) 14:30:41いや、等号で結ばれていないから 0 < int < 65535 と解釈するべきだろ。
#どっちにしても蛸だが。
0479デフォルトの名無しさん
2006/01/11(水) 14:51:35細かいこと言うと、これはC99の場合だが負数の表現は
・符号と絶対値
・2の補数
・1の補数
の3つの内、どれかである事は規定されてるがどれを使うかは処理系定義な上
例えば2の補数において符号ビットが1、他は0の物をどう扱うかも処理系定義
だから32bit計算機=-2^16<int<2^16-1だとは言い切れないわけだが
0481デフォルトの名無しさん
2006/01/11(水) 15:25:44いやそれは分かってる
0482477
2006/01/11(水) 15:34:31あーそうか、確かにw
>>481
判ってたら何で>>479みたいなこと書くかなぁ。
2の-16乗って0.00000152587890625でしょうが。
それに、仮に2の16乗だとしても65536だよ。
32ビット計算機でそんなint幅(高々17ビット分)を仮定するようなコンパイラがあったら逆に凄いと思うぞ。
0483デフォルトの名無しさん
2006/01/11(水) 16:18:34面倒だったのでその辺は無視した
6行目までからで分かると思うが、下限が2^○とは限らないぞってことが言いたかっただけ
0484464
2006/01/11(水) 19:06:082回目以降の呼び出しのときに代入された値が変わってくるのでは」と言われました。
VC++側のコーディングでは回避不可能かも、とのことです…
ちなみにP4 2.4Gです。
0485デフォルトの名無しさん
2006/01/11(水) 19:09:16いいか、そいつが同僚か上司かは知らんが
そいつを窓から投げ捨てろ
0486デフォルトの名無しさん
2006/01/11(水) 19:33:440487デフォルトの名無しさん
2006/01/11(水) 20:00:33>>469
0489464
2006/01/11(水) 23:11:43・Win32DLLを新規作成して以下の関数をエクスポートします。
extern "C" __declspec(dllexport) int __cdecl Gosa()
{
double a = 4.047;
double b = 1.8413;
double x = 0.052;
double y = 0;
y = (x - a) / b;
return 0;
}
(続く)
0490464
2006/01/11(水) 23:23:07・関数を呼び出すExcelマクロを作成します。
Excelファイルはdebugフォルダに置きます。
Option Explicit
Public Declare Function Gosa Lib "GosaTest.dll" () As Integer
Sub main()
ChDir ThisWorkbook.Path
Gosa
End Sub
・VC++のデバッグオプションで実行ファイル:Excel.exe、コマンド引数:上記Excelファイルのパス、として
デバッグ実行します。
・Excelファイルが開いたら上記マクロを実行します。
で、結果は>>465の通りです。
0491デフォルトの名無しさん
2006/01/11(水) 23:49:18Debugモードだと確かに再現するね。
Releaseモードだと再現しない(2回目以降も同じ値が出てくる)。
最初>>464-465を見たときは最適化オプションの中の/Opの問題かなと思ったけど、
どうやら違うようだ。
なんでだろうね?
0492デフォルトの名無しさん
2006/01/12(木) 00:39:47何で2回目からかはわからないが。(ウチの環境では1回目から拡張精度で計算の数値)
ウォッチの (x - a) / bはVC++側で計算してるので倍精度で計算の結果になっていると思われ。
_controlfp等でで制御してやればいいと思ふ。精度戻すの忘れずに。
0493デフォルトの名無しさん
2006/01/12(木) 02:27:24/Opでそれを無効にできる。
http://msdn.microsoft.com/library/ja/vccore/html/_core_.2f.Op.asp
0494464
2006/01/12(木) 11:34:22それが原因だったようです。
http://support.microsoft.com/default.aspx?scid=kb;ja;883881
_controlfp(_PC_53, _MCW_PC); で解決しました。ありがとうございました。
0495デフォルトの名無しさん
2006/01/12(木) 21:30:54_beginthreadで起動した2つのスレッドに対し、
WaitForMultipleObjectsで終了待機させているのですが
スレッドの実行が一瞬で終わってしまうケースで
WaitForMultipleObjects呼出時点でスレッドが既に
終了していると、戻り値がWAIT_FAILEDになってしまいます。
このような状況に、どのように対処したらよいのでしょうか。
Visual C++ 6.0です。よろしくお願いします。
0496デフォルトの名無しさん
2006/01/12(木) 22:07:13_beginthreadexでCREATE_SUSPEND
0497デフォルトの名無しさん
2006/01/12(木) 22:38:42CREATE_SUSPENDにしなくても、_beginthreadexならスレッドが終了しても
CloseHandleするまでハンドルが生きてるから大丈夫。
0498デフォルトの名無しさん
2006/01/12(木) 22:50:25MSDNが間違ってる。
ちなみにCloseHandleするなって書いてあるけど
ホントにしなくていいんだよな。
0499デフォルトの名無しさん
2006/01/12(木) 22:51:35ってどっかに書いてあったような。
0500デフォルトの名無しさん
2006/01/12(木) 22:52:54begintheadなら本当に要らない。exなら要る。
0501デフォルトの名無しさん
2006/01/14(土) 22:38:42DLLを作成するプロジェクトから出力されたhoge.libを
別のプロジェクトで#pragma comment( lib, "hoge.lib")したのですが
『fatal error LNK1104: コンパイラは、ファイル 'hoge.lib' を開くことができません。』
になってしまいました・・・
環境変数LIBはちゃんと書き換えました、PCの再起動もしました
hoge.libのアクセス権が問題なのかと思い同じソリューションで動かしていた
DLLを作成する側のプロジェクトをソリューションから削除して再起動しましたが、
同じエラーがやはり発生してしまいます。
どなたかご教示お願いしますです
0502デフォルトの名無しさん
2006/01/15(日) 00:10:16もう1度絶対パスで指定してみては?
0503デフォルトの名無しさん
2006/01/15(日) 02:44:53絶対パスのときはうまくいきました。
環境変数の書き方は
D:\Hoge_a\Lib\;D:\Hoge_b\Lib\;
見たいな書き方でいいはずですよね…
あ、OSはXPです。
0504デフォルトの名無しさん
2006/01/15(日) 07:52:37パスの最後の円マークはいらんようような希ガス
0505デフォルトの名無しさん
2006/01/15(日) 11:03:22でいけました
LIB書きかえるだけじゃだめなんですね・・・
0506デフォルトの名無しさん
2006/01/15(日) 13:34:510507デフォルトの名無しさん
2006/01/15(日) 15:51:24そんなこと聞いてるようじゃ便利には使えない。
0508デフォルトの名無しさん
2006/01/17(火) 07:20:05なぜ?
0509デフォルトの名無しさん
2006/01/17(火) 08:10:08そんなこと聞いてるようじゃ便利には使えない。
0510デフォルトの名無しさん
2006/01/17(火) 15:26:340511デフォルトの名無しさん
2006/01/17(火) 16:18:130512デフォルトの名無しさん
2006/01/19(木) 20:41:58教えてください。
0513デフォルトの名無しさん
2006/01/19(木) 20:57:290514デフォルトの名無しさん
2006/01/19(木) 21:08:38できれば具体的な関数を教えてもらえないでしょうか。
ぐぐってみたり、ランゲージリファレンスを調べてみたんですが、
わかりませんでした。
宜しくお願いします。
0515デフォルトの名無しさん
2006/01/19(木) 23:29:460516デフォルトの名無しさん
2006/01/19(木) 23:52:09グーグルの検索も参考になりました。
本当にありがとうございました。
がんばってRGB値ゲッツします。
0517デフォルトの名無しさん
2006/01/20(金) 01:05:39と言うのは、DLLに定義した関数をコールしたときに、
内部でrand()を使いたいのですが、どこでsrand()して
よいか分からないので、DLLを常駐プログラムのように
できれば解決するのかなと思ったからです。
0518デフォルトの名無しさん
2006/01/20(金) 01:06:330519デフォルトの名無しさん
2006/01/20(金) 01:11:19srand(time(NULL))とかsrand(GetTickCount())とかは
入れてみたのですが、1秒以内や1m秒以内にDLLが
呼ばれるとrand()の値が同じになってしまうので、それを
なんとか回避したいのです。
0520デフォルトの名無しさん
2006/01/20(金) 01:24:460521デフォルトの名無しさん
2006/01/20(金) 01:26:43本当に分かっていない。
0522デフォルトの名無しさん
2006/01/20(金) 01:28:32色んなプログラムから呼ばれるDLLなので(?)
関係なさそうです。
0523デフォルトの名無しさん
2006/01/20(金) 01:33:52DllMainでGetTickCountでもして乱数の種を一回だけ設定すればどう?
0524デフォルトの名無しさん
2006/01/20(金) 07:21:58やってみました!
結局プロセス毎にDllMainが呼ばれてしまうので、
srand()が1回だけ、というのはムリみたいです。
MMFを使ったりとか別の方法を考えてみます。
0525デフォルトの名無しさん
2006/01/20(金) 08:52:50おまえは一ミリ秒毎にプロセスからアタッチするのか?
0526デフォルトの名無しさん
2006/01/20(金) 12:43:360527デフォルトの名無しさん
2006/01/20(金) 18:01:16DLLでは全プロセスで共有されるグローバル変数を作れる。
0528デフォルトの名無しさん
2006/01/20(金) 18:22:16そんな変わったことしたいなら自分で乱数関数作れば?
0529デフォルトの名無しさん
2006/01/20(金) 19:14:21各プロセスが、srand(::GetTickCount()) すりゃ事足りると思うんだが。
0530デフォルトの名無しさん
2006/01/20(金) 19:46:15SECTIONS SHARED
辺りが肝かも。
0531デフォルトの名無しさん
2006/01/21(土) 01:57:040532デフォルトの名無しさん
2006/01/21(土) 09:39:02マシンスペックが高くなったら動かなくなるかもしれない
プログラムで満足なあなたは気にしなければいいでしょう。
0533デフォルトの名無しさん
2006/01/21(土) 10:32:55イミフメイw
0534デフォルトの名無しさん
2006/01/21(土) 10:59:39そんなの作れるのか
ぜひ見せてほしい
0535デフォルトの名無しさん
2006/01/22(日) 16:58:25え?まじで言ってる?
0536デフォルトの名無しさん
2006/01/22(日) 18:06:35まじなのでばかな>>533>>534>>536に説明してやってください。
0537534
2006/01/22(日) 18:45:56>マシンスペックが高くなったら動かなくなるかもしれないプログラム
まじです。どうやったら作れるのか教えてください。お願いします。
0538デフォルトの名無しさん
2006/01/22(日) 19:00:14乱数って言えば、コレ使ってみてる?
0539デフォルトの名無しさん
2006/01/22(日) 19:55:22使ってみない。
>>537
教えてやってもいいけど、「そんなのこうすればいいじゃん」って
反論はなしだぜ。お前はどうやったら作れるのか、って聞いてるんだから。
ここまでヒントを出してもお前には作れないか?
0540デフォルトの名無しさん
2006/01/22(日) 19:56:33アホ?Sleepでムリヤリタイミングずらして動かしてるプログラムとか
srand(GetTickCount())と1ミリ秒以上かかることを前提とした
ロジックの組み合わせとか、考えりゃいくらでもできるでしょ。
0541デフォルトの名無しさん
2006/01/22(日) 20:53:59Sleepのほうはなんとなくだが理解できる。
でもsrand(GetTickCount())のほうはやっぱりわからない。
DllMainに置けば十分としか思えない。
そんな頻繁にロード・アンロードされるほうこそ異常だ。
0542デフォルトの名無しさん
2006/01/22(日) 22:34:580543デフォルトの名無しさん
2006/01/22(日) 22:58:26もう放置しようぜタコな質問しておいて上から物を言える奴にまともなやつは居らん
0544デフォルトの名無しさん
2006/01/23(月) 02:54:45v._Myfirst,5
とやればいいと知ったのですが、mapやsetも同じように
簡単に見る方法はないでしょうか?
0545デフォルトの名無しさん
2006/01/23(月) 22:34:14どしてDllMainに置けば十分なの?
0546デフォルトの名無しさん
2006/01/23(月) 22:35:47>>534のように話をすりかえた人に丁寧にご対応して差し上げているわけです。
あなたはただ単に話しについていけていないようなので、
書き込むのをやめるのは正解です。
0547デフォルトの名無しさん
2006/01/23(月) 22:49:56それにIDEでデバッグ実行できずに固まるし。
自分の会社のOS上の製品なのに、何でこんなぼろい物になるのかね。
他のどのベンダーよりも、OSを開発した会社自身が一番OSを知り尽くしてるから、
一番まともな物を作れて当たり前なのに。
0548デフォルトの名無しさん
2006/01/23(月) 23:02:54ここで言っても意味ないですけど。同意すればいいの?
0549デフォルトの名無しさん
2006/01/23(月) 23:05:28パソコン初心者スレじゃないんだし
0550デフォルトの名無しさん
2006/01/23(月) 23:08:09自社のOSを知り尽くしていないと作れないようなソフトを自社で作ると
独禁法的に司法省から睨まれてしまうんだろう。
15年以上前からそう言われている。
MSのソフトはある程度のバグをわざと入れているとしても全く驚くに値しないね。
0551デフォルトの名無しさん
2006/01/23(月) 23:13:360552デフォルトの名無しさん
2006/01/24(火) 00:01:03同意すればいいの?
0553デフォルトの名無しさん
2006/01/24(火) 00:09:34そりゃそうだよ脳タリンの糞話についていってやる気は無いスキにしろや
0554デフォルトの名無しさん
2006/01/24(火) 00:24:21同意しなくていいからC++ BuilderかDelphiに移行すればいいのかも試練。
0555デフォルトの名無しさん
2006/01/24(火) 00:48:46書き込むのをやめるのが正解だったのに。本格的な脳タリンさんですねw
0556デフォルトの名無しさん
2006/01/24(火) 01:13:11現在、撮影ボタンを押すとカメラに写っている画像を1枚だけ保存します。
これを、ボタンを押したら1秒毎に自動で保存し、停止ボタンを押したら、
保存するのを終了させたいと思っています。
しかし、ボタンを押して自動保存し、停止を押すと終了のしかたがわかりません。
どうやったら、いいでしょうか?
0557デフォルトの名無しさん
2006/01/24(火) 01:25:32タイマー使う。
詳細はぐぐれ。
0558デフォルトの名無しさん
2006/01/24(火) 02:19:01高頻度でハングアップしたような状態になります。
解決方法はありますでしょうか?
OSはMCE2002sp2です。
コード自体に問題があるのかと思い簡単なものにして見たのですが
やはり同じ現状が起きました。スレッドを使用しないプログラムでは
まったくその現象は起きないようです。
スレッドは_beginthreadexを使用してます。
解決方法があればよろしくお願いします。
0559556
2006/01/24(火) 04:18:27タイマーを使えば1秒間ずつ、というのはわかるのですが、
停止を押すまで同じ処理を繰り返す方法、および停止させる方法が
わからないのです。
whileなどでループさせると、ループしている間はボタンが押せない状態
となってしまいますし・・・・
0560デフォルトの名無しさん
2006/01/24(火) 07:34:18whileでループさせる必要は無い。
0561デフォルトの名無しさん
2006/01/24(火) 08:29:480562デフォルトの名無しさん
2006/01/24(火) 08:33:54SetTimer
0563デフォルトの名無しさん
2006/01/24(火) 19:27:34srandは1度だけ呼べば良い。
DllMainはDLLのロード時に呼ばれるからちょうど良い。
0564デフォルトの名無しさん
2006/01/24(火) 19:42:34データ上で(画像切り替えとかそんなレベル)Formで作った別のプログラムを
別ウィンドウで起動させたいのですが、呼び出し?とかリンク?の仕方がわかりません
何冊か参考書を見たのですがわからないので詳しい方、ご教授お願いできませんか?
0565デフォルトの名無しさん
2006/01/24(火) 19:53:100566デフォルトの名無しさん
2006/01/24(火) 20:06:21もしくは「そう言った技術が乗ってない(確認できた範囲で)くらい
初級の本」だったりするので、お手数ですが、ご教授お願いします
0567デフォルトの名無しさん
2006/01/24(火) 21:49:270568デフォルトの名無しさん
2006/01/24(火) 21:57:30それだったら簡単だから誰か教えてくれるはず。
0569デフォルトの名無しさん
2006/01/24(火) 22:04:49CreateProcessかな
0570デフォルトの名無しさん
2006/01/24(火) 22:17:120571デフォルトの名無しさん
2006/01/24(火) 23:15:14アホか
0572デフォルトの名無しさん
2006/01/24(火) 23:42:30って言うのは簡単だけど具体的に何がアホなのかを説明しないのは
やっぱりほころびが出るのを恐れてるから?
0573デフォルトの名無しさん
2006/01/25(水) 00:00:06この場合さすがに説明するのもアホらしいってだけじゃないかな?
0574デフォルトの名無しさん
2006/01/25(水) 01:20:17読み込むことすら出来ません。
普通のテキストとは違うような感じなんのですが、
何かヒントをいただけないでしょうか?
やりたいことは、単にコピーの練習なのですが。
間違っているだけで、普通にできるのでしょうか?
int c;
if ((fp = fopen("E:\\Exercise\\BDDownVer\\Debug\\BDDownVer.bsc", "r")) == NULL) {
printf("file open error!!\n");
exit(1);
}
if((fout = fopen("E:\\Exercise\\BDDownVer\\Debug\\out.bsc","w")) == NULL){
printf("file open error!!\n");
exit(1);
}
while (c = fgetc(fp) != EOF) {
fputc(c,fout);
}
fclose(fp);
fclose(fout);
こんな感じでやってみたのですが・・・。
0575デフォルトの名無しさん
2006/01/25(水) 02:13:46オンラインドキュメントと内容は違うの??
0576デフォルトの名無しさん
2006/01/25(水) 02:31:08バイナリモードで開け。
あと、もしかしたらプロジェクトを開いている間はVC++がファイルを排他アクセスしていて、
他のプログラムは読み書きできないようになっているかもしれない。
0577デフォルトの名無しさん
2006/01/25(水) 04:12:10> while (c = fgetc(fp) != EOF) {
これをもう一度確認すること。
ちなみに CopyFile でぐぐると幸せかもしれん。
0578デフォルトの名無しさん
2006/01/25(水) 07:14:44「やっぱり」の使い方が意味不明だし、そこまで的をはずしてると
反論しにくいよね。うまい!
0579デフォルトの名無しさん
2006/01/25(水) 07:16:28DllMain()
srand(〜)
func()
rand()
しても意味ないでしょ?ってこと。
0580デフォルトの名無しさん
2006/01/25(水) 10:36:540581デフォルトの名無しさん
2006/01/25(水) 13:31:08非常に初歩的なことなんですが、VBでフォームに部品を貼り付けていくように
VC++でウィンドウに部品(ボタンなど)を貼り付けるにはメインウィンドウの
他にダイアログを作成すれば良いようですが、ダイアログを作成せずにメイン
ウィンドウ1枚のみで同じことをするにはどうすれば良いのでしょうか?
0582デフォルトの名無しさん
2006/01/25(水) 13:34:500583デフォルトの名無しさん
2006/01/25(水) 13:58:29今メインの環境が壊れてて復元中なので後で試してみます。
ありがとう。
0584583
2006/01/25(水) 15:56:42ネット見ても欲しい情報がまったく見つからない。
Windows3.1+MS-CでWindowsアプリ作った経験が有って
VB5〜VB.netの開発環境に慣れてる人間は、どんな本を
読めば参考になるでしょうか?
MSDNでは何の役にも立ちそうに無いです。。。
0585デフォルトの名無しさん
2006/01/25(水) 16:04:090586デフォルトの名無しさん
2006/01/25(水) 16:17:13MFCならプロジェクトの作成のときにウィザードでダイアログアプリが(ry
0587デフォルトの名無しさん
2006/01/25(水) 16:20:11近所の本屋にはろくな本が無かったので2時間かけて大きな
本屋に行くつもりですが、似たような境遇の方が居れば
どの本が良いかアドバイスいただきたいと思いまして。
最悪、本屋で1日粘ることになりそうですね。
0588デフォルトの名無しさん
2006/01/25(水) 16:37:39他になにもいらない
0589デフォルトの名無しさん
2006/01/25(水) 16:54:18ありがとう。何とか取っ掛かりが掴めました。
MFCについては本買って読んでみます。
>>588
MS-CではWinmainとイベントループでプログラミングしてたと
思いますが、VBの様にGUI環境で部品の微調整をしたかったんです。
0590デフォルトの名無しさん
2006/01/25(水) 17:13:32http://www.kumei.ne.jp/c_lang/sdk/sdk_50.htm
猫などのページを見ても非アクティブになっています。
0591デフォルトの名無しさん
2006/01/25(水) 17:19:31MFCでMDIのやつ作ってもなるし
0592:デフォルトの名無しさん
2006/01/25(水) 17:23:14とでてでうすればいかわかりません
0593:デフォルトの名無しさん
2006/01/25(水) 17:38:010594デフォルトの名無しさん
2006/01/25(水) 22:16:38ここのCWndBaseを見てます
http://techtips.belution.com/ja/vc/0009/
モーダルじゃないとLPARAMに値が入らず、Attach出来ません。
どーしたらいいんですかあああああ
0595デフォルトの名無しさん
2006/01/25(水) 23:33:160596デフォルトの名無しさん
2006/01/26(木) 00:14:44今もういちど見てみました。
ボケていました。while( (c=fgetc(fp) !=EOF )ですね。
やってみたところ問題なくコピーできました。
ありがとうございました。
0597デフォルトの名無しさん
2006/01/26(木) 00:15:220598デフォルトの名無しさん
2006/01/28(土) 14:10:25いい方法ありませんか?
あんまりいじらない部分のソースを簡単に折り畳みたい。
クラス毎に折り畳んだりしたいのよ。
0599デフォルトの名無しさん
2006/01/28(土) 20:54:24C#知らんし何言ってんだか意味不明
0600デフォルトの名無しさん
2006/01/28(土) 21:11:06まぁ#region使えば便利だとは思うがな
0601デフォルトの名無しさん
2006/01/28(土) 23:20:13コミットしているのだけど、なぜかDBに反映されない。
デバッグモードだとうまく実行される。
これってコミット完了前にプログラムが終了してしまうと
ダメってことなんだろうか。対策あるのかな。Sleep?
0602598
2006/01/29(日) 00:25:39自分の「好きな範囲で」折り畳みたいんだ。
例えば
class A {
#region
class A(){};
void hoge();
public:
#endregion
// アクセッサ
getA();
setA();
}
という感じで書いて折り畳むと
class A {
+...
// アクセッサ
getA();
setA();
}
という感じで見ることができるんだ。よく使う機能だけを表示させたりできる。
調べた限りではC#とVBにはあるがVC++にはねーな(´・ω・`)
0603デフォルトの名無しさん
2006/01/29(日) 00:35:24VisualC++ ExpressEditionをダウソして、本を読みつつ勉強しているのですが
VisualC++6.0用の教材なせいかerrorが発生してしまいサンプルソースのビルドができないです。
エロイ人いたら解決法を教えてくださいです
<ソース>
#include "windows.h"
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
SYSTEMTIME tm;
char s[80];
int iRet;
GetLocalTime(&tm);
if ((tm.wHour >= 0) && (tm.wHour < 12)) {
lstrcpy(s, "おはようございます");
} else if (tm.wHour < 17) {
lstrcpy(s, "こんにちは");
} else {
lstrcpy(s, "こんばんは");
}
iRet = MessageBox(NULL,s,"MsgBox",MB_OK);
return 0;
}
0604603
2006/01/29(日) 00:36:31------ ビルド開始: プロジェクト: Vc, 構成: Debug Win32 ------
コンパイルしています...
Msg.cpp
e:\program\winapp\vc\msg.cpp(15) : error C2664: 'lstrcpyW' : 1 番目の引数を 'char [80]' から 'LPWSTR' に変換できません。(新しい機能 ; ヘルプを参照)
指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
e:\program\winapp\vc\msg.cpp(17) : error C2664: 'lstrcpyW' : 1 番目の引数を 'char [80]' から 'LPWSTR' に変換できません。(新しい機能 ; ヘルプを参照)
指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
e:\program\winapp\vc\msg.cpp(19) : error C2664: 'lstrcpyW' : 1 番目の引数を 'char [80]' から 'LPWSTR' に変換できません。(新しい機能 ; ヘルプを参照)
指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
e:\program\winapp\vc\msg.cpp(22) : error C2664: 'MessageBoxW' : 2 番目の引数を 'char [80]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照)
指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
ビルドログは "file://e:\program\winapp\Vc\Debug\BuildLog.htm" に保存されました。
Vc - エラー 4、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========
こんな感じです。
0605デフォルトの名無しさん
2006/01/29(日) 00:47:03プロジェクトのプロパティで
「構成プロパティ」を選びプロジェクトの既定値「文字セット」を”マルチバイト文字セットを使用する”
0607デフォルトの名無しさん
2006/01/29(日) 01:05:01外部シンボルが未解決と言われて
エラーになっています。
ライブラリ側が上手く作成されていない為に
メソッドがリンクされないと思うのですが、
ライブラリ(.lib)内のメソッドを参照する方法は
ありませんか?(unixのnmみたいなの)
環境はwin2k、VC++6.0です。よろしくお願いします。
0608デフォルトの名無しさん
2006/01/29(日) 07:56:09-適当に選択範囲を作る
-右クリック -> アウトライン
-選択範囲を非表示
0609607
2006/01/29(日) 11:34:31ダイアログのないクラスライブラリではリンクできています。
ダイアログをライブラリに持たせられないのでしょうか...
アドバイスありましたらよろしくお願いします。
0610デフォルトの名無しさん
2006/01/29(日) 11:59:53なにやらリンクエラーがでて、ダイアログをはずしてlibを作ってみたら
リンクエラーがでないってこと?
エラーメッセージを書いたほうがいい。
0611デフォルトの名無しさん
2006/01/29(日) 12:07:02ちなみにDBはMSDE2000で
開発環境は
Windows2000、Visual C++ 6.0
0612デフォルトの名無しさん
2006/01/29(日) 12:27:58libはリソースをもてない。
dllにしろ。
0613デフォルトの名無しさん
2006/01/29(日) 13:58:38って出るんですけどどういう意味ですか?
またどのようにwarningを消すのが正しいのですか?
0614デフォルトの名無しさん
2006/01/29(日) 14:06:57Windowsプログラミングの際にはWindowsのどのバージョンを
想定しているかを指定してやる必要がある。
それがないのでふざけんじゃねぇデフォルトにあわせっぞゴルァといっている。
怖くてガクブルならwindows.hをincludeする前にWINVERを適切な値でdefineする。
0615デフォルトの名無しさん
2006/01/29(日) 15:08:08アプリを動かすターゲットのWindowsのバージョンをコンパイラに教えてあげるんですね。
ありがとうございます。
大変よくわかりました。
0616デフォルトの名無しさん
2006/01/29(日) 20:44:40MainFrm.cpp(180) : error C2440: 'static_cast' : 'LRESULT (__thiscall CMainFrame:
:* )(CPoint)' から 'UINT (__thiscall CWnd::* )(CPoint)' に変換できません。
スコープ内でこの名前を持つ関数でターゲット型に一致するものはありません。
エラーはこれだけっぽいのですがへるぷみぃ
0617デフォルトの名無しさん
2006/01/30(月) 17:10:210618デフォルトの名無しさん
2006/01/30(月) 17:24:06配布されているDLLならヘッダーとインポートライブラリがあるだろ。
自分で作ったのならインポートライブラリはDLLのリンク時に作られているはず。
ヘッダーがなければ__declspec(dllimport)をつけて関数宣言すればよい。
インポートライブラリはリンカに渡してやればよい。
あるいは明示的リンクと言う方法もある。
ActiveXやCOMのDLLなら#import、.NetのDLLなら#using。
これ以上詳しく知りたければお前も詳しく書け。
0619デフォルトの名無しさん
2006/01/30(月) 20:10:49VisualC++ ExpressEdition2005のCLRって
Common Language Runtimeのことですか?
だとしたら.NETってことでつか?
0620デフォルトの名無しさん
2006/01/30(月) 21:28:26Yes
0621デフォルトの名無しさん
2006/01/30(月) 21:31:49>>620 が素で答えやがった。氏ね
0622デフォルトの名無しさん
2006/01/30(月) 21:48:56制限ありますか?
0623デフォルトの名無しさん
2006/01/31(火) 02:12:03クラス"class"のメンバに
char string[30+1];
と宣言すると
'string' をマネージ 'class' のメンバとして定義できません。混合型はサポートされていません
とコンパイル時に警告が出ます。
何がいけないのでしょうか・・・
0624デフォルトの名無しさん
2006/01/31(火) 02:23:200625デフォルトの名無しさん
2006/01/31(火) 19:03:50MinGWのwindows.hを引っ張ってきてもいいですか?
0626デフォルトの名無しさん
2006/01/31(火) 19:13:420627デフォルトの名無しさん
2006/01/31(火) 21:12:38SDK入れろや
0628デフォルトの名無しさん
2006/01/31(火) 21:25:250629デフォルトの名無しさん
2006/02/01(水) 17:44:35System::Stringクラスを使って2つの文字列結合したいのですが
やり方がどうにもわかりません。
joinメソッドが臭いのですがMSDNみても難しくてわかりません・・・
ご教授をお願いします。
0630デフォルトの名無しさん
2006/02/01(水) 18:07:140631デフォルトの名無しさん
2006/02/01(水) 18:37:23String.Concat (Object, Object) 指定した 2 つのオブジェクトの String 形式を連結します。
思いっきり書いてあるじゃねーか
つーか、MSDNが難しいなんて言うような奴には向いてないだろ
回線切って首吊って氏ね
0632デフォルトの名無しさん
2006/02/01(水) 18:43:32○MSDNみるのがめんどくさいです
0633デフォルトの名無しさん
2006/02/01(水) 18:50:280634デフォルトの名無しさん
2006/02/01(水) 18:53:350635デフォルトの名無しさん
2006/02/01(水) 19:31:270636デフォルトの名無しさん
2006/02/01(水) 19:32:000637デフォルトの名無しさん
2006/02/01(水) 19:36:050638デフォルトの名無しさん
2006/02/01(水) 20:05:510639デフォルトの名無しさん
2006/02/01(水) 20:08:250640デフォルトの名無しさん
2006/02/01(水) 21:13:110641デフォルトの名無しさん
2006/02/01(水) 21:14:34オマイ性格悪いな
0642デフォルトの名無しさん
2006/02/01(水) 21:21:060643デフォルトの名無しさん
2006/02/01(水) 21:27:32オマイ思い込み激しいな
0644デフォルトの名無しさん
2006/02/01(水) 22:24:42まず、俺は君みたいに頭が良くないのは確実だが、超低脳というほどではなく、ごく標準的
なレベルだと思っています(思い込みかも知れんが)。
MSDNって一度本や何かで勉強したことのある関数ならば非常に分かりやすいと思うけど、
いきなりMSDNだけで使用方法を編み出そうとすると難解なもの(というか簡単なんだけど回
答にたどり着けないもの)が数多く存在するように感じます。
MSDNってそんなに分かりやすいですか?
0645デフォルトの名無しさん
2006/02/01(水) 22:29:14何故編み出す必要が?
0646デフォルトの名無しさん
2006/02/01(水) 22:34:40現在実行されているスレッドの内、ウインドウを持つスレッドをピックアップして表示する。
これをMSDNから得られる情報だけで実装できる人は俺の想像を超えますね。
0647デフォルトの名無しさん
2006/02/01(水) 22:45:51実装が載ってるわけが無い。
それに、使用してるクラスのメソッドを検索するなり順番に見ていくなりすれば見つかる。
頭なんてつかわない。
オマイはその手間を惜しんだだけ。
0648デフォルトの名無しさん
2006/02/01(水) 22:49:41あなたは646の関数をMSDN以外を見ることなく実装できるタイプの人ですか?
もしそうであればあなたはかなり限られた頭のいい人の部類だと思いますよ。
0649デフォルトの名無しさん
2006/02/01(水) 22:51:580650デフォルトの名無しさん
2006/02/01(水) 22:52:56>System::Stringクラスを使って2つの文字列結合したいのですが
なんでこれが、>>646になるんだw
0651デフォルトの名無しさん
2006/02/01(水) 22:59:34( ・(x)・) < 出番?
0652デフォルトの名無しさん
2006/02/01(水) 23:00:35というコメントに対する反論です。
「難しい」という表現が何を意味するかは分かりませんが、普通は
やりたいことが先にあって、それを調べるためにドキュメントは存
在すると思います。
やりたいことを実現する関数を知っていて、それのリファレンスを
調べるという意味ではMSDNは分かりやすいですが、やりたいこと
を実現するために何が必要かを調べるという意味ではMSDNは難
解だと思います。
俺は629ではないですが、629は「2つの文字列結合したい」というや
りたいことがあって、それを実現するには何が必要か分かっていな
い状況です。そういう人物にとって「MSDNみても難しくてわかりませ
ん」というのは当然だと思うのです。
0653デフォルトの名無しさん
2006/02/01(水) 23:03:38> System::Stringクラスを使って2つの文字列結合したいのですが
> やり方がどうにもわかりません。
MSDNみりゃいいじゃん
0654デフォルトの名無しさん
2006/02/01(水) 23:13:12もちつけ。
> System::Stringクラスを使って2つの文字列結合したいのですが
これだけわかっているなら、MSDNは有効じゃろ?
0655デフォルトの名無しさん
2006/02/01(水) 23:13:31MSDNをいきなり読んでも分からないのは当然。
それを読めるように努力する気の無い奴は、あきらかに向いて無いでしょ。
唯一の公式リファレンスなんだから。
MSDNみても難しくてわかりません
↓
誰か教えて
というのは当然だと?
0656644
2006/02/01(水) 23:37:28ちと失敗か・・・
0657デフォルトの名無しさん
2006/02/01(水) 23:46:170658デフォルトの名無しさん
2006/02/02(木) 00:31:15意味が分かりません。筋が通るように説明するか
死んでください。
0659デフォルトの名無しさん
2006/02/02(木) 00:36:38既に>>653が書いてくれてるのが全てだが
System::Stringを使って2つの文字列を結合したいと分かってるなら
MSDNのSystem::Stringクラスのメンバを見るなんてのは
至極当然の発想だし、またそれをすれば見つからない筈がない
だって書いてあるんだから
メンバ一覧を見るというのが思いつかないならどうしようもない低脳だな
0660デフォルトの名無しさん
2006/02/02(木) 04:50:46C++ を勉強したいのに、
C++/CLI のコードを書こうとしているから、
>>630 はそういってるだけじゃん。
0661デフォルトの名無しさん
2006/02/02(木) 07:16:20意味が分かりません。筋が通るように説明するか
死んでください。
0662661
2006/02/02(木) 07:17:23考えてからレスしてください。全く的がはずれています。
分からないならレスしないでください。
0663デフォルトの名無しさん
2006/02/02(木) 07:44:34「Visual Studio .NET 2003 で C++ の勉強している」
って書いているのに std::string を使わずに
「System::Stringクラスを使って2つの文字列結合したい」
って言っているから、>>630 はそれは C++ じゃなくて
マネージドC++でしょ、って指摘している。
C++ の勉強するならマネージドC++を前提に勉強するのは
あまり賢いとは言えないよ、って親切に指摘してくれているだけ。
それにマネージドC++ はすでに C++/CLI に置き換えられて
いるので、マネージドC++に慣れることにはあまり意味がない。
0665デフォルトの名無しさん
2006/02/02(木) 08:12:200666デフォルトの名無しさん
2006/02/02(木) 08:24:15意味が分かりません。筋が通るように説明するか
死んでください。
0667デフォルトの名無しさん
2006/02/02(木) 08:58:04あんまり使われなかったから考古学的な価値もない。
0668デフォルトの名無しさん
2006/02/02(木) 14:52:46よくつき合ってられるな。
0669デフォルトの名無しさん
2006/02/02(木) 16:52:150670デフォルトの名無しさん
2006/02/02(木) 17:07:070671デフォルトの名無しさん
2006/02/02(木) 18:17:30昔作られたシステムを、新たに作り変える事になりました。
VBで作られた元ソースがあり、なるべくそれ本体には触れずに
呼び出されているOCXやDLLを作り変えようとしております。
VBのソースを見ていると、OCXからユーザが独自で作ったイベントが発行され
VBがそのイベントをキャッチして処理が行われている箇所が
あります。
VC++(もしくはC)で、OCXをつくり、同様の名称を持つ
イベントを発生させて、VB側でキャッチできるようにしたいのですが
ネットで調べても、調べきれておりません。
(VBでは、RaiseEventという関数を使って、外側にイベントを発生させておりました)
何かサンプルになるHPなどありましたら
ご教授願います。
0672デフォルトの名無しさん
2006/02/02(木) 18:40:55超初心者ならそんな作り変えをするべきではない。
0673デフォルトの名無しさん
2006/02/02(木) 19:03:32CreateWindow()を呼んでいるのですが、
ウィンドウがタスクバーに表示されてしまいます。
CreateWindowEx()の拡張スタイルでWS_EX_TOOLWINDOWをつければ
タスクバーに表示させないようにすることは可能なのですが、この方法ですと細いタイトルバーができてしまいます。
タイトルバーを表示させたくないのでポップアップウィンドウとして作りたいのです。
環境はVC++6、MFCは使っていません。
0674デフォルトの名無しさん
2006/02/02(木) 19:13:39お話はわかりました。それで?
0675デフォルトの名無しさん
2006/02/02(木) 19:15:33チラシに向かって何話しかけてんだ?オマイ・・・
0676673
2006/02/02(木) 19:34:39タイトルバーを表示させずにタスクバーに表示されないようなウィンドウをつくりにはどのような方法があるのでしょうか。
どなたかご教授くださいませ。
0677デフォルトの名無しさん
2006/02/02(木) 19:38:220678デフォルトの名無しさん
2006/02/02(木) 19:40:300679デフォルトの名無しさん
2006/02/02(木) 20:02:520, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
とCreateWindowExを呼んでみたところ、タイトルバーなし、タスクバーに非表示が実現できました。
お騒がせして申し訳ありません。
レスをくださった方々、ありがとうございました。
0680デフォルトの名無しさん
2006/02/02(木) 22:09:15こんなに殺伐とするのか、あぁーマンドクサイ
0681デフォルトの名無しさん
2006/02/02(木) 22:10:56○ WIN32API
0682デフォルトの名無しさん
2006/02/02(木) 22:40:09ちなみに「ご教示」な。
0683デフォルトの名無しさん
2006/02/02(木) 23:35:250684デフォルトの名無しさん
2006/02/02(木) 23:36:00ここにもアホがいる。ご教授でもいいんだよ。
本読めよな。
0685デフォルトの名無しさん
2006/02/02(木) 23:53:39いや、683が癒されることなど永遠にないだろう
0686デフォルトの名無しさん
2006/02/03(金) 00:04:54でも根拠とかはないんだよね。
0687デフォルトの名無しさん
2006/02/03(金) 01:15:22いらないねそんなもん
0688根拠とかw
2006/02/03(金) 01:19:04だって、癒されないのは本人の問題でしかないからね。ここでそんなもん議論する必要は無い。
(しかし、683は粘着を繰り返す、それだけのことだよ)
0689デフォルトの名無しさん
2006/02/03(金) 07:14:43>>687-688
でも根拠とかはないんだよね。
0691デフォルトの名無しさん
2006/02/03(金) 21:03:280692デフォルトの名無しさん
2006/02/03(金) 21:05:430693デフォルトの名無しさん
2006/02/03(金) 21:06:45アホ
0694デフォルトの名無しさん
2006/02/03(金) 21:19:45ざんねん。末尾再帰が最適化されてしまった。
0695デフォルトの名無しさん
2006/02/04(土) 08:49:390696デフォルトの名無しさん
2006/02/04(土) 09:20:590697デフォルトの名無しさん
2006/02/04(土) 13:25:52違うけど?
0698デフォルトの名無しさん
2006/02/06(月) 18:26:35次の質問者どうぞ
0699デフォルトの名無しさん
2006/02/07(火) 19:41:13本当に初心者です。
Visual Studio .NET 2003の入門本を片手にVisual Studio .NET 2005の勉強を
本日始めました。
本の通りにやってみたのですが、ビルドするとエラーが出てしまいます。
【ソース】
void Cvcsmp1View::OnDraw(CDC* pDC)
{
Cvcsmp1Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
pDC->TextOut(0,0,"1111");
if (!pDoc)
return;
// TODO: この場所にネイティブ データ用の描画コードを追加します。
}
【エラー】
BOOL CDC::TextOutW(int,int,LPCTSTR,int)' : 3 番目の引数を 'const char [5]'
から 'LPCTSTR' に変換できません。(新しい機能 ; ヘルプを参照)
【MFCアプリケーション】でプロジェクト作成後「pDC->TextOutW(0,0,"1111");」
以外は一切変更していません。
最初の1歩目ですので自力解決の道筋さえ見えない状況です。
どなたかご教授ください。
0700デフォルトの名無しさん
2006/02/07(火) 20:03:020701デフォルトの名無しさん
2006/02/07(火) 20:11:45"1111"をTEXT("1111")にする。
0702デフォルトの名無しさん
2006/02/07(火) 20:24:43ありがとうございます。
解決しましたm(._.)m
ちなみに>>605の方法でもうまく動きました。
このあたりの意味合いは、これから勉強してみます。
ありがとうございましたm(._.)m
0703デフォルトの名無しさん
2006/02/08(水) 11:59:14プログラム中でその変数を書き換え、UpdateData(FALSE) を行っています。
一応、書き換えること自体はできたのですが、高速で書き換えると、文字が点滅してしまうのです。
理想としては、ダイアログ上で数値が10000から0までキレイにカウントダウンしてほしいのですが、
書き換えるたびにチカチカして、どうしても汚いんです。
対処法はあるのでしょうか。よろしくお願いします。
0704デフォルトの名無しさん
2006/02/08(水) 12:43:28DDXに頼らず自分で変えたら?
0705仕様書無しさん
2006/02/08(水) 13:54:09DDX使う/使わないに関係なく、SetDlgItemText(IDC_TEXT1,strText);等、
を使っても、画面のリフレッシュレートと非同期に頻繁に描画すれば、
ちらつきが見えてしまうのは当然のこと。
0706デフォルトの名無しさん
2006/02/08(水) 15:45:25>>699の方と同じように、2003の入門書で2005の勉強を始めましたが、本の通りに
書いていきなりエラーが出ました。・゚・(ノд`)・゚・。
<ソース>
String *name = textName->Text;
<エラー>
error C3699: '*' : この間接指定を型 'System::String' で使用できません
コンパイラは、解析を続行するために '*' を '^' で置き換えます。
textNameというテキストボックスのTextプロパティをnameというポインタに
入れると理解していますが、なぜエラーになるかわかれば教えてください。
Windowsフォームアプリケーションでプロジェクトを作成しています。
本では「.NET」の中の「Windowsフォームアプリケーション」と書かれていましたが
「.NET」が無かったので、「CLR」にあった同名で作成しています。
長文で申し訳ありませんm(._.)m
0707デフォルトの名無しさん
2006/02/08(水) 15:50:01使いたい言語は C++ ?
それとも C++/CLI ?
まずはそれをはっきりさせないと。
見ている本はおそらく managed C++ の本だと思われ。
この3つの違いがもし分からなければ、
その辺調べてからの方がいいと思われる。
0708デフォルトの名無しさん
2006/02/08(水) 15:56:53結論、無理
0709デフォルトの名無しさん
2006/02/08(水) 16:15:10どうしても実現したければ、
メモリデバイスコンテキストに描画して、それをWM_PAINTのタイミングでダイアログ上にコピー
0710デフォルトの名無しさん
2006/02/08(水) 16:16:020711706
2006/02/08(水) 16:23:31VC.NETにはネイティブとマネージがあって、今回わたしが使おうとしているのは
マネージの方だと思ってます。
またマネージの方はCLR上で動作すると説明があったので「CLR」からプロジェクト
を作成しました。
Windowsアプリを作成したいと思っているので、マネージの方を勉強して行けば良いのかな?
と思ってますが、間違えでしょうか・・・
0712デフォルトの名無しさん
2006/02/08(水) 17:30:58managed C++ は C++ の文法に違反しないように配慮しつつ
なんとか CLR 上で動く安全なコードを書けるように
拡張しようという試みです。しかしこれには限界があったため
C++ の文法を変更してあらたな言語 C++/CLI が出来ました。
Visual Studio 2005 からは C++/CLI を使います。
managed C++ はもはや使うべきではありません。
C++/CLI は新たな言語ですから、C++ には無い演算子
やキーワードなどもあります。例えば単項演算子^ や
gcnew がその例です。
というわけで、managed C++ は C++/CLI が生まれるための
あだ花だったと思い、あきらめてその本はポイしましょう。
managed C++ も C++/CLI も、CLR上で動くという点では
「マネージド」なので騙されがちです。
混乱しないようにしましょう。
0713デフォルトの名無しさん
2006/02/08(水) 17:32:35ManagedC++ ≠ C++/CLI
オプションでManagedC++も使えるはず。
>Windowsアプリを作成したいと思っているので
NativeでもWindowsプログラミングは可能。
0714デフォルトの名無しさん
2006/02/08(水) 17:33:50http://ja.wikipedia.org/wiki/Microsoft_Visual_C++
あと、Windows アプリを作りたいということだったら、
純粋に C++ と MFC & Windows API でシコシコ作るという手も。
って、これはたぶん >>711 が望んでいることじゃないよね。
0715デフォルトの名無しさん
2006/02/08(水) 17:34:320716706
2006/02/08(水) 18:00:27皆さんの説明でよく分かりましたm(._.)m
初歩的な質問で申し訳ありませんでした。
>>714さんがおっしゃってる方法はきっと手間がかかるんですよね?
それでも将来的に沢山の機能が実現できるのであれば、ネイティブ
を頑張ってみるつもりですが、とりあえず2005の本が出るまではVB
やVC#で勉強することも検討してみようと思います。
0717デフォルトの名無しさん
2006/02/08(水) 18:09:59とりあえず C# で遊んでおけば無駄にはならないよ。
C# で使えるクラスはそっくり C++/CLI でも使えるわけだから。
俺は VB はほとんど使ったことないから
そっちはおすすめも止めもしない。
0719デフォルトの名無しさん
2006/02/08(水) 19:49:11■環境:vc++6.0 SDI
ウィンドウ背景色を設定するために
OnEraseBkgndとOnDestroyをオーバーライドして
背景色をプライベートで以下のように宣言しました。
といってもあるサイトのコピーなんですけど。
CBrush m_BkgndBrush;//背景色を保持するブラシ
HBRUSH m_hOldBkgndBrush;//以前の背景色のバックアップ
HELP->キーワードからグラフィック オブジェクトを見たんですけど
CBrushとHBRUSHの違いがよく意味わからんですたい。
0720デフォルトの名無しさん
2006/02/08(水) 20:40:02CBrushはそれらの関連する(であろう)Win32APIをラッピングして
使いやすく?したMFCのクラス。
0721デフォルトの名無しさん
2006/02/08(水) 21:50:19CWindowというクラスを作り、そのメソッドとして下記のようにCreateWindowを定義しました
それをコンパイルすると、ヘッダのその定義のところで「error C2059: 構文エラー: '定数'」が発生します
何もエラーになるようなことはしてないと思うのですが、サッパリわかりません
virtual BOOL CreateWindow( LPCTSTR lpszClass,
LPCTSTR lpszTitle,
DWORD dwStyle,
int x = 0,
int y = 0,
int nWidth = 640,
int nHeight = 480,
HWND hWndParent = NULL,
HMENU hMenu = NULL);
0722デフォルトの名無しさん
2006/02/08(水) 23:46:190723デフォルトの名無しさん
2006/02/09(木) 02:00:50いまいちだな。
0725デフォルトの名無しさん
2006/02/09(木) 09:40:220726デフォルトの名無しさん
2006/02/09(木) 09:44:22ですが、それが何か?
0727721
2006/02/09(木) 09:44:520728デフォルトの名無しさん
2006/02/09(木) 10:04:170729デフォルトの名無しさん
2006/02/09(木) 13:01:430730デフォルトの名無しさん
2006/02/09(木) 13:03:460731デフォルトの名無しさん
2006/02/09(木) 13:38:45CreateWindowってマクロだったんか・・・
0732デフォルトの名無しさん
2006/02/09(木) 13:41:130733デフォルトの名無しさん
2006/02/09(木) 13:47:490734デフォルトの名無しさん
2006/02/09(木) 14:14:230735デフォルトの名無しさん
2006/02/09(木) 14:19:140736デフォルトの名無しさん
2006/02/09(木) 14:20:17WinUser.hの中で、CreateWindowはマクロとして定義されているので、
コンパイル時にはCreateWindow[AW]に置き換えられてしまうのがエラーの原因。
だから関数の名前変えなきゃだめ。
0737デフォルトの名無しさん
2006/02/09(木) 14:25:280738デフォルトの名無しさん
2006/02/09(木) 15:27:39Borlandは見捨てるそうです
そんな僕に、やさしくVisual C++を教えて下さい
教えてくれるのなら、移行の決心が付きます
0739デフォルトの名無しさん
2006/02/09(木) 15:30:09今なら1年限定でただだから。
0740738
2006/02/09(木) 15:31:53早速調べてきます
0741デフォルトの名無しさん
2006/02/09(木) 16:53:15#define PRINT(...) (printf("%s:%d ", __FILE__, __LINE__), printf(__VA_ARGS__))
こんな感じでデバッグマクロを定義したいんですけど、
「...」の部分でコンパイルエラーになります。
VC6だとマクロに可変長引数は使えないんですか?
0742デフォルトの名無しさん
2006/02/09(木) 17:16:50はい。C99対応コンパイラじゃないと使えません。
レガシーなCコンパイラで似たようなことがしたいなら、
PRINT(("%d", 10))のように二重に囲むこと前提で
#define PRINT(x) printf x
とするくらいしかありません。
0743デフォルトの名無しさん
2006/02/09(木) 17:21:35そーなのですか。。残念です。
ファイル名、ライン番号入れるのはすっぱりあきらめます。
0744デフォルトの名無しさん
2006/02/09(木) 18:26:33・scrnsave.lib
・comctl32.lib
をリンクした訳ですが。以下のエラーが出て上手くいきません。
エラー1 error LNK2019: 未解決の外部シンボル _DefScreenSaverProc@16 が関数 _ScreenSaverProc@16 で参照されました。screen.obj
エラー2 error LNK2001: 外部シンボル "_hMainInstance" は未解決です。screen.obj
エラー3 error LNK2019: 未解決の外部シンボル _WinMain@16 が関数 ___tmainCRTStartup で参照されました。MSVCRTD.lib
エラー4 fatal error LNK1120: 外部参照 3 が未解決です。C:\Documents and Settings\Owner\My Documents\Visual Studio 2005\Projects\screen\Debug\screen.exe
環境はVS2005です orz助けてください
0745デフォルトの名無しさん
2006/02/09(木) 18:37:570746デフォルトの名無しさん
2006/02/09(木) 18:59:360747デフォルトの名無しさん
2006/02/09(木) 19:09:230748デフォルトの名無しさん
2006/02/09(木) 19:26:09WinMainすらエラーじゃないか
アホか
0749デフォルトの名無しさん
2006/02/09(木) 19:29:29猫見てこい
0750デフォルトの名無しさん
2006/02/09(木) 19:30:340751デフォルトの名無しさん
2006/02/09(木) 21:06:380752デフォルトの名無しさん
2006/02/09(木) 21:22:170753デフォルトの名無しさん
2006/02/13(月) 11:13:58いろいろググって見たもののいまいちしっくりくるところがありません。
理想としては画像解説付きでVC++の基礎の基礎からサンプルプログラムを交えて解説され、
進んで行くにつれ電卓やテキストエディタ、ブラウザなど定番のアプリを作っていくようなところ。
つまり用語や用法の解説ではなく実際にプログラミングしながら学べるところです。
ちなみに私のスキルはVC++歴数日、解説書に一通り目を通した程度。
C、C++でなら一通りのプログラムは書ける程度です。
0754デフォルトの名無しさん
2006/02/13(月) 11:19:080755デフォルトの名無しさん
2006/02/13(月) 11:26:180756デフォルトの名無しさん
2006/02/13(月) 11:27:38ならその結果も報告しろよ
0757デフォルトの名無しさん
2006/02/13(月) 12:28:17いや、特にそういうHP無いのなら諦めて今あるもので勉強しようと思います。
0758デフォルトの名無しさん
2006/02/13(月) 13:41:300759質問です!!
2006/02/13(月) 14:28:22wchar_t wc = 'あ';
とある時、wc経由でssの文字列を"あ"としたいのですが、
× ss = wc;
× ss.Format("%c", wc);
いずれも、上手くいきませんでした。
ssは"?"が入ってる・・・
他に方法はありますでしょうか?
CStrnig::Format()に、マルチバイト文字を明示する方法とか・・・?
Unicodeビルドではなく、マルチバイトビルドで実現したいです。
0760デフォルトの名無しさん
2006/02/13(月) 14:31:390761デフォルトの名無しさん
2006/02/13(月) 14:35:43数冊買ったのをまずはやれ。分からなかったら、調べろ。
楽して覚える方法なんてねーからな。
それができなきゃプログラム諦めれ。そっちのが幸せだ。
0762質問です!!
2006/02/13(月) 14:36:09だと、ss=""になってしまいましたよ・・・
0763デフォルトの名無しさん
2006/02/13(月) 14:39:020764質問です!!
2006/02/13(月) 14:43:05wchar_t wc = 'あ';
CString ts(wc);
ss = ts;
だと、ss= "・"になってしまいましたよ・・・
0765デフォルトの名無しさん
2006/02/13(月) 14:44:060766デフォルトの名無しさん
2006/02/13(月) 14:56:58>wchar_t wc = 'あ';
この時点でマルチバイトじゃないか?
0767質問です!!
2006/02/13(月) 15:11:54プロジェクト→プロパティ→文字セット→「マルチ バイト文字セットを使用する」
でお願いしたいという意味でした。
0768デフォルトの名無しさん
2006/02/13(月) 15:13:580769質問です!!
2006/02/13(月) 15:26:20wchar_t wc = 'あ'; // wc = 0x82a0 ss = ""
ss = wc; // ss = "?"
↑
デバッガで追った時、この部分で ss = "あ"とならず
思い通りの動きになっていません
0770デフォルトの名無しさん
2006/02/13(月) 15:30:590771デフォルトの名無しさん
2006/02/13(月) 15:37:410772デフォルトの名無しさん
2006/02/13(月) 16:37:370773デフォルトの名無しさん
2006/02/13(月) 16:41:320774デフォルトの名無しさん
2006/02/13(月) 16:44:52買ったものは実践してます。
わからないところもありません。
特に問題はないです。
「楽して」ではなく「楽しく」出来たらいいなと思っただけです。
たとえば物理や数学でも演習がなく定義や法則ばかり書いてある参考書よりは
演習問題が豊富でソレを解きながら覚えた方が楽しいと思います。
そういうの(実際にアプリを作りながら解説)を実践しているHPなどご存じでしたら
紹介していただけたらなぁ。と思っただけです。
特にそういうところがないのなら別に良いです。
昔BASICを覚えたのはBASICマガジンなどでゲームプログラムを打ち込み、そしてソレを
弄ってあ〜でもないこ〜でもないやって理解していき、その過程が楽しいかったので
そういうものを求めていました。
0775質問です!!
2006/02/13(月) 16:49:35もういいもん!><
0776デフォルトの名無しさん
2006/02/13(月) 16:55:45乙
0777デフォルトの名無しさん
2006/02/13(月) 16:58:22現在WinXP ProSP2 + VC++6.0環境下で、
MFCベースにて一定時間ごとに処理を行うプログラムを作っています。
その中で100msecごとに処理を行いたいのですが、
settimer( 1, 100, 0 )
void Chogehoge::OnTimer(UINT nIDEvent){
〜処理〜
}
では、
処理が正確に回らず、1msecずつ遅れ最終的に100msecの単位が飛んだりします。
なので、マルチメディアタイマーを利用しようと思っているのですが、
TIMECAPS timeCaps;//分解能格納
timeGetDevCaps(&timeCaps, sizeof(timeCaps));//分解能取得
timeBeginPeriod(timeCaps.wPeriodMin);//分解能の最小値
FTimerId = timeSetEvent(100, timeCaps.wPeriodMin, TimerProc, (DWORD)this, TIME_PERIODIC );
でタイマーを生成し
void Chogehoge::TimerProc( UINT uID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2 ){
〜処理〜
}
とやっても、マルチメディアタイマー使用以前と同様、処理が遅れてしまいます。
実際100msec周期で正確に処理を行いたいとき、どのようにすればよいのでしょうか?
# 優先度をリアルタイムに変更してもうまく回りませんでした。
0778デフォルトの名無しさん
2006/02/13(月) 16:58:440779デフォルトの名無しさん
2006/02/13(月) 17:01:28ラッキーおめ
とりあえずタイマー部分だけをマルチスレッド化して、
100-10〜15msくらいのときに通達すればいいのではないかと。
もしくはただのループ
0780質問です!!
2006/02/13(月) 17:02:22もっといい方法あったら、教えて下さい
>>778
wcahr_tが一文字ずつ飛んでくるから、それをCString型にスタックしたかったの!><
0781デフォルトの名無しさん
2006/02/13(月) 17:04:53>>773
0782デフォルトの名無しさん
2006/02/13(月) 17:07:39そんなこと一言もいってないじゃねぇか
0783質問です!!
2006/02/13(月) 17:12:32Unicodeじゃダメなの!><
>>782
知りたかったのは、wchar_t→CString & 非Unicode
でしたので、噛み砕いちゃいました・・・
0784デフォルトの名無しさん
2006/02/13(月) 17:14:500785デフォルトの名無しさん
2006/02/13(月) 17:17:170786質問です!!
2006/02/13(月) 17:19:330787デフォルトの名無しさん
2006/02/13(月) 17:21:39/Yc プリコンパイル済みヘッダーを作成する
/Yu プリコンパイル済みヘッダーを使う
というのが有るのですが、毎回 stdafx.h の内容を変更するたびに
一度 *.pch を削除して /Yc に変更してコンパイルして
/Yu に戻してビルド、という手順を踏む必要があるのでしょうか?
stdafx.h を書き換えたら勝手にそいつから *.pch を作成して
以後それを使ってくれるようにはできますか?
0788デフォルトの名無しさん
2006/02/13(月) 17:22:11じゃあcharにしとけ
0789デフォルトの名無しさん
2006/02/13(月) 17:22:15はい次の方どうぞ
0790デフォルトの名無しさん
2006/02/13(月) 17:23:09なんでわざわざ聞く必要が?
0791デフォルトの名無しさん
2006/02/13(月) 17:23:16wchar_t使うのにUNICODEじゃないなんてねぇよ、Windowsでは
0792デフォルトの名無しさん
2006/02/13(月) 17:24:07いちいちオプションいじらないでリビルドするだけだろ
0793デフォルトの名無しさん
2006/02/13(月) 17:25:070794デフォルトの名無しさん
2006/02/13(月) 17:25:31それとも /Yu にしておくべきですか?
0795デフォルトの名無しさん
2006/02/13(月) 17:25:59VC++2003だと思うが/YXな
0796デフォルトの名無しさん
2006/02/13(月) 17:26:26ええ、あなた程度でも思いつくような事はさすがにやってます^^;;;
0797デフォルトの名無しさん
2006/02/13(月) 17:26:41>>793の逝きっぷりには到底及びもつきませんよ!!!
今後ともよろしくお願いしますね!
じゃぁ氏ね
0798質問です!!
2006/02/13(月) 17:27:41だから、マルチバイトって最初っから言ってるじゃないですかぁ
>>791
お兄さん、VS2005でデフォルトがUNICODEなんでしょ?
でも、みなさんありがとう
もういいです><;
0799デフォルトの名無しさん
2006/02/13(月) 17:29:040800デフォルトの名無しさん
2006/02/13(月) 17:29:550801デフォルトの名無しさん
2006/02/13(月) 17:30:240802デフォルトの名無しさん
2006/02/13(月) 17:31:070803デフォルトの名無しさん
2006/02/13(月) 17:31:08オプションは有りませんでした。
0804デフォルトの名無しさん
2006/02/13(月) 17:31:12.__
.Z|・∀・|
|__|Z
/ <
.図
0805デフォルトの名無しさん
2006/02/13(月) 17:31:26こっちみんな
キモチワルイ
0806デフォルトの名無しさん
2006/02/13(月) 17:32:21こっち(´Д` ゚A゚ ´Д`) みんな
キモチ( ゚Д゚ )ワルイ
0807デフォルトの名無しさん
2006/02/13(月) 17:33:30レスありがとうございます。
タイマー用のスレッドってどういったものなんでしょうか?
settimerなど使用すればkillするまで、一定時間ごとにメッセージを投げてくれる。
メッセージはOnTimerで自動的に受け取れるという感じだと思うんですが
スレッドで実際やるとしたら…
void Chogehoge::OnOK()
{ 〜前処理〜
AfxBeginThread( TimerThrd, this, THREAD_PRIORITY_NORMAL);
}
UINT Chogehoge::TimerThrd ( void * ){
settimer(1,100,0 ); //?????
}
void CProtDlg::OnTimer(UINT nIDEvent)
{ 〜処理〜
}
これじゃ変わってませんよね…orz
どうすればいいんでしょう?
早めにまわして・・・
void CProtDlg::OnTimer(UINT nIDEvent)
{
SYSTEMTIME st; // 現在時刻
GetLocalTime(&st); // 現在時刻取得
if ( m_mill != ( st.wMilliseconds / 100 ) ){
〜処理〜
m_mill = st.wMilliseconds / 100;
}
}
# m_millはメンバ変数
これだと処理が重くなりますし…。
0808デフォルトの名無しさん
2006/02/13(月) 17:38:22VC++2005からは/YXが廃止されたから/Yuでおk
ただし、ちゃんとファイル名を指定するか、#pragma hdrstopを使うこと。
0809デフォルトの名無しさん
2006/02/13(月) 17:38:310810デフォルトの名無しさん
2006/02/13(月) 17:45:080811デフォルトの名無しさん
2006/02/13(月) 17:47:05CStringW
0812デフォルトの名無しさん
2006/02/13(月) 17:49:16インラインアセンブラのことだったら使える。
ただし拡張命令はSP6だとMMXどまり。
SP5にProcessorPackを当てると3DNow、SSE/SSE2まで。
0813デフォルトの名無しさん
2006/02/13(月) 18:00:13100ms毎になにやりたいんか知らないが、きっかり100msやるとしたら
専用ハードが無いと無理じゃないのかな。
そこそこの精度ならスレッド作って、GetTickCount()やパフォーマンスカウンタ見ながらループさせるとか。(負荷かかるけど)
0814807
2006/02/13(月) 18:53:51オシロからのデータをもれなく収集を行いたいというプログラムです。
現状は秒単位+msec単位を記述するとこんな感じです。
10.597
10.698
10.799
10.900 ←0.1sec飛んでる
11.001
という感じで間が飛んでしまうのを、何とかしたいというのが本題です。
時間は100msecまでしか、保存を行わないのでそれ以下は問いません。
難しく解釈してしまった方申し訳ないです。
スレッド内でループで時間判定…
UINT Chogehoge::TimeThrd( void * param ){
SYSTEMTIME st; // 現在時刻
mill_tmp = 0;
while(終了条件){
GetLocalTime(&st); // 現在時刻取得
if ( st.wMilliseconds / 100 ){
〜処理〜
mill_tmp = st.wMilliseconds / 100;
}
Sleep(50); // 負荷を下げたいので
}
}
# 上に書いたやつの2番煎じです…
これだといやでも負荷かかりますし…orz
0815デフォルトの名無しさん
2006/02/13(月) 18:54:57> 10.900 ←0.1sec飛んでる
( ゚Д゚)( ゚Д゚)( ゚Д゚) ( ゚Д゚ )
0816デフォルトの名無しさん
2006/02/13(月) 19:04:33大地震のまえぶれだろうか?
0817デフォルトの名無しさん
2006/02/13(月) 19:33:12そのデータだと、そこそこの精度がでているが。どこが0.1[s]
飛んでいるんだ?10.799はほぼ10.8だぞ。
タイマーは、別スレッド作られるはず。MSDN読め。
学部か修士ぐらいだろうが、自分で少しは調べろ。ためにならん。
0818デフォルトの名無しさん
2006/02/13(月) 19:34:17ms単位の経過時間が欲しければ、わざわざGetLocalTimeせんでもGetTickCount()でいいだろ。
0819デフォルトの名無しさん
2006/02/13(月) 19:37:13gettickcountは評判悪い
0820デフォルトの名無しさん
2006/02/13(月) 19:53:02RDTSCで読み続けるんだ!
0821デフォルトの名無しさん
2006/02/13(月) 19:54:34EPSファイルを、GIFファイルに、変更するフリーのDLLないでしょうか。
できれば、EPSを読み込んだあと、GetPixel()とかできるのがよいです・・。
0822デフォルトの名無しさん
2006/02/13(月) 21:09:00http://pc8.2ch.net/test/read.cgi/tech/1138893959/229
0823デフォルトの名無しさん
2006/02/13(月) 21:20:31VC++で、MFCのダイアログベースでテスト用のプログラムを作って色々試してたんですが
今しがた突然、デバッグをしようとF5を押すと、
「デバッグを開始できません プログラム 'EXEのフルパス' を開始できません。 アクセスが拒否されました。」
というメッセージボックスが出てデバッグができなくなりました。
プログラムを変更したのがいけなかったかと思い、Ctrl+Zで元に戻してリビルドしたりしても一向に直りません
Debugフォルダごと削除してビルドしなおしたりしてもダメでした
解消方法なと、どなたか心当たりありませんか?
0824デフォルトの名無しさん
2006/02/13(月) 21:21:06なんで?
0825デフォルトの名無しさん
2006/02/13(月) 21:23:030826デフォルトの名無しさん
2006/02/13(月) 21:24:42後でやってみます
0827デフォルトの名無しさん
2006/02/13(月) 21:29:24リブートしても直らない、に3000点
0828デフォルトの名無しさん
2006/02/13(月) 21:29:38削除できなかったりすることあるだろ?
再起動すると削除できるけど。
まぁ、あれみたいなもんだ。
0829デフォルトの名無しさん
2006/02/13(月) 22:41:23リブートしても直らない、に3000点
0830デフォルトの名無しさん
2006/02/13(月) 22:48:47何でこんなに大盛況なの??
0831デフォルトの名無しさん
2006/02/13(月) 23:06:47今度DirectXを使ってゲームを作ろうと思い、DirectX9 UpdateSummerをインストールしました。
ヘッダとライブラリのパスは設定したのですが、プログラムでDirectXのメソッドを呼び出そうとすると
外部参照エラーが発生します
-----------------------------------------------------------
リンクしています...
main.obj : error LNK2019: 未解決の外部シンボル _Direct3DCreate9@4 が関数 _WinMain@16 で参照されました。
D:\Visual Studio 2005\Projects\DXTEST\Debug\DXTEST.exe : fatal error LNK1120: 外部参照 1 が未解決です。
-----------------------------------------------------------
解決法がありましたら、どなたかお願い致します。
0832デフォルトの名無しさん
2006/02/13(月) 23:11:020833デフォルトの名無しさん
2006/02/14(火) 07:15:210835デフォルトの名無しさん
2006/02/14(火) 13:44:190836デフォルトの名無しさん
2006/02/14(火) 13:45:130837デフォルトの名無しさん
2006/02/14(火) 13:47:550838デフォルトの名無しさん
2006/02/15(水) 00:13:11なんでリブートしたら直ったのかは突き止めたの?
0839デフォルトの名無しさん
2006/02/15(水) 08:36:260840デフォルトの名無しさん
2006/02/16(木) 19:02:16有名な
1 #include <stdio.h>
2
3 main()
4 {
5 printf("Hello!\n");
6 }
が上手くできない・・・
新規プロジェクト作成でどこえらんでいいかもわからんしww
とりあえずオレにはC++無理ってことでFA???
0841デフォルトの名無しさん
2006/02/16(木) 19:07:19FA
0842デフォルトの名無しさん
2006/02/16(木) 19:08:080843デフォルトの名無しさん
2006/02/16(木) 19:10:43ところでそれはC++ではなくCなんだが・・・
0844デフォルトの名無しさん
2006/02/16(木) 19:22:330845デフォルトの名無しさん
2006/02/16(木) 19:23:200846デフォルトの名無しさん
2006/02/16(木) 19:36:38void main() に汁!または int main() にして最後に return 0; に汁
C++ 風にしたいなら <iostream.h>に汁!
0847デフォルトの名無しさん
2006/02/16(木) 20:22:30うそおしえるなよ。
0848デフォルトの名無しさん
2006/02/16(木) 21:20:310849デフォルトの名無しさん
2006/02/16(木) 21:25:360850デフォルトの名無しさん
2006/02/16(木) 21:27:33(2) <iostream.h>は古い。
#include <iostream>してusing namespace std;
0851デフォルトの名無しさん
2006/02/16(木) 21:40:140852デフォルトの名無しさん
2006/02/16(木) 22:39:18まともな解答が欲しければ何がどううまくいかないのか、どこで躓いているのか書け。
0853デフォルトの名無しさん
2006/02/17(金) 00:30:53単体で起動してcrashさせてからアタッチすると、どこからともなくプロジェクトを見つけてきて、そのうえソースまで表示してくれませんか?
あれってどうやってるんでしょう?どっかにexeの名前とソリューションの場所のテーブルでも持ってるんでしょうか?
0854デフォルトの名無しさん
2006/02/17(金) 00:31:46アセンブリキャッシュにでも書き込まれてるんじゃね?
0855デフォルトの名無しさん
2006/02/17(金) 06:14:400856デフォルトの名無しさん
2006/02/17(金) 09:58:21どこまで情報埋め込まれているか分からないから不安。
例えば何らかのフルパスが入ってるとすれば当然
Document and Settings\俺の名前\Visual Studio Projects\
みたいな情報も含まれているわけで、別に何か
困るわけでもないけど会社のPCだとそこは社員番号だったりして・・・
ちょっと嫌。
0857デフォルトの名無しさん
2006/02/17(金) 10:04:100858デフォルトの名無しさん
2006/02/17(金) 10:06:33pdbファイルのフルパスがバイナリに突っ込まれるよ。
VC++8は何故かReleaseビルドまでONがデフォルトなので注意。
0859デフォルトの名無しさん
2006/02/17(金) 10:16:09Exprはabstract classで、Negative、LiteralはExprをinheritしたものです。
たとえばMainの中で、
Expr* e = new Negative( new Literal(3) ); と表記すると、
e = -3 となります。
質問ですが、この状況でdelete eとやれば、newで作られたNegativeとLiteralもちゃんとdeleteされるんでしょうか?
もしされないのならどうすればいいのか教えてください。
Exprのデストラクタをvirtualにすればいいのかと思いましたが、どうやればいいのか分かりません。
よろしくお願いします。
0860デフォルトの名無しさん
2006/02/17(金) 15:21:00少なくともそのように設計されているなら、
それでいいだろ。
0861デフォルトの名無しさん
2006/02/17(金) 15:23:07?
>Exprのデストラクタをvirtualにすればいいのかと思いましたが、どうやればいいのか
virtual ~Expr() ;
0862デフォルトの名無しさん
2006/02/17(金) 15:56:450864デフォルトの名無しさん
2006/02/17(金) 16:55:59注意も何も、そんなオソロシイ場所にプロジェクトを作成するヤツが悪い
0865デフォルトの名無しさん
2006/02/17(金) 17:01:070866デフォルトの名無しさん
2006/02/17(金) 17:03:54管理も何も、そんなオソロシイ会社に就職するヤツが悪い
0867デフォルトの名無しさん
2006/02/17(金) 17:05:260868デフォルトの名無しさん
2006/02/17(金) 17:20:36そのIT部門のヤツらはバカ揃いか
つーか、おめぇはIT部門じゃねぇのかよ
0869デフォルトの名無しさん
2006/02/17(金) 17:23:090870デフォルトの名無しさん
2006/02/17(金) 17:49:420871デフォルトの名無しさん
2006/02/17(金) 19:13:34オッサンからのアドヴァイスです。
0872デフォルトの名無しさん
2006/02/17(金) 21:01:59そのフォルダの俺の名前は、VCをインストールする時に
入力する名前がフォルダ名になるって事?
0873デフォルトの名無しさん
2006/02/18(土) 00:10:55856に書いてある「俺の名前」(Document and Settingsの直下)は
Windowsのユーザー名が当てはまるところ。VC++とは何の関係も無い。
0874デフォルトの名無しさん
2006/02/18(土) 01:45:19俺がテストデータに使った得ろ動画もプロジェクトのどっかに残っていて
あとで納品後に見つかったらどうしようガクブル
0875デフォルトの名無しさん
2006/02/18(土) 02:17:25通常は表に出てこないから大丈夫では?
0876デフォルトの名無しさん
2006/02/18(土) 04:08:00#include<iostream>にするのが常識なんですか?
0877デフォルトの名無しさん
2006/02/18(土) 04:15:340878デフォルトの名無しさん
2006/02/18(土) 04:35:06<iostream.h>は古い書き方なので、.hつけないのが推奨。
int main(void)は、C++は型にうるさいのでつけた方がいいってことだろう。
0879デフォルトの名無しさん
2006/02/18(土) 05:50:29Debugは作った位置のパスがあったが、
Releaseの方は何も無い感じだった。
>>873
サンクス。そこで作品を作るとヤヴァイという事か。
デスクトップとか、ドライブのトップ辺りがいいのかな。
0880デフォルトの名無しさん
2006/02/18(土) 06:47:560881デフォルトの名無しさん
2006/02/18(土) 06:55:410882デフォルトの名無しさん
2006/02/18(土) 06:59:06>>858
0883デフォルトの名無しさん
2006/02/18(土) 07:10:42ヘッダファイルをインクルードする時のこと全般で言えば別に .h を書かないのが常識なんて無いよ
C++のSTL等一部のヘッダファイルが、そもそものファイル名自体に .h がつかなくなってるだけ
0884デフォルトの名無しさん
2006/02/18(土) 10:06:56VC++のヘッダ名 == ファイル名は実装方法の1つに過ぎない。
0885デフォルトの名無しさん
2006/02/18(土) 11:20:05あっw。すまん。
0886デフォルトの名無しさん
2006/02/18(土) 14:28:41× String str = "Hello";
○ String ^str = "Hello";
いちち^付けないといけないみたいですね、
^ってどういう意味よ?
くだすれVisual C++(超初心者用)で聞いたら
該当スレで聞いてみたら? って言われたんで
ここでよかったかな?
0887デフォルトの名無しさん
2006/02/18(土) 14:34:44【.NET】 C++/CLI について語ろうぜ 【最適】
http://pc8.2ch.net/test/read.cgi/tech/1126450441/
0888デフォルトの名無しさん
2006/02/18(土) 14:47:110889デフォルトの名無しさん
2006/02/18(土) 16:44:240890デフォルトの名無しさん
2006/02/18(土) 17:36:59今コマンドラインからサーバにアクセスするクライアントプログラムを作っていて、
コマンドラインから動かす時にいろんなオプションをつける事が必要なのでgetoptを使っています。
int option = getopt(argc, argv, "p:s:r:f:");
switch(option)
case 'f' : filename = optarg; break;
の様に使っているのですが、引数が複数ある場合にどうすればいいかわかりません。
例えば、 prog -s 1.1.1.1 80 とコマンドラインから動かした場合、
optargに1.1.1.1は入ってるのですがどうやって80を取り出せばいいのか分かりません。
よろしくお願いします。
0891デフォルトの名無しさん
2006/02/18(土) 17:39:58まぁ、仕様をよく確認しろって話な訳だが。
・引き数つきオプションの取れる引き数は一つだけ。
・オプションではないパラメータはオプション処理後にargvから取り出す。
0892デフォルトの名無しさん
2006/02/18(土) 17:46:45WinMainで渡されてくるパラメータ(特にHINSTANCE)って、どこかに保存してますか?
俺はグローバルにコピーして置いてるんですが、こんなやり方でも問題無いですよね?
(↑グローバルはあんまり使うなと言われているので)
それとも何かお勧めの方法があったら参考までに教えて下さい。よろしくお願いします。
0894デフォルトの名無しさん
2006/02/18(土) 17:57:59<windowsx.h>のGetWindowInstanceを使えば、
ウィンドウハンドルから関連するインスタンスハンドルが手に入るから、それを俺は使っている。
0895デフォルトの名無しさん
2006/02/18(土) 18:00:26そんなAPIあったんだね。ありがと。
0896デフォルトの名無しさん
2006/02/18(土) 18:13:24自分のクラスライブラリのシングルトンのクラスにあるSystem::Drawing::Size型のプロパティを変更しようとしたら
p->Size = System::Drawing::Size(64, 64);
と設定はできるのですが、
p->Size.Width = 64;
のように個別に設定しようとしたら必ず0になってしまいます。
どうすれば個別に設定できるようになりますか。
0897デフォルトの名無しさん
2006/02/18(土) 18:17:23>>887
0898デフォルトの名無しさん
2006/02/18(土) 19:02:550899デフォルトの名無しさん
2006/02/18(土) 19:24:57> 637 名前:デフォルトの名無しさん[sage] 投稿日:2006/02/18(土) 17:01:58
> GUI でモノを作りたければ、素直に MFC に進んだ方がいいと思われ
> C++/CLI はちと初心者にはお勧めできない。普通の方法では満足できなくなった玄人向け
> だから
> あとは、635 の進めるとおり、C# でモノを作ってみて満足できなくなったら、またこちらに
> 出戻ってくると言うのもいい
0900デフォルトの名無しさん
2006/02/18(土) 19:37:09立て逃げでよければ俺が立ててやってもいいけど
0901デフォルトの名無しさん
2006/02/18(土) 19:42:520902デフォルトの名無しさん
2006/02/18(土) 19:51:330903デフォルトの名無しさん
2006/02/18(土) 19:52:040904デフォルトの名無しさん
2006/02/18(土) 20:42:49略された単語をしっかり見ると分かるもんですね
0905デフォルトの名無しさん
2006/02/18(土) 20:59:30秀和システム発行VisualC++逆引き大全 500の極意から
一部抜粋のプログラムなのですがコンパイルできません
プログラムの振る舞いとしては,を!に変換するだけの事なのですが
.\list_2.cpp(9) : error C2440: '=' : 'const char [2]' から 'char' に変換できません。
この変換が可能なコンテキストはありません。
2005のC++ではchar型の変数を定数として扱っているのでしょうか?
#include "stdafx.h"
#include <iostream>
using namespace std;
int main(void)
{
char buf1[13]="Hello, world";
buf1[5]="!";
cout << buf1 << endl;
return 0;
}
0906デフォルトの名無しさん
2006/02/18(土) 21:07:520907デフォルトの名無しさん
2006/02/18(土) 21:09:17buf1[5]="!";
↓
buf1[5] = '!';
にしてみてくれ。
上のコードだと、!とぬるぽが入るから2文字になちゃーうよ
0908896
2006/02/18(土) 21:10:400909デフォルトの名無しさん
2006/02/18(土) 21:11:28'\0' はヌルポではない!
0910デフォルトの名無しさん
2006/02/18(土) 21:18:49うん知ってるw
誰かにガッされたかったんだ。
今は反省している。
0911デフォルトの名無しさん
2006/02/18(土) 21:24:02スマソbuf1[5] = '!'; でやっても同じです秀和システムのHPからソースDLしてもやっぱり一緒でしたガ━━(;゚Д゚)━━ン!!
因みそのソース貼らせてもらいます本では
char buf1[13]="Hello, world"; //文字の配列を確保します。
char buf2[]="Hello, world"; //これでもOKです。
でしたが下記の様に変わっていました
#include "stdafx.h"
#include <iostream>
using namespace std;
int main(void)
{
//char buf1[13]="Hello, world"; //文字の配列を確保します。
const wchar_t* buf1[13]="Hello, world"; //文字の配列を確保します。
const wchar_t* buf2[]="Hello, world"; //これでもOKです。
buf1[5]='!'; // 6文字目を!に変えます。
cout << buf1 << endl;
// 6文字目をヌル文字にすると、文字列はそこで終わりになります。
buf1[5]=0;
cout << buf1 << endl;
//文字列を全部1から作成することもできます。
char buf3[10];
buf3[0]='H';
buf3[1]='e';
buf3[2]='l';
buf3[3]='l';
buf3[4]='o';
buf3[5]=0; //最後の0(ヌル文字)を忘れずに
//要素数が余る分には問題はありません。
cout << buf3 << endl;
}
0912905
2006/02/18(土) 21:32:32なんでだろう?
0913デフォルトの名無しさん
2006/02/18(土) 21:33:20> const wchar_t* buf1[13]="Hello, world"; //文字の配列を確保します。
> const wchar_t* buf2[]="Hello, world"; //これでもOKです。
全然良くない。
あと、ヌル文字は0でも問題ないが、'\0'が一般的。
0914デフォルトの名無しさん
2006/02/18(土) 21:42:21このスレでその辺の低レベルな質問に答えてるのは初心者だから
0915デフォルトの名無しさん
2006/02/18(土) 21:46:57const wchar_t* ってどっからでてきたんだw
#include <iostream>
using namespace std;
int main(void)
{
char buf1[13]="Hello, world"; //文字の配列を確保します。
char buf2[]="Hello, world"; //これでもOKです。
buf1[5]='!'; // 6文字目を!に変えます。
cout << buf1 << endl;
// 6文字目をヌル文字にすると、文字列はそこで終わりになります。
buf1[5]=0;
cout << buf1 << endl;
//文字列を全部1から作成することもできます。
char buf3[10];
buf3[0]='H';
buf3[1]='e';
buf3[2]='l';
buf3[3]='l';
buf3[4]='o';
buf3[5]=0; //最後の0(ヌル文字)を忘れずに
//要素数が余る分には問題はありません。
cout << buf3 << endl;
}
0916905
2006/02/18(土) 21:49:13.\list_2.cpp(8) : error C2440: '初期化中' : 'const char [13]' から 'const wchar_t *[13]' に変換できません。
この変換が可能なコンテキストはありません。
こんな調子です(;´∀`)
Borland C++は
#include "stdafx.h"
をコメントアウトして
const wchar_t* buf1[13]="Hello, world"; //文字の配列を確保します。
const wchar_t* buf2[]="Hello, world"; //これでもOKです。
↓
char buf1[13]="Hello, world";
char buf2[]="Hello, world";
こうしたらすんなりコンパイルできました
0917デフォルトの名無しさん
2006/02/18(土) 21:53:19VC++でもそうしたら?
0918905
2006/02/18(土) 21:54:35ここですが
ttp://www.shuwasystem.co.jp/books/7980/1096-0/1096-0.html
Visual C++ .NET 逆引き大全 500の極意
サポート項目 > 【ダウンロード】
この度は、「Visual C++ .NET 逆引き大全 500の極意 」をお買い上げいただきありがとうございました。
本書には以下のサポートがあります。 (2005/6/27更新)
0919デフォルトの名無しさん
2006/02/18(土) 21:55:17気づけよ
0921デフォルトの名無しさん
2006/02/18(土) 21:59:270923デフォルトの名無しさん
2006/02/18(土) 22:02:24足さんでもいいと思うんだが。
0924905
2006/02/18(土) 22:09:18解凍して、p51-2.cppのファイルをWクリックしてVisual Studioを起動したら
確かに、
const wchar_t* buf1[13]="Hello, world"; //文字の配列を確保します。
const wchar_t* buf2[]="Hello, world"; //これでもOKです。
に変わっていました、今再解凍して確かめたら、
char buf1[13]="Hello, world"; //文字の配列を確保します。
char buf2[]="Hello, world"; //これでもOKです。
だったYO
>>923
確かにそうですね藁
0925デフォルトの名無しさん
2006/02/18(土) 22:43:03VC++6.0、WindowsXP HomeEdition SP2
----------------------------------
習作でMIDIを解読、線形リストに登録するプログラムを作成したのですが、
データの多いMIDIを扱った場合エラーも無くプログラムが終了してしまうことがあります。
for(int i=0;i<tracks;i++)
{
printf("[%02d]トラックを読み込み...",i);
pnt = trackdata[i].Init(pnt);
printf("完了\n");
}
上記の部分で、「〜読み込み...」まではでるのですが、「完了」の文字が出る前に
exit() でもやったかのようにプログラムが終了してしまいます。
ファイルサイズの少ないMIDIファイルでは問題なく動作しています。
ひょっとしたらと思うのですが、メモリを使いすぎると勝手にプログラムが終了してしまうということはあるのでしょうか?
0926デフォルトの名無しさん
2006/02/18(土) 23:28:370927デフォルトの名無しさん
2006/02/19(日) 00:27:40右クリックでも「イベントの追加」が出てこないのですが。
0928デフォルトの名無しさん
2006/02/19(日) 01:56:19Visual C++って今では
Visual C++ 2005
Visual C++ .NET 2003
とありますが、それより前のVisual C++ 6.0で
Windows用のアプリを作っていくことにおいて
今後問題があるようなことってありますか?
0929デフォルトの名無しさん
2006/02/19(日) 01:58:35それ以前はC++標準への準拠度が低く、STLすら完全に使えない。
Cを使うのなら別に問題ないだろうけど。
0930デフォルトの名無しさん
2006/02/19(日) 02:07:26>STLすら完全に使えない。
なるほど、レスありがとうございました。やっぱす最新版を買い直すかな・・・
0931デフォルトの名無しさん
2006/02/19(日) 03:54:57ヘルプを読んでみても記述されている箇所が見当たりません。
0932デフォルトの名無しさん
2006/02/19(日) 06:09:180933デフォルトの名無しさん
2006/02/19(日) 14:14:52WinMain関数の最後にreturn msg.lParam; を行いますが、この後またWinMainに戻って来るというバグが出ました。
Debugモードだと出ないのに、Releaseモードでだけ出る現象なのでどうやって追えば良いか解らないのですが、Releaseモードでコンパイルした
exeをIDE側のソースコードと連動させるにはどうしたら良いのでしょうか。
そもそも、WinMainにまた戻ってくるというのはどういう原因が考えられるでしょうか?
0934デフォルトの名無しさん
2006/02/19(日) 15:05:560935デフォルトの名無しさん
2006/02/19(日) 15:53:40デフォルトではリリースでもデバッグできる。
0936デフォルトの名無しさん
2006/02/19(日) 16:03:58あれ、マジっすか。ポカやってしまいましたか。
>>935
付属してるMSDN見ながらやってるんですが、どうも最適化でぐちゃぐちゃになるっぽくてうまくいかんのです。
コードの実行速度の最適化 だけで出る現象なんですよねぇ。。。。。
サイズの最適化やデフォルトだと出ないと言う。
ぐぐりながらいろいろ施行してみます。
0937デフォルトの名無しさん
2006/02/19(日) 17:40:44最適化したコードでブレークポイントを設定しているとデバッガが混乱することがあるけど大丈夫?
0938デフォルトの名無しさん
2006/02/20(月) 05:52:310939デフォルトの名無しさん
2006/02/20(月) 06:04:59VC++は _MSC_VER というマクロシンボルを定義してる
Borlandのが何を定義してるかは知らんが、同じように
何か固有の物を定義してるはず。
それを#ifdefで調べろ
0940デフォルトの名無しさん
2006/02/20(月) 16:21:430941デフォルトの名無しさん
2006/02/20(月) 18:25:48#ifdef _MSC_VER
#else
#endif
でいいべ?
0942デフォルトの名無しさん
2006/02/21(火) 02:10:01VC++でなくても定義されるはず
BOOST_MSVCでいけ
0943デフォルトの名無しさん
2006/02/21(火) 02:19:58されてないされてない。
それに生のVC++使ってもBOOST_MSVCなんか定義されないし。
0944デフォルトの名無しさん
2006/02/21(火) 02:35:06されているされている
君はもうレスするな。
BOOST_MSVC
Defined if the compiler is really Microsoft Visual C++, as opposed to one of the many other compilers that also define _MSC_VER.
0945デフォルトの名無しさん
2006/02/21(火) 02:47:53どれほどの意味があるわけ?
0946デフォルトの名無しさん
2006/02/21(火) 03:26:560947デフォルトの名無しさん
2006/02/21(火) 07:48:410948デフォルトの名無しさん
2006/02/21(火) 08:47:33ttp://www.boost.org/boost/config/compiler/visualc.hpp
0949942=944=948
2006/02/21(火) 08:55:080950デフォルトの名無しさん
2006/02/21(火) 12:20:270951デフォルトの名無しさん
2006/02/21(火) 12:35:57どんな思考回路なら素のVCで定義されてると思えるんだろうな
0952デフォルトの名無しさん
2006/02/21(火) 14:38:55おーい、逃げるな。せめて>>946には答えていけ。
0953デフォルトの名無しさん
2006/02/21(火) 19:52:010954デフォルトの名無しさん
2006/02/21(火) 21:46:300955デフォルトの名無しさん
2006/02/21(火) 22:04:13あれをみたときはへー、と思ったものだ。
0956デフォルトの名無しさん
2006/02/21(火) 23:48:040957デフォルトの名無しさん
2006/02/22(水) 20:35:040958デフォルトの名無しさん
2006/02/22(水) 23:41:55VC++ 6.0 で動いていたプロジェクトを 2005 でビルドすると、libc.lib が見つかりませんというリンクエラーがおきました。
コンパイルオプションでは /ML ではなく /MT を指定しており、他に libc.lib とリンクしている箇所が見当たらないのですが、
なぜか自動的にリンクしようとします。
廃止されたライブラリがデフォルトでリンクされるというのも考えづらいのですが、
とりあえず現在は、「特定のライブラリを無視する」 に libc.lib を入れてエラーを回避しています。
が、何かが間違っている気がします。
なぜ libc.lib にリンクしようとするのか、もっとスマートにエラーを解決する方法はないのか。
よろしくお願いします。
0959デフォルトの名無しさん
2006/02/22(水) 23:47:430960デフォルトの名無しさん
2006/02/23(木) 00:34:43コードのプロファイルをしたいと思っています。
Visual C++.net standard version 2003を使っているのですが、
そもそも、そんな機能はあるのでしょうか?
プロファイラに手をだそうと思ったのがはじめてで、いろいろ検索してみたのですが
いまいちよくわかりません。
何か参考になるweb等あれば教えていただければ幸いです。
よろしくお願いします。
0961デフォルトの名無しさん
2006/02/23(木) 08:28:42お教えいただけないでしょうか・・・。
libc.lib で検索しても、/ML を指定して標準 C++ ライブラリのヘッダをインクルードすれば libc.lib にリンクされる、
2005 では /ML は廃止された、までの情報しか取得できませんでした。
0962デフォルトの名無しさん
2006/02/23(木) 10:23:01Cfileでバイナリファイルを扱おうと、afx.hをincludeしたら、エラーが山のように出ました
Form1.hの#pragma onceの上に入れたんですけど間違い?
10年以上前にTurbo Cで組んでた時とは環境が全然違うので戸惑ってます
0963デフォルトの名無しさん
2006/02/23(木) 12:59:35そもそもMFCプロジェクト?
0964デフォルトの名無しさん
2006/02/23(木) 13:27:210965デフォルトの名無しさん
2006/02/23(木) 17:30:301CPUのWindows XP Pro環境で、VC++.NET(MFC)にてアプリを作成しています。
A,B,Cの3つのスレッドから参照される、Xというクラスがあります。
Xクラスは、配列構造のデータ領域を持ち、以下の3つのメソッドでその
データ領域にアクセスすることができます。
・Add 配列の次の要素にデータを入れる
・Get 配列の次の要素のデータを返す
・Remove 配列の次の要素のデータを削除する
※それぞれのメソッドは、内部的に次の要素のインデックスを管理して
おり、データ領域の前から順に操作を実行します
このXクラスは、アプリのメインスレッドでインスタンス化され、スレッド
A、Bはそのポインタを使ってアクセスしています(つまり、Xクラスオブジェ
クトは1つ)。
スレッドA,Bからは、次々にAddメソッドでデータを投入されます。
スレッドCからは、次々にGetメソッドで要素を取得し、Removeで削除して
いきます。
↓続く
0966デフォルトの名無しさん
2006/02/23(木) 17:31:44コールは起きうるでしょうか?
気にしているのは、Addメソッドが同時に処理されてしまうと、内部で管理
しているインデックス値が、それぞれの処理で重なってしまい、片方のAdd
データが他方のAddで消されてしまうのではないかということです。
CPUが1つで、オブジェクトも1つなので、このような現象は発生しないと
考えているのですが、どうでしょうか?
みなさんのお知恵をお貸しくださいm(_ _)m
0967デフォルトの名無しさん
2006/02/23(木) 18:01:51スレッドAがAddの途中でCPUの処理が他のスレッドに移ることがあるのは当然。
スレッドAがAddしているときにスレッドBにCPUが移ってAddするのは確率の問題。
0968デフォルトの名無しさん
2006/02/23(木) 18:02:460969デフォルトの名無しさん
2006/02/23(木) 18:03:460970デフォルトの名無しさん
2006/02/23(木) 18:06:04そんなこと考慮してたら、他のスレッドに切り替えられないだろ!
0971965
2006/02/23(木) 18:31:06Windowsのマルチタスクは、タイムスライスではないと思っていたので
すが、タイムスライス方式なんですか?
処理をOSに戻すまでは、別のスレッド・プロセスに処理が移ることは
ないと思っていたのですが・・・
どうやら、私の勘違いだったようで...
0972デフォルトの名無しさん
2006/02/23(木) 18:41:57Win95からそうだけど…そうじゃなかったのは、Win3.1だよ。
0973デフォルトの名無しさん
2006/02/23(木) 18:42:160974デフォルトの名無しさん
2006/02/23(木) 18:42:240975965
2006/02/23(木) 18:43:54#お恥ずかしいm(_ _)m
969さんの指摘に注意しつつ、セマフォをぶち込むことにします。
ありがとうございました。
0976デフォルトの名無しさん
2006/02/23(木) 18:44:20昔の16ビットWindowsはたしかにノンプリエンプティブなマルチタスクだった。
今の32/64ビットWindowsはプリエンティブなマルチタスクになっている。
0977デフォルトの名無しさん
2006/02/23(木) 18:45:34なんてAPIで処理をOSを戻してたの?
0978デフォルトの名無しさん
2006/02/23(木) 18:47:390979デフォルトの名無しさん
2006/02/23(木) 18:47:47わかっているとは思うがスレッドCからGetするときも気をつけるように。
古いインデックスを頼りに範囲外アクセスなんていったら泣きだからな。
0980デフォルトの名無しさん
2006/02/23(木) 22:04:32配列宣言をこうすれば巧くいきますが
int a[9]={1,2,3,4,5,6,7,8,9};
int b[9]={1,2,3,4,5,6,7,8,9};
向学心から、C++では配列のコピーが出来ないのだろうかと
考え小一時間、答えが出せません
コピーの仕方があれば教えてください、
具具ってみたらJAVAにはあるみたいなんですが、C++には無いのかな?
// p99.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//掛け算九九JR━―━―━(゚∀゚)━―━―━― !!
#include "stdafx.h"
#include <iostream>
using namespace std;
int main(void)
{
int a[9]={1,2,3,4,5,6,7,8,9};
int b[9];
a[9]=b[9];//コンパイルは通るが、実行したら、わけわかめのエラーがでる
//int b[9]={1,2,3,4,5,6,7,8,9};
for(int j=0; j<9; j++){
for(int i=0; i<9; i++){
cout << a[j]*b[i] << " ";
}
cout << endl;
}
}
0981デフォルトの名無しさん
2006/02/23(木) 22:26:31バカかおめぇ?
そんな配列要らねぇし
仮に配列使うとして、配列1つでいいし
0982デフォルトの名無しさん
2006/02/23(木) 22:32:52っていうか、配列のコピーの仕方教えてくれろ
こうだろ↓
#include "stdafx.h"
#include <iostream>
using namespace std;
int main(void)
{
int a[9]={1,2,3,4,5,6,7,8,9};
for(int j=0; j<9; j++){
for(int i=0; i<9; i++){
cout << a[j]*a[i] << " ";
}
cout << endl;
}
}
0983デフォルトの名無しさん
2006/02/23(木) 22:34:36a[9]=b[9];
これが何をしているのか理解できないのなら、C/C++の基本がなってないという事。
最初から勉強しなおす事をお勧めする。
0984デフォルトの名無しさん
2006/02/23(木) 22:42:53#include "stdafx.h"
#include <iostream>
using namespace std;
int main(void)
{
for(int j=1; j<10; j++){
for(int i=1; i<10; i++){
cout << j*i << " ";
}
cout << endl;
}
}
0985デフォルトの名無しさん
2006/02/23(木) 22:43:44・STLのコンテナを使う。
・配列をメンバに持つ構造体を使う。
・配列の要素を一つずつコピーする。
0986デフォルトの名無しさん
2006/02/23(木) 22:47:54( ・∀・)アヒャ
int a[9]={1,2,3,4,5,6,7,8,9};
を構造体宣言すれば、配列bにコピー出来るのも、既に分かっている
っていうかもっと、簡単なコマンドってないのかなと
聞いてみる
0987デフォルトの名無しさん
2006/02/23(木) 22:53:28ん?
コンテナなるものがあるのか
>>・STLのコンテナを使う。
これ(・∀・)イイ!!
>>・配列をメンバに持つ構造体を使う。
漏れでも使える
>>・配列の要素を一つずつコピーする。
これも使える
どう書くの?
教えて( ゚д゚)クレー
0988デフォルトの名無しさん
2006/02/23(木) 22:58:520989デフォルトの名無しさん
2006/02/23(木) 23:03:00STLのコンテナ
<ノ丶`Д´>ノ マンセー
0990デフォルトの名無しさん
2006/02/23(木) 23:04:250991デフォルトの名無しさん
2006/02/23(木) 23:04:46memcpyじゃだめなの?
0992デフォルトの名無しさん
2006/02/23(木) 23:06:150993デフォルトの名無しさん
2006/02/23(木) 23:12:290994デフォルトの名無しさん
2006/02/23(木) 23:15:37ちょっとやってみよう、だめだったらC++行きたいが
ねもいしな
0995964
2006/02/24(金) 00:04:15int b[9];
memcpy(b, a, sizeof(a));
C言語初心者スレに行ってくださいm(__)m
0996デフォルトの名無しさん
2006/02/24(金) 00:05:29( ´Д`) 黙れリストビュー
0997デフォルトの名無しさん
2006/02/24(金) 00:05:55( ´Д`) 黙れチェックボックス
0998958
2006/02/24(金) 00:44:50/MT、/MTd、どちらにしても libc.lib とのリンクエラーが出ます。(libcd.lib ではない)
何度かフルコンパイルも行ってるのですが・・・。
0999デフォルトの名無しさん
2006/02/24(金) 00:47:121000デフォルトの名無しさん
2006/02/24(金) 00:47:43:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_ 1000
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ ├┤|
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。