トップページ⇒tech
1001コメント362KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2009/06/19(金) 12:39:29
Visual C++入門者・初心者からの質問を、
お兄ちゃんお姉ちゃん達が優しく、時には厳しく回答してくれるスレッドです。

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

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

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

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

【過去スレ】
Part33 ttp://pc12.2ch.net/test/read.cgi/tech/1235292263/
Part32 ttp://pc11.2ch.net/test/read.cgi/tech/1225422971/
Part31 ttp://pc11.2ch.net/test/read.cgi/tech/1217494948/
0153デフォルトの名無しさん2009/07/12(日) 12:55:01
>>152
そういう質問ばかり増えるとおれらが困るので調べ方を教えておく

MSDNで目的の関数(ここではLoadImage関数)の解説を出す
http://msdn.microsoft.com/ja-jp/library/cc364835.aspx

最後のほうに
ヘッダーファイル xxxx.h をインクルード
ライブラリ xxxx.lib を使用

とか書いてある。それでもだめなら聞きに来なされれ
0154デフォルトの名無しさん2009/07/12(日) 12:56:44
Formだったら.netのみでやった方が簡単な気がする
0155デフォルトの名無しさん2009/07/12(日) 13:02:59
俺にはFormアプリケーションを作った経験はないんだが、Formアプリケーションって
APIを使う場合は必要なLibをいちいち全部自前でリンクしなきゃならないのかい?
0156デフォルトの名無しさん2009/07/12(日) 13:13:52
俺もFormアプリは詳しくないけど
C言語系では必要なLIBは自分で指定すんのが基本だからな

宿題スレなんか見てると、よく数学ライブラリをリンクしないで
コンパイル通りませーんって泣いてる初心者がいるよなw
0157デフォルトの名無しさん2009/07/12(日) 13:14:49
どんな形かは判らんが大抵使うよ宣言が要るんじゃないか
01581422009/07/12(日) 13:56:11
>>153
教えてくださったページで、無事コンパイルが通りました。
ありがとうございます。
0159デフォルトの名無しさん2009/07/12(日) 14:30:21
>>149
C#はC++とは全く別の言語だぞ。名前がよく似ているだけで。
0160デフォルトの名無しさん2009/07/12(日) 15:03:06
>>149
C#はクソ言語
・・・とまでは言わないけど、
Javaと同じでC++より楽に習得できる。

C++はバカには使えないほど高度(変態)な言語だが
使いこなせるヤツはもう本当にすごい。

ちなみに俺はまだまだまだまだ使いこなせてません。
0161デフォルトの名無しさん2009/07/12(日) 15:27:24
つか、MFCくらいが一番面白い。
0162デフォルトの名無しさん2009/07/12(日) 16:01:46
じゃあ三つとも覚えればいいんですね
API 始めたばっかだけど
0163デフォルトの名無しさん2009/07/12(日) 18:08:11
visual C++2008を使っているのですが、cppファイルを開こうとするとメモ帳が表示されて、バイナリー表示?されてコードが見れないのですが
改善方法を教えてください。DirectX SDK November2007が入ってます。OSはXPSP3です。
0164デフォルトの名無しさん2009/07/12(日) 18:29:28
>>163
cppはテキストファィルだが、どこからどうやって開こうとしてる?
たとえばエクスプローラーからcppファイルをダブルクリック、とか
IDEからcppを右クリックしてコードを表示、とか。
0165デフォルトの名無しさん2009/07/12(日) 23:21:49
>>164
レス遅れましてすいません。
ソリューション開いてソースフォルダにあるcppファイルをダブルクリックで開こうとしてます。
0166デフォルトの名無しさん2009/07/13(月) 00:20:02
ダブルクリックの代わりに右クリックからファイルを開くアプリケーションの選択でどうか
うまくいったら規定値に設定で
0167デフォルトの名無しさん2009/07/13(月) 00:55:16
>>166
うまくいかないです・・・。VC上で開くことは出来たのですが文字化けしててダメでした。
VC入れなおしても直らないし、ウイルスに感染してるので設定がめちゃくちゃになったのかもしれません。
なのでOS入れなおすことにしました。お騒がせしてすいません。レスありがとうございました。
0168デフォルトの名無しさん2009/07/13(月) 11:55:25
文字化けは最初の質問とは別の話だな
0169デフォルトの名無しさん2009/07/13(月) 21:05:41
CLRプロジェクトの中で書かれたコードは、.NET Frameworkのライブラリを使わなくてもマネージドコードという扱いになるのでしょうか?
0170デフォルトの名無しさん2009/07/13(月) 21:18:16
そうだよ。
C#でclass C {static void Main() {}}のような何もしないプログラムを書いても
.NET Frameworkが実行に必要なのと同じようなことと言えばいいかな。

そうではなくて、ネイティブコードを混ぜたいという意味なら、
#pragma unmanagedなどで切り替えできる。
0171デフォルトの名無しさん2009/07/13(月) 21:21:49
>>170
よくわかりました
ありがとうございます
0172デフォルトの名無しさん2009/07/14(火) 17:38:13
VC++のC++で、現在のスタック領域の大きさを取り出す方法ありませんか?
スタックが少なくなったらエラー処理がしたいので、お願いします。
0173デフォルトの名無しさん2009/07/14(火) 17:41:25
>>172
スタックオーバーフローを回避したいならヒープ領域を使えば?
0174デフォルトの名無しさん2009/07/14(火) 17:46:43
いや、再帰処理のプログラムにエラー処理を組込みたいので。
現在は異常終了してしまうし。固定値で検査は出来るけど、
固定値は入れたくないし。
0175デフォルトの名無しさん2009/07/14(火) 17:55:17
ESP見るとか
0176デフォルトの名無しさん2009/07/14(火) 17:57:13
>>174
スタックオーバフローチェックのコンパイラオプションではダメなの?
0177デフォルトの名無しさん2009/07/14(火) 18:01:46
そもそも、スタックオーバーフローになるような組み方をしている再帰処理に問題があるんじゃないか?
0178デフォルトの名無しさん2009/07/14(火) 18:07:27
離散数学の問題を解くようなプログラムだと簡単にオーバーフローしちゃうから
その辺はプログラムを作るときに工夫するよう、自分で考えたほうがいい。
あれは簡単には解けない、ってことを確認するのも勉強のうちだから。
学生じゃなかったら的外れな回答でごめん。
0179デフォルトの名無しさん2009/07/14(火) 18:17:52
まあ、たしかに、スタックオーバーフローするようなプログラムにしない、
と言うのは正しい。しかしまあ、出来るならば再帰の中で検査をしたいと
思っています。今現在は#define STACKSIZE  1000000 で固定値で
検査をしているのですが、コンパイルオプション変えるたびにプログラム
修正もいやだなーと。しかし、調べた限り簡単では出そうに無いですね。
あきらめて固定値で行こうと思います。
0180デフォルトの名無しさん2009/07/14(火) 18:37:58
こういうの見た?
ttp://www.nminoru.jp/~nminoru/programming/stackoverflow_handling.html
0181デフォルトの名無しさん2009/07/14(火) 19:29:38
ありがとうございます。でも今やってみたのですが。
コンパイルスタック指定 1000000で下記のような出力に。
[00130000 00126000]
p=0012FF60
dat p=001177DB
dat p=000FF047
dat p=000E68B3
dat p=000CE11F
dat p=000B598B
dat p=0009D1F7
dat p=00084A63
dat p=0006C2CF
dat p=00053B3B
dat p=0003B3A7  <−ここの次でスタックオーバーフロー
プログラムは、下記ですが、出力が納得できない…
NT_TIB* getTIB(void) {
NT_TIB* pTib;
__asm {
mov eax, dword ptr FS:[18H];
mov pTib, eax;
}
return pTib;
}
void testp() {
 char buf[100000]; char dat;
 printf("dat p=%p\n",&dat); testp();
}
int _tmain(int argc, _TCHAR* argv[]) {
 NT_TIB* pTIB = getTIB();
 printf("[%08x %08x]\n", pTIB->StackBase, pTIB->StackLimit);
 printf("p=%p\n",&pTIB); testp(); return 0;
}
0182デフォルトの名無しさん2009/07/14(火) 19:31:58
行数オーバーで圧縮しています。
[00130000 00126000]
のStackBase,とStackLimitの範囲が1000000も無い、
スタックオーバフローは約1000000でオーバーしているので正しい
なぜなんだろう?
0183デフォルトの名無しさん2009/07/14(火) 19:32:48
文字列の処理について教えてください。
VisualStudioでC++のプロジェクトを作ると、以下のようなグローバル変数が自動的に宣言されますが、

    TCHAR szTitle[MAX_LOADSTRING];  // タイトル バーのテキスト

ここにTCHAR型のローカル変数と同じ方法で文字列を代入しようとすると
コンパイルエラーになってしまいます。

    TCHAR test[MAX_LOADSTRING] = _T("これは大丈夫");
    szTitle = _T("エラーになる");

同じ型の変数を宣言しているつもりですが、結果が違ってしまうのはどうしてでしょう?
0184デフォルトの名無しさん2009/07/14(火) 19:34:34
>>183
C言語の入門書本屋で買ってこい
01851812009/07/14(火) 19:36:01
う〜〜ん、他のHPで、わざとスタックオーバーフローさせて、サイズ検出が
あったが、それしかないのか? ちょっとやってみる。
0186デフォルトの名無しさん2009/07/14(火) 19:37:56
>>185
だからぁ、>176じゃダメなの?
0187デフォルトの名無しさん2009/07/14(火) 19:40:47
>>186
/RTC、/GSの事なら全くの別物
0188デフォルトの名無しさん2009/07/14(火) 19:47:21
>>182
コミット済みのサイズだからじゃね
01891812009/07/14(火) 20:07:36
>>188
コミットのサイズ変えても、出力は変わらず。
う〜〜ん、例外検出がなかなかうまくいかず。
それにわざとエラー出して、サイズ検出もなんとなく納得できないし、
結局、固定で持ったほうが早そうな気がしてきました。
どうせコンパイルするんだし…
皆さんありがとうございました。
01901812009/07/14(火) 20:18:00
補足。testp()の中にスタック情報出すのを入れた場合下記のよう。
やはりコミットで増えるようですね。最大値は相変わらず不明ですが。
[00130000 00126000]
p=0012FF50
[00130000 00117000]
dat p=001177B7
[00130000 000fe000]
dat p=000FF003
[00130000 000e6000]
dat p=000E684F
[00130000 000cd000]
dat p=000CE09B
[00130000 000b5000]
dat p=000B58E7
[00130000 0009c000]
dat p=0009D133
[00130000 00084000]
dat p=0008497F
[00130000 0006b000]
dat p=0006C1CB
[00130000 00053000]
dat p=00053A17
[00130000 0003b000]
dat p=0003B263
この後オーバーフロー
0191デフォルトの名無しさん2009/07/15(水) 09:39:53
>>184
馬鹿だから答えられないのですね。
書き込むな!クズ!
0192デフォルトの名無しさん2009/07/15(水) 09:55:29
>>191
その一言でキミの相手するやつは激減したよ。
いつもそんな調子だから人に相手されなくなるんだよ。
0193デフォルトの名無しさん2009/07/15(水) 09:59:10
>>183
文字列もどきの処理は、型によってケースバイケースでわかりにくいからねえ。
もうちょっとマクロとか関数が整理されてたらよかったんだけど。
そういうのの一覧が載った本を見たほうが早いと俺も思うよ。
さもなくば、文字列がもうちょっと簡単に使えるC#あたりに乗り換えるか。

その場合は
_tcscpy_s(szTitle, _T("てすと"));
ただしコピー先のサイズは固定で自動的に拡張してくれないから
文字列の長さがコピー先の容量を超えてると代入に失敗する。
コンパイル時か実行時か、どちらか容量オーバーが発見されたタイミングでエラーが出る。
0194デフォルトの名無しさん2009/07/15(水) 10:13:06
そういうのも代入と言う?
馬鹿がうつった?
0195デフォルトの名無しさん2009/07/15(水) 10:49:59
父ちゃんに言われなかったか?
やらないのはできないのと一緒だって
早くハロワ行けよ
0196デフォルトの名無しさん2009/07/15(水) 23:35:30
総合開発環境の下部のメッセージ部分に出力するにはどうすればいいんでしょうか?
デバッグ用に使ってるのを見かけたんですがやり方が書いてありませんでした
0197デフォルトの名無しさん2009/07/16(木) 00:15:46
>>196
OutputDebugString
0198デフォルトの名無しさん2009/07/16(木) 00:23:19
ありがとうございます!
0199デフォルトの名無しさん2009/07/16(木) 00:33:23
CLRだとSystem::Diagnostics::Debug::WriteLineだけどな
0200デフォルトの名無しさん2009/07/17(金) 15:35:37
C++のCLRってVBやC#より処理早いの?
0201デフォルトの名無しさん2009/07/17(金) 15:53:47
おなじ NETのアセンブラにするんだろ
0202デフォルトの名無しさん2009/07/17(金) 17:24:34
強いて言えば、VB.NETやC#と違って
標準でSuppressUnmanagedCodeSecurityAttributeが付くので、
ネイティブコードの呼出はC++が速いらしい。
(もちろん、C#やVB.NETでもSuppressUnmanagedCodeSecurityAttributeを使えばその点は同じになる)
0203デフォルトの名無しさん2009/07/18(土) 00:14:35
>>201
レスありがとう
0204デフォルトの名無しさん2009/07/18(土) 00:15:22
>>202
詳しくありがとうございます
0205デフォルトの名無しさん2009/07/19(日) 04:41:53
普段2003を使ってるんだけど
Visual Studio 2008 Express を使ってみたんだ
インテリセンスがすごくよくって
関数を使おうと書き始めると候補が出てきて途中でエンター押すと
全部書いてくれてすごく良いんだ
この機能って2008になってから出来たの?
0206デフォルトの名無しさん2009/07/19(日) 08:11:47
2005も有るけど、新しい方がいいらしい
0207デフォルトの名無しさん2009/07/19(日) 10:23:25
着実にVer.Upしてるよ。 VC6のインテリセンスのガリガリガリガリはまだ記憶に新しい。
0208デフォルトの名無しさん2009/07/19(日) 13:40:50
2008のインテリセンス、マジキチすぎ。
キーボード5つぐらいしか押してないのに50文字ぐらいの長い命令文がいつのまにか入力できてる。
プロパティとメソッドの区別も一発でわかるようにアイコンが付いてるし、自分で作ったクラスまで
自動的に登録されてるし。
0209デフォルトの名無しさん2009/07/19(日) 13:43:51
しかし、C#やVBはさらにその上を行くのであった。
たまに触ると本当に羨ましく感じる。
0210デフォルトの名無しさん2009/07/19(日) 13:44:52
おかげで命令のスペルうろ覚えの時がある。
0211デフォルトの名無しさん2009/07/19(日) 13:47:33
C++にもっと力入れてほしいな
webは作れないんだよね
0212デフォルトの名無しさん2009/07/19(日) 14:04:43
VS2008を使っているのですが、
クラスビューでプロパティを選択して、
イベント、オーバーライド、メッセージを選択しても
全く表示されなくなりました。

どうしてなんでしょうか?

新規作成時、直後は問題ないのですが、開発途中で、
表示が消えるので、新たに関数などの追加ができなくなって困っています。

直し方はあるのでしょうか?
0213デフォルトの名無しさん2009/07/19(日) 14:05:27
>>211
CGIは?
0214デフォルトの名無しさん2009/07/19(日) 15:27:05
>>212
うっかりプロジェクトファイルとか消してない?
鯖に共有フォルダ作って共同開発とかしてると、たまに誰かか勝手にファイルを移動しちゃうことがあって困る。
0215デフォルトの名無しさん2009/07/19(日) 19:02:40
Subversionお勧め
EEじゃなけりゃAnkhSVNも
0216デフォルトの名無しさん2009/07/19(日) 20:01:26
212ですが、
自己解決?しました。

正しい、やりかたではないと思いますが、
ソリューションファイル等があるフォルダにある
VC++ Intellisense Database
のファイルを削除して、もう一度、VS2008を起動させて、
ソリューションファイルを開くと、自動的にもう一度、
VC++ Intellisense Databaseファイルが作られるので、
それで、直りました。

正しいか不明だけどね。
お騒がせしました。
0217デフォルトの名無しさん2009/07/19(日) 20:02:56
それならよくあること。気にするな。
0218デフォルトの名無しさん2009/07/19(日) 20:44:02
public: がダメ、総てアクセッサー付けろは OOP原理主義者。
0219デフォルトの名無しさん2009/07/19(日) 21:06:58
こいつは何を言っているんだ?
0220デフォルトの名無しさん2009/07/19(日) 21:46:12
std::tr1::
などと打ったときに最後の::の後を自動補完する候補が出るときと出ないときがあるんですが
これを毎回出すようにするにはどうすればいいんでしょうか?
0221デフォルトの名無しさん2009/07/19(日) 22:29:18
インテリセンスは気まぐれだからなぁ。
一応CTRL+SPACEを押せば強制的に候補一覧(候補がひとつしかないときは一気に確定)できるけど
必ずしも成功するとは限らないところがVC++のいいところ。

これがVBやVC#、今はなきVJ++ではほぼ100%確実に候補が出る。
で、開発者いわく、インテリセンスは結局のところ「コンパイラそのもの」なんだそうで、
リアルタイムコンパイルしながら候補を絞り込んでるわけだけど、
C++は言語が複雑すぎてちゃんとできねーんだとさ。
0222デフォルトの名無しさん2009/07/19(日) 22:49:34
ほとんどは、その前の文にエラーがあるとインテリセンスは動かない。
0223デフォルトの名無しさん2009/07/22(水) 15:46:08
質問します
環境は「VC2008ExpEdition + .net」です
Bitmap^ abcimg=gcnew Bitmap(300, 400);
Graphics^ abcgraf=Graphics::FromImage(abcimg);
abcgraf->FillRectangle(Brushes::Black, 0, 0, abcimg->Width, abcimg->Height);
pictureBox1->Image= abcimg;
で作られた画像の真ん中にナスのような形のグラフが書き込まれます。
そのグラフを白で塗りつぶして面積を求めたいのですが、塗りつぶしがうまくいきません
別のやり方があれば教えてください
Color abcclr;
for(j=0;j<400;j++){
 for(i=0;i<300;i++){
 abcclr=abcimg->GetPixel(i,j);
 Byte r=abcclr.R;Byte g=abcclr.G;Byte b=abcclr.B;
 if(r>1){
  if(mode==0){//最初の境界を発見した!
  bforx=i;bfory=j;mode=1;//フラグを立てて管理
  //↓は最初境界の終わりを探す
  while(r==0){abcclr=abcimg->GetPixel(i+1,j);r=abcclr.R;g=abcclr.G;b=abcclr.B;i++;}
  }else{//フラグ立ってるので現在値まで塗りつぶしのために白い線を引いてフラグを消す
  abcgraf->DrawLine(Pens::White,bforx,bfory,i,j);mode=0;}
 }// (R>1)節の終わり
 abcclr=Color::FromArgb(r,g,b);
 abcimg->SetPixel(i,j,abcclr);
 }//iのforループの終わり
 mode=0;
}//jのforループ終わり
0224デフォルトの名無しさん2009/07/22(水) 16:39:58
単にロジックの問題なのかapiの使い方の問題なのかはっきりしろ
0225デフォルトの名無しさん2009/07/22(水) 17:04:05
223 です
途中まではうまくいくが、グラデーションのように黒い線(塗りつぶしの失敗)が入ります
######
######
########
#     #
#      #
##########
のような感じに。下手な説明&AAですみません。
0226デフォルトの名無しさん2009/07/22(水) 17:24:26
すまんが、まったくわからん。
画面キャプチャしてUPするなり、他人に伝える工夫と努力が必要。
0227デフォルトの名無しさん2009/07/22(水) 21:59:48
何かまったくの思いつきで作ったとしか見えないんだが
それ仮に動いたとして使いものになるのか?
0228デフォルトの名無しさん2009/07/22(水) 23:02:03
全くの初心者なんですが、VC++2008を使った教本でお薦めのものってありませんか?
0229デフォルトの名無しさん2009/07/22(水) 23:09:23
本屋で実際に手に取って見るのがお薦め。
0230デフォルトの名無しさん2009/07/22(水) 23:26:41
最低限C/C++は知ってる前提だから
そうじゃなくてC/C++から勉強したいならVCというよりC/C++の入門書だし
C/C++スレで質問した方がいい。
0231デフォルトの名無しさん2009/07/22(水) 23:35:31
VC++2008の初心者じゃなくてC++の鋳m識がないってbアとかな?
まあ
>>230
の言う通り過ぎて付け加えることがない。
0232デフォルトの名無しさん2009/07/22(水) 23:47:17
C++の本はたくさんあるけど
IDEの基本から上手な使い方みたいなことが書いてある本ってないよね
プロパティとかどう弄ったらよくなるのかとかいまいちわからない
0233デフォルトの名無しさん2009/07/23(木) 01:49:59
>>230 >>231
なるほどVC++の初心者に使いかたを教えるスレだったんですね気づきませんでした

C/C++の知識が無いプログラミング初心者なんです
それでVC++インスコしてネットや本屋で教本の類を幾つか読んでみたんですけどVC++を使って教えてるのが見つからなかったんですよ
全くの初心者なので用語の意味とか全然分からないし本で言っている事がVC++の機能のどれを指してるのか、どこにあるのか分からなかったりと
なかなか先に進まないのでVC++2008を使った解説本が無いかと思ったんですがお勧めの物ありませんかね?
それともやっぱりC/C++スレで聞いたほうが良いですかね?
0234デフォルトの名無しさん2009/07/23(木) 02:04:00
CかC++をやって、言語の仕様をしっかり理解してからVCやることをオススメする
Cを理解する頃には意味不明なところがしっかりわかるようになるはず
0235デフォルトの名無しさん2009/07/23(木) 02:20:19
>>234
そういう意味でのVCではなくて、プロジェクトの作ってビルド・実行するとかデバッガの使い方について知りたいんだと思う。
0236デフォルトの名無しさん2009/07/23(木) 02:27:47
そーいうのはヘルプ見りゃわかるだろ。
ただし、C/C++の用語がわからんと理解できんだろーから、必要なのはC/C++の入門書ということになる。

したがってスレ違い。
02372232009/07/23(木) 10:35:21
223です。説明が足りないといわれたので、追記に来ました
http://upload.jpn.ph/ にUPしました
u44616.jpg  というファイル名です
左が線だけの状況。実は点なんですが、DrawLineで繋げてます。
閉鎖空間であることは確認済みです
右が223のプログラムで塗りつぶそうとした結果です
どうみても失敗してます。原因がわからなくて悩んでました
0238デフォルトの名無しさん2009/07/23(木) 11:31:24
>>237
画像のアドレスはこういうふうに書けば回答者がすぐに確認できる
ttp://upload.jpn.ph/upload/img/u44616.jpg

それからソースが汚すぎる。
ちゃんと式の終わりごとに改行して演算子の前後にスペースを入れて
インデントをつければ「forの終わり」とかコメントをいちいち
書く必要がなくなる。たとえばこんなふう

int i, j, k;
for (i = 0; i < 10; i++)
{
  for (i = 0; i < 10; i++)
  {
    k = i + j;
    printf("%d ", k);
  }
}

ちゃんと調べたわけじゃないけど、whileの中で変数 i をいじってるのが
原因じゃないかって希ガス
0239デフォルトの名無しさん2009/07/23(木) 11:56:14
うちで試してみたら、ちゃんと動いたじぇ
追加したのは、変数宣言と、DrawLineでテスト用の画像をてきとーに作る部分だけ

int i, j, mode;
int bforx, bfory;

個人的には、いちいちRGBに分解した意味がわかんなかったけどもな
0240デフォルトの名無しさん2009/07/23(木) 12:14:24
そのアルゴリズムだと、境界線の角度が浅くて横に2ドット以上
白いピクセルが続いた時におかしくなる
白いピクセルの連続が偶数個だと、そのラインは塗られないから
黒く残ってシマシマになる
0241デフォルトの名無しさん2009/07/23(木) 12:16:38
あ、白じゃなくて赤か。
0242デフォルトの名無しさん2009/07/23(木) 12:36:16
シマシマ節子さん
02432232009/07/23(木) 13:08:23
回答ありがとうございます
一応、白が続いた時用にwhileで境界線である白の終わりを判断して飛ばしてます。
while(r==0){abcclr=abcimg->GetPixel(i+1,j);r=abcclr.R;i++;}
>240 さんの言うところが調子悪かったのですね。いじってみます。
RGBに分けたのは、今後の発展を考えてでありまだ何も実装してません。
0244デフォルトの名無しさん2009/07/23(木) 13:30:05
LNK2019とLNK2001のエラーがどうしても消えないのですが、
何が原因のものなのでしょうか
0245デフォルトの名無しさん2009/07/23(木) 13:40:38
>>244
ヘッダのインクルード忘れ。
ライブラリのリンク忘れ。
0246デフォルトの名無しさん2009/07/23(木) 14:00:33
>>243
だから、改行とインデントはちゃんと入れろと言ってるのに
while (r == 0)
{
  abcclr = abcimg->GetPixel(i + 1, j);
  r = abcclr.R;
  i++;
}
0247デフォルトの名無しさん2009/07/23(木) 14:30:08
VC6でCDiaLogを基にしたCTestクラスを作って

void CTest::OnButton1()
{処理}

void CTest::OnButton2()
{処理}

上のようなプログラムはクラスウィザードで出来ますが

void CTest::OnButton1()
{関数();}

void CTest::OnButton2()
{関数();}

void 関数()
{
処理
}

処理にUpdateData()などCDiaLogクラスの関数(メンバ)を使ってるから
エラーになります。ボタンを押す、などのイベントがあるなら関数を
作れますが、CTestにアクセスできる空の関数を作るにはどうしたら
良いですか?
0248デフォルトの名無しさん2009/07/23(木) 14:55:05
>>247
クラスウィザードで作れるでよ
0249デフォルトの名無しさん2009/07/23(木) 14:55:23
>>247
void CTest::関数()  // CTest のメンバ関数にすれば、処理にUpdateData() してもアクセス違反にならない。
{
処理
}
0250デフォルトの名無しさん2009/07/23(木) 15:27:47
>>248-249
クラスウィザードでのやり方がわからないので最初に249の方法
試したら出来ました。サンクス。
0251デフォルトの名無しさん2009/07/23(木) 21:43:05
directxを使ったコードを書き、フォームを追加してみたのですが
「1>cl : コマンド ライン error D8016 : コマンド ライン オプション '/MTd' と '/clr' は同時に指定できません」
と出てコンパイルエラーが出ます。この二つは併用できないと思っていいんでしょうか??
0252デフォルトの名無しさん2009/07/23(木) 21:54:08
>>251
はい。DLL版CRT使いましょう。
■ このスレッドは過去ログ倉庫に格納されています