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

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

■ このスレッドは過去ログ倉庫に格納されています
0001987NGNG
タイトルのとおり、
Visual C++ 初心者用スレッドです。

前スレ・関連スレは、>>2 ぐらい。
0357デフォルトの名無しさんNGNG
ムハハハッハハハハッハハハッハ!!!!!!!!!!!!!!!!!!!!
0358355NGNG
>>356
早速ありがとうございます。m(__)m
プロジェクトの設定のリソースタブのインクルードファイルのパス
でそのファイルのパスを指定したのですがやはりダメでした。。。
0359デフォルトの名無しさんNGNG
データムハハハッハッハハ!!
0360デフォルトの名無しさんNGNG
>>358
まさか
#include <ファイル名>
と言う風に開いているのではあるまいな?
0361355=358NGNG
>>360
いえ、#include "ファイル名" です。
パス指定すればコンパイルできたのですが。。。
0362デフォルトの名無しさんNGNG
(´-`).。oO(日本語ファイル名とか……
0363355NGNG
>>362
いえ、普通の英語名です。なんでだろう。。。
とりあえずパス指定でコンパイルできたので(356さんありがとう)
それで進みます。
みなさんお騒がせしてすみません。。。
0364デフォルトの名無しさんNGNG
>>358
まさかとは思うがファイルそのもののパスを指定していないだろうな?
ファイルのパスではなく、インクルードファイルが格納されているフォルダを指定するんだぞ
0365358NGNG
>>364
すいません...(TT)
いえ、インクルードファイルのパスというエディットボックスに
ちゃんとフォルダのパスを入れてるんですよぉ(C:\省略\Control\Common)。
0366デフォルトの名無しさんNGNG
マウス系のイベント欲しくて

stdafx.h に

#define _WIN32_WINNT 0x0400

付け加えたらデバッグでは動くのに
リリースでは落ちてしまいます。

何か原因考えられますか?
0367756NGNG
#define _WIN32_WINNT 0x0400
のせいじゃないと思う、なんとなく。適当でスマソ。
0368デフォルトの名無しさんNGNG
>>365
つーかちゃんとプロジェクトのワークスペースのファイルビューでソースとヘッダを追加してるか?
0369365NGNG
>>368
してます、してます(TT)。
でも初心者的な質問なのですが、ファイルを追加した時点でVCはどのファイルが
インクルードされてるかわかっているのに、なんでインクルードファイルの
フォルダを指定しないといけないのか理解できないのですが。。。
これだとあるa.hというヘッダをインクルードしてもフォルダ参照にされてなくて
もし参照されているフォルダに同名のa.hが存在したらPGするとき混乱するような
気が。。。VC歴が数ヶ月なのでアホな質問だったらすみません。VBだとファイルを
追加したらそのパスがプロジェクトファイルに書かれているのですが、
確かにVCのプロジェクトファイルには取り込んでいるファイルのパスは書かれて
いない(ファイル名のみ)ですね。
あくまで参照するフォルダを指定する必要があるんですね。。。
0370デフォルトの名無しさんNGNG
そのソースとヘッダはプロジェクトファイルと同じ場所にあるの?
0371365NGNG
>>370
いえ汎用なので別のフォルダに両方とも入っています。
0372デフォルトの名無しさんNGNG
>>371
>>369をしっかり読んでなかったよスマソ。
つーかやっぱりこの場合はフォルダ指定しなきゃ駄目なんじゃないかね。
0373365NGNG
あ、適当なこと書いてしまいました。
VCのプロジェクトファイル(dsp)も別フォルダから取り込んだファイルの
パスを相対パスでちゃんと管理していますね。
だとしたら余計インクルードパスを指定する必要がわからない。。。(TT)
0374365NGNG
>>372
何度もすみません。
VCというよりC++コンパイラの仕様なんでしょうかね。
仕様ならしようがないので納得します。
こんなオチですみません。。。
0375デフォルトの名無しさんNGNG
>>374
プロジェクトの設定⇒タブ:C/C++⇒カテゴリ:プリプロセッサ⇒インクルードファイルのパス(N)
なら相対or絶対パスでも大丈夫。
0376デフォルトの名無しさんNGNG
>>375
10レス程度前のレスも読めんのか
0377デフォルトの名無しさんNGNG
>>376
てめーこそ良く見やがれ。糞が。
>358 名前:355[] 投稿日:03/04/14 20:28
>>>356
>早速ありがとうございます。m(__)m
>プロジェクトの設定のリソースタブのインクルードファイルのパス
>でそのファイルのパスを指定したのですがやはりダメでした。。。

リソースタブで指定してるからおかしいってんだ。
ボケ、氏ネ。

0378365NGNG
>>375
ありがとうございます!
で、できました!!!

>>376
いえ、僕の間違いでした。
リソースタブでインクルードファイル指定してました。
お騒がせしてほんとにすみません。
初心者なので許してください...m(__)m >レス下さったみなさん

逝ってきます。(TT)
0379377NGNG
>>378
>ボケ、氏ネ。
これは、>>376 に対するものだから気にしなくていいよ。
>>377は日本語が不自由なようだ。
0380365NGNG
>>377
いえ僕の文章もだらだらと読みづらかったのですんまそん。
またいろいろ教えてくださいね。ではでは。。。
0381デフォルトの名無しさんNGNG
最後はマターリとしました!
0382デフォルトの名無しさん NGNG
VisualC++勉強したいけど近所の本屋にはVisualC#.NETの本しかない・・・。(TAT)
0383デフォルトの名無しさんNGNG
ちょっと大きい本屋行けばまだまだあるよ。
わかり易いかどうかは別だけど。
0384デフォルトの名無しさんNGNG
>>382
図書館は?
0385デフォルトの名無しさんNGNG
>>340
コンストラクタを呼び出されたら、クラスのインスタンスは必ずあるはずだが?
そもそもコンストラクタが呼び出されると何か問題があるの?

newも解らないようじゃ…
.NETとかVCではなくC++の参考書でも読んで勉強し直してきた方がいいですね。
0386デフォルトの名無しさんNGNG
>>379
おまえも日本語が不自由みたいだなw
0387デフォルトの名無しさんNGNG
>>384
逆にQuickCとか置いてそう
0388デフォルトの名無しさんNGNG
ejanaika ejanaika
0389352NGNG
>>354
>名前はGUID使えばよし

ありがとうございます。GUIDってなんでしょうか?
0390デフォルトの名無しさんNGNG
>>386
脳なしに言われたないわい。
0391デフォルトの名無しさんNGNG
>>389
せめて検索くらいしろボケ
氏ね
0392デフォルトの名無しさんNGNG
すいません。教えてください。

CFont m_Font;
LOGFONT lf;
m_Font.GetLogFont(&lf);

上記は正常に動くのですが、lf をポインタで宣言して、

CFont m_Font;
LOGFONT* lf;
m_Font.GetLogFont(lf);

と変えるとm_Font.GetLogFont(lf);の行でエラー
「値が割り当てられていないローカルな変数 'lf' に対して参照が行われました。」
が出るのはなぜなのでしょうか?
0393デフォルトの名無しさんNGNG
>>392
ちょっと考えれば当たり前だと思うけど……

GetLogFontは、与えられたポインタが指し示すメモリにフォント情報を格納するのね。
上の場合はlfという変数の領域に格納するから問題なし。
下の場合はいったいどこにフォント情報を格納すればいいのでしょうか?
0394デフォルトの名無しさんNGNG
>>392
エラーメッセージのそのまんまの意味。
lfが有効な値になっていない(実体を指していない)から。
つかこんなんC言語の基礎中の基礎だが大丈夫か?
0395デフォルトの名無しさんNGNG
型さえ合っていればいい、っていう考え方なんだろうね。
その関数がどんな動きをするか考えようともしない。
0396誠心君NGNG
ちょ〜素人だけどフ゜ログラマーカメラ電波機械全般に詳しい人探したいけど、どうしたらいいのおちえて?
0397デフォルトの名無しさんNGNG
外国の方が来られたようです。
0398デフォルトの名無しさんNGNG
                     |\
┌──────────┘- \
│  外国の方が             \
│                     /
└──────────┐- /
      ヽ(´ー`).ノ       |/
        (  へ)
        く
                  - = ≡三                    |\
               - = ≡三  ┌──────────┘- \
               _ = ≡三    │                     \
                ̄ = ≡三    │     いらっしゃいます       /
               - = ≡三  └──────────┐- /
        (´ー`)        - = ≡三                     |/
      ( ヽ ヽ)
       /  >
0399342NGNG
>>343-344
すみません。調べたんですが難しすぎてよくわかんないです。
もっと簡単なもんかと思ってたんですが…
でも、グローバル変数は普通使っちゃいけないんですね。
ド素人なもんでそんな事もしりませんでした。

一番わかりやすそうな
CTestApp のメンバ変数にして 他のクラスからは
AfxGetApp で取る事にしようと思います。

ありがとうございました。

>>347
???
0400猿NGNG
>>346 です。CFileDialogを拡張して
hList = GetListViewInner();// リストビューのハンドル確保
hHead = ::GetWindow(hList, GW_CHILD);// そのヘッダーのハンドル確保
LV_COLUMNを利用して項目を追加するも詳細表示の表示項目その他を選択すると
落ちてしまいます。どなたかよきアドバイスをお願いします。
やはり1から作成するしかないのでしょうか?
0401デフォルトの名無しさんNGNG
>>400
マルチうぜー
0402デフォルトの名無しさんNGNG
#include <stdio.h>
#include <windows.h>
int main(void)
{
char c;
char a[3]={3,4,5};
char b[3]={3,4,5};
c=strcmp(a,b);
printf("c=%d\n",c);
c=lstrcmp(a,b);
printf("c=%d\n",c);
}

aとbを比較するとき、等しい場合は0が返ってくると思うのですが何故か
c=1
c=-1
になってしまいます。何故でしょうか?
0403デフォルトの名無しさんNGNG
文字列を比較する関数を使っているからです
0404デフォルトの名無しさんNGNG
>>402
文字列になっていない(終端文字がない)から
0405デフォルトの名無しさんNGNG
>>403
レスありがとうございます。おっしゃる通りでした。
0406デフォルトの名無しさんNGNG
すいません。教えてください。あるサンプルを見ていたのですが、

CString strHtmlPath = _T("C:\\tmp.html");

の _T はどういう処理をしているのでしょうか?
MSDNで調べると「データ型のマッピング」と書かれているのですが
データ型のマッピングという言葉の意味がわかりません。
_T というものはどう言うときに使うものなのでしょうか?

それから、その後に、

Navigate2(strHtmlPath, NULL, NULL);

となっているのですが、MSDNでNavigate2メンバ関数を調べると、3つにオーバーロード
されていて、どれも第一引数がポインタとなっています。
が、上記strHtmlPathは前述の通りCString型の実体として宣言されています。
これはどう言うことなのでしょうか?CString型ということが何かカギなのでしょうか?
0407デフォルトの名無しさんNGNG
>>406
MSDNにも書かれていますが、
_Tは文字列がUnicodeで記述されている場合に、
L"文字列"に置き換えて、その他の場合には
単に削除されるようです。文字列がUnicodeの場合には
L"文字列"というように最初にL(longのL)を書かないと
ダメらしい。

0408デフォルトの名無しさんNGNG
>>406
後者は
CString::operator LPCTSTR
が呼び出されているのでしょう。つまりキャストです。

しかし2番目と3番目、どっちが呼び出されているのですかね。
参照はNULLを取らないから、2番目だと思うのですが、
2番目だとすると第2、第3引数は不要ではないですかね?

0409デフォルトの名無しさんNGNG
>>393-395

レスありがとうございました。
ポインタを宣言してもそのポインタが指し示すアドレスがわからないという
ことですね。
0410デフォルトの名無しさんNGNG
>>407
レスありがとうございます。
C:\\ という記号の辺りがデータ型によっては特殊文字になってしまうのかな?
そこらへんが関係するのですね。調べてみます。

>>408
レスありがとうございます。
MSDNをみたら operator LPCTSTR が載っていました。
試しに
Navigate2((LPCSTR)strHtmlPath, NULL, NULL);
と記述しても動きました。

どうもありがとうございました。
0411デフォルトの名無しさんNGNG
http://yahooo.s2.x-beat.com/linkvp/linkvp.html
0412デフォルトの名無しさんNGNG
>>408
あ、それからNavigate2は2番目の関数のようです。
いわれる通り、第一引数だけで残りを省略しても動作しました。
0413デフォルトの名無しさんNGNG
>>410
Unicodeご存知ないですかね。
0414デフォルトの名無しさんNGNG
メッセージループをメインループにすると時間系の関数などを使いやすくなります
が、デメリットはありますか?
0415デフォルトの名無しさんNGNG
>414
デメリットはネタに見えることです。
0416デフォルトの名無しさんNGNG
Windowsを再インストールすることになり、
いままで使ってきた Visual C++ の環境の設定を保存しておきたいのですが、
設定を保存しているファイルとかあるのでしょうか?
もしくは、レジストリでしょうか?
どなたか ご存知でしたら おしえていただくとありがたいです。

(黒字に白文字でないと、目がつかれたり、また その他ショートカット
なども専用に設定しているので、また、設定をする手間が省けるので、
今後のためにも 教えてください。)
0417デフォルトの名無しさんNGNG
>416

俺は↓のレジストリから必要な部分だけを reg ファイルにして保存してる

[HKEY_CURRENT_USER\Software\Microsoft\DevStudio\6.0]
0418デフォルトの名無しさんNGNG
>>416
そういうのはすべてレジストリだと思われ。
インストールフォルダ以下をざっと探ってみたけどそれらしきものは見つからなかった。

白地に黒、って疲れるよね。
俺は画面のプロパティでウィンドウの背景色を白から薄緑にしてるよ。
他のところまで変わるのはご愛嬌……
0419414NGNG
答えが得られなかったので、他のスレで質問させていただきます。
0420デフォルトの名無しさんNGNG
>>414
プッ。
0421デフォルトの名無しさんNGNG
始めたばかりの超初心者なのですがどうしてもエラーの場所がわかりません
どなたか教えていただけないでしょうか?
#include<stdlib.h>
#include<GL/glut.h>
#include<GL/gl.h>
#include<math.h>
#define PAI 3.1415926536

void display(void)
{
int x=0.5*cos(2.0*PAI*(float)/(float)10);
int y=0.5*sin(2.0*PAI*(float)/(float)10);
int z=0.0;
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0,1.0,1.0);
glBegin(GL_LINE_LOOP);
glVertex3f(x,y,z);
glEnd();
glFlush();
}
0422デフォルトの名無しさんNGNG
>>421
あなたは何故エラーメッセージを書かないのですか?
0423デフォルトの名無しさんNGNG
>>422
良くわかっていないもので・・・
エラー2 警告0とかいうのは出るんですが
0424デフォルトの名無しさんNGNG
Visual C++ と関係ないのでは?
0425デフォルトの名無しさんNGNG
VC++コンパイラの使い方がわかっていないようだが

>エラー2 警告0
の書かれている所の右側にスクロールバーが無いか?
0426デフォルトの名無しさんNGNG
どこからコピペしたかしらんが、main()もないし#include<GL/glut.h> や #include<GL/gl.h> がちゃんとインクルードできるのかも謎。
0427デフォルトの名無しさんNGNG
floatを掛けて割っているのが原因だと思うが
出力されるエラーメッセージを見ることすら出来ないのは問題外
言語以前にWindowsの基本操作からやり直した方がいい
0428デフォルトの名無しさんNGNG
>>421
エラーの場所はたぶん1桁か2桁ぐらいの数値で表示されてると思います
そしてそれは行数です
あなたに何行目でエラーが発生しているか教えてくれるでしょう

さらにエラーメッセージをダブルクリックするとそのエラーが発生した行を
反転表示してくれると期待できます
0429デフォルトの名無しさんNGNG
>>421
宿題は自分でやりましょう
0430デフォルトの名無しさんNGNG
ゲーム等でマップを作る時なぜ、StretchDIBitsとSetPixselVではなぜスピードが
大きく違うのですか?グラフィックは点の集まりなのだから、同じでもいいと思う
のですが。
0431デフォルトの名無しさんNGNG
>>429
禿しく同意!
0432デフォルトの名無しさんNGNG
>430
問。 
たらい一杯ぶんの水を井戸から汲み上げようと思います。
1)コップをつかって何度も何度もくみなおす
2)たらい並の容積のいれものでいっぺんに汲む
無駄なく早いのはどっち。
0433デフォルトの名無しさんNGNG
>>432
スレタイが読めない文盲の方ですか?( ´ー`)y-~~
0434デフォルトの名無しさんNGNG
>>433
( ´,_ゝ`)
0435デフォルトの名無しさんNGNG
なんつーか何かに例えたがるよな、プログラマって。
0436デフォルトの名無しさんNGNG
>>435
物を教える時に例え話って使うだろ。
プログラミングに限らず。

てか、>>432の意味がマジでワカランかったの?
不条理な逆ギレイクナイ!
0437デフォルトの名無しさんNGNG
>>430
関数のオーバーヘッドがある、最適化し難い(メモリ転送命令が使えない)等…
>>432はなかなか良い例えだと思うが…
0438あぼーんNGNG
( ´∀`)/< 先生!!こんなのを見つけました。
http://japan.pinkserver.com/yamazaki/moe/hankaku09.html
http://japan.pinkserver.com/yamazaki/moe/hankaku10.html
http://japan.pinkserver.com/yamazaki/moe/hankaku07.html
http://japan.pinkserver.com/yamazaki/moe/hankaku08.html
http://japan.pinkserver.com/yamazaki/moe/hankaku05.html
http://japan.pinkserver.com/yamazaki/moe/hankaku06.html
http://japan.pinkserver.com/yamazaki/moe/hankaku03.html
http://japan.pinkserver.com/yamazaki/moe/hankaku04.html
http://japan.pinkserver.com/yamazaki/moe/hankaku01.html
http://japan.pinkserver.com/yamazaki/moe/hankaku02.html
0439デフォルトの名無しさんNGNG
>>433
( ´_ゝ`)
0440デフォルトの名無しさんNGNG
いや、問返しはカコワルイよ。
0441430NGNG
分かりました。ありがとうございました。後、StretchDIBitsでマップをスクロール
する場合、一度半マス移動分のを表示してから、1マス移動を表示したいのですが、
マイナスの座標から表示しても(16ピクセルのセルなら8ピクセルずらし、通常17×17
セルなら18×18セルをずらして表示)大丈夫なのですか?また、他の方法があるなら
教えてください。
0442デフォルトの名無しさんNGNG
StretchDIBitsって使ったこと内や

CreateDIBSection→BitBlt, StretchBltでやってる
0443デフォルトの名無しさんNGNG
LPVOID test;

(DWORD) test;
(UINT) test;
(WORD) test;
(BYTE) test;
--
(DWORD) test;
だけ型キャストの警告がでます。どうしてでしょうか?
VC7使ってます。
お願いします。
0444エラー内容も書けNGNG
>>443
どんなキャストの警告が出る?
VC6では出なかった。
もしもこういうコードを書いているなら当然だが……

LPVOID test;
DWORD test2 = (DWORD) test;
UINT test3 = (UINT) test;
WORD test4=(WORD) test;
BYTE test5=(BYTE) test;

(testが初期化されていないから値が不定。)
0445デフォルトの名無しさんNGNG
>>417,418
返事遅くなりましたが、どうもありがとうございました。
クリーンインストールするんで、レジストリでもなんでも 強気でいじれるので、
いろいろいじってみたいと思います。
どうも ありがとございました。
0446443NGNG
>>444
どうも
'型キャスト' : ポインタを 'LPVOID' から 'DWORD' へ切り詰めます。
ってエラーです。

sizeof で LPVOID と DWORD を調べても、両方4byteで問題ないはずなんですよね。
むしろ問題であるはずのBYTE と WORD のキャストには無警告なんですよ。

おそらくVC7だと64bitアドレスもサポートしてるんで、その性だとおもうんですが、
だとしたら、なんでBYTEとWORDへのキャストには無警告なんでしょうね・・・
0447あNGNG
>>443
いいからソースを見せなさい。
0448443NGNG
やっぱり警告は64ビット対応が原因でした。
UINT型とDWORD型のみへの警告は恐らく、旧来の手法に対する警告ってことでしょうね。

#include <windows.h>
#include <stdio.h>
void main( )
{
DWORD d; UINTui; WORD w;BYTE b;LPVOID p;
p = &d; d = (DWORD) p; ui = (UINT) p; w = (WORD) p; b = (BYTE) p;

printf( "LPVOID = %d\n", sizeof( LPVOID ) );
printf( "DWORD = %d\n", sizeof( DWORD ) );
printf( "UINT = %d\n", sizeof( UINT ) );
printf( "WORD = %d\n", sizeof( WORD ) );
printf( "BYTE = %d\n", sizeof( BYTE ) );
}

結果:LPVOID = 4,DWORD = 4,UINT = 4,WORD = 2,BYTE 1

warning C4311: '型キャスト' : ポインタを 'LPVOID' から 'DWORD' へ切り詰めます。
d = (DWORD) p;
warning C4311: '型キャスト' : ポインタを 'LPVOID' から 'UINT' へ切り詰めます。
ui = (UINT) p;
0449430NGNG
>>442 ありがとうございます。やってみます。
0450デフォルトの名無しさんNGNG
ツールバー上のボタンの文字列を
あらかじめ設定した文字列から
イベント取得時に変更したいのですが
どうやればいいんでしょうか?
0451デフォルトの名無しさんNGNG
オーナードロー
0452あNGNG
警告やな、エラーではないな。
了解。
0453bloomNGNG
http://www2.leverage.jp/start/
0454デフォルトの名無しさんNGNG
テンプレートのデフォルトパラメータにvoidを使用できないのですが
c++の決まりですか?VCの決まりですか?
template < typename T = void > class hoge 〜

template < typename T > class hoge 〜
にたいして
hoge < void > foo;は可能な様です。
0455山崎渉NGNG
(^^)
0456デフォルトの名無しさんNGNG
次からテンプレでMFC使ってるかどうかを書くように促して欲しい
■ このスレッドは過去ログ倉庫に格納されています