[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 07/30 18:10 / Filesize : 165 KB / Number-of Response : 705
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん [2007/09/10(月) 12:20:27 ]
1 : ◆Manna2uCLg :2005/04/15(金) 13:33:14
Visual C++入門者・初心者からの質問を、
お兄ちゃん達が優しく、時には厳しく回答してくれるスレッドです。

■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう。
・できるだけ具体的に。

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

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

過去スレ、関連スレなどは>>2-5

48 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 01:57:40 ]
2005EEに実行がないんですけど。2008βでは実行してもテストがどうのっていわれて
コンソールもでないし。ソースはよくあるmainにcoutだけのやつです。


49 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 02:03:21 ]
>2005EEに実行がない
シュールだ。

50 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 02:23:08 ]
ソースをプロジェクトに加えてなかった・・。#include <iostream.h>とやるとファイルがないと
言われるし.hを取ると今度はcoutが定義されてない識別子。実行はデバッグなしで開始で
いいんですよね?

51 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 02:31:08 ]
#include <iostream>
using namespace std;

もっと基礎を勉強しろ

52 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 02:48:02 ]
分かりました(・◇・)ゞ

53 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 05:34:49 ]
ひさしぶりにVC++6.0で勉強再開したのですがSP6が出ていたので当てましたが
バージョン情報には変化がありません。確認する方法はないのでしょうか。

54 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 06:59:35 ]
GetDlgItemでハンドルの取得に失敗してるようなのですがどんな原因が考えられますか。
コントロールのIDは合ってます。HWNDはダイアログボックスの引数です。



55 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 08:23:20 ]
まだコントロールができてない

56 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 08:27:57 ]
能力不足
コントロールのIDは合ってるつもりなだけ。HWNDにダイアログボックスのハンドルを指定していない。
HWNDがスコープの範囲外である。



57 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 09:59:33 ]
ハンドルをグローバルにコピーしたものを使うようにしたら解決しました。
。ありがとうございました。


58 名前:デフォルトの名無しさん [2007/09/16(日) 21:01:42 ]
CDC* pdc1 = GetDC();
CPen *oldPen;
oldPen = pdc1->SelectStockObject(BLACK_PEN);

これで
error C2440: '=' : 'CGdiObject *' から 'CPen *' に変換できません。

とerrorが出るのですが、本に書いてあるとおりやってるだけなのですがなぜダメなのでしょうか?

59 名前:58 [2007/09/16(日) 21:10:10 ]
ごめんなさい

CDC* pdc1 = GetDC();
CPen myPen(PS_SOLID, 1, RGB(0, 0, 0));
CPen *oldPen;
oldPen = pdc1->SelectObject(myPen);

です


60 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 21:17:37 ]
>>59
×oldPen = pdc1->SelectObject(myPen);
○oldPen = pdc1->SelectObject(&myPen);


61 名前:58 [2007/09/16(日) 21:36:14 ]
>>60
ありがとうございました

62 名前:デフォルトの名無しさん [2007/09/17(月) 00:12:35 ]
ぜったい本の通りやってないだろバカ

63 名前:58 [2007/09/17(月) 00:29:01 ]
いえ本が間違ってました
工学社 Visual C++ .NET ゲーム制作教科書 片山幸雄著 の39ページ40ページです
もちろん他の部分から類推できるものなのでそれができなかったのは私がバカなのですが


64 名前:デフォルトの名無しさん [2007/09/17(月) 00:53:59 ]
アナログ時計のプログラムってどんな感じなんでしょうか・・・
デジタルなら簡単に出来るんですが。

どなたかご教授お願いしますorz

65 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 01:05:55 ]
>>64
文字盤の上に、時分秒に従い角度を計算して針を書くだけ
注意点としては針を進めるとき、下の針を消してから新しい針を書くのではなく、
ダブルバッファリングという手法を使って画面を更新すること
これだけ注意すれば問題ないはず

66 名前:デフォルトの名無しさん [2007/09/17(月) 01:23:37 ]
>>65
ダブルバッファリングですか。
難しそうですが、頑張ってみます。
ありがとうございました。



67 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 08:20:56 ]
プログラミングWindowsのサンプルは消してから書く方式だったと思う
サンプル動かして見たけど特にそれで問題ない

68 名前:デフォルトの名無しさん [2007/09/18(火) 01:21:43 ]
DLLプログラムで、自分自身が動作しているパスを取得したいのですが、
どうすればいいのか解りません。よろしくお願いします

69 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 01:29:42 ]
GetModuleFileNameに自分のインスタンスハンドル渡す。

70 名前:68 mailto:sage [2007/09/18(火) 02:21:26 ]
>>69
ありがとうございます。
眠い。。

71 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 13:53:38 ]
眠いのですが、どうすればいいのか解りません。よろしくお願いします

72 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 14:00:02 ]
眠りましょう。
眠れなければ医者へかかりましょう。

73 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 14:13:07 ]
いつかは寝なければいけないときが来るのだから寝とけ

74 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 14:22:28 ]
どうせそのうち寝るのなら、今はがんばって起きていたい

75 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 17:15:10 ]
でも眠いんだろ?

76 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 17:20:22 ]
俺の経験から言うと
無理して徹夜するよりきっぱり定時に帰って
明日朝からしゃきっとがんばった方が効率が良いと思って
早朝7時くらいに出社して徹夜するはずだった分を補填しようとするけど
結局5分遅刻して(;´Д`)



77 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 17:47:55 ]
あるあるw

78 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 19:56:19 ]
意味わからね。


79 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 20:25:47 ]
正解

80 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 00:20:56 ]
vc6でMFC無しでプログラミングしています。
vector< char >のサイズを動的に確保する配列を使いたくて、

vector <char> *vec;
vec = new vector<char>[ size ];
delete[] vec;

としたのですが、コンパイル時にdeleteのところで、「配列のdeleteは合わないから*(ポインタ)と解釈するよ」
という旨のワーニングが出ます(開発環境が手元にないのでうろ覚えです)
実行するとdeleteの行で落ちます。

配列の形式でnewしたら配列の形式でdeleteすると理解していて、上記のように書いたのですが、
どういう形でdeleteするのが正しいのでしょうか。
よろしくお願いします。

81 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 00:54:33 ]
>>80
何か間違ってないか?

VC6起動して試したけどワーニング出ない
実行エラーにもならない(上記3行だけだけど)

82 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 01:01:16 ]
vector<vector<char> > でいいじゃん

83 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 01:40:54 ]
>>82
死ね

84 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 14:50:37 ]
そんなvectorの使い方はじめて見た。というか意味不明。

85 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 14:55:45 ]
>>84
二次元データを扱うために、vector<vector<float> >なんて使い方するのは常套手段だが。
>80の使い方なら確かに気色悪いと思う。

86 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 16:44:18 ]
>>85
いや、当然>80の話よ。vectorの意味を理解してない気がするので。



87 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 18:54:25 ]
vector<char> vec(size);
こうしたいだけだよな>>80

88 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 19:30:46 ]
C++の話はどうでもいい

89 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 21:53:53 ]
list<vector<char>>
vector<list<vector>::iterator>
でいいじゃん

90 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 01:29:23 ]
vector<char>使うならstd::stringを使いたい気分

91 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 01:39:46 ]
boost::ptr_vector<std::string> str_vec(size);

92 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 02:02:10 ]
>>83
死ね って言ってる理由が分からないんだが。
vector<vector<char> > は何か問題あるの?

93 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 02:26:14 ]
>>92
スルー推奨

94 名前:デフォルトの名無しさん [2007/09/21(金) 22:15:06 ]
リソースエディタ経由ではなく直接リソースIDを確保したいときどうしたらいいですか?
Resource.hにじかに編集?

95 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 22:38:38 ]
C++でBot作れますか?

96 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 22:51:02 ]
作れない方がおかしい



97 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 23:10:50 ]
>>94
resource.h を直接編集してますね
個人的に気をつけてるのは、プロジェクトを閉じてから編集を開始するのと
編集後.apsファイルは削除しておくことくらい

98 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 23:57:57 ]
VC++6で、キー入力を捕まえたいんですが、
設置してあるボタンを押したあとだとキー入力を受け付けてくれません。
原因は何でしょうか?

99 名前:デフォルトの名無しさん [2007/09/22(土) 00:03:53 ]
Win32API で
CreateWindowW(
とすると引数の情報が出てくるんですけど
CreateWindow(
では情報がでてきません。
これが普通なんでしょうか?
それとも何かファイルが壊れててでなかったりしてるんでしょうか?

100 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 00:04:59 ]
>>98
もっともっともっともっともっともっともっともっともっともっともっともっともっともっともっと詳しく。

101 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 00:11:45 ]
>>99
お前バカじゃねぇの
環境書けよ
どうせ2005だろ?仕様だよ

102 名前:デフォルトの名無しさん [2007/09/22(土) 00:19:11 ]
>>100
すみません。
ボタンを押した後、フォーカスがそこにあっていて
キー入力を認識しないみたいなんです。
ボタンが押されたときは

case WM_COMMAND:
 switch(LOWORD(wp)) {
  ・
  ・
  ・
  case ID_CF:
   if(field_flag==FIELD1) field_flag=FIELD2;
   else field_flag=FIELD1;
   InvalidateRect(hWnd, NULL, TRUE);
   break;
 }

のようなかんじで、
キー入力の受け付けは

case WM_KEYDOWN:
 GetKeyboardState(state);
 if(state[VK_UP] & 0x80){
 if(mode_flag==HAITI){
  ・
  ・
  ・
 }

でやっています。

103 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 00:24:07 ]
わろた

104 名前:デフォルトの名無しさん mailto:age [2007/09/22(土) 00:33:34 ]
インラインアセンブラが使え無い言語は
基本的に劣っていると考えたい・・・


105 名前:デフォルトの名無しさん [2007/09/22(土) 00:34:16 ]
すみません、超初心者なんで・・・どうしたらよいのでしょうか?

106 名前:デフォルトの名無しさん mailto:age [2007/09/22(土) 00:38:05 ]
ワロタら良い



107 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 00:39:10 ]
原因がわかりました。
どう調べたらいいのか分からなかったので・・・
ありがとうございました。

108 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 00:49:50 ]
ソーセージ買いに行ったら自己解決しとった

109 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 00:57:06 ]
今からオナルんか?
まんこ臭くなるから気を付けろよ

110 名前:デフォルトの名無しさん mailto:age [2007/09/22(土) 01:10:27 ]
エラー デバッグ ブラウザ ツール
www.mozilla-japan.org/
シンプル プログミング ツール
proforceone.web.fc2.com/
素因数分解サンプルプログラム
Calculation processing にコピーして[RUN]

A=2*3*5*11*13*17*19;
x=A;br();write(" "+x+" ⇒");
for(i=2;x>=i;i++){if(0==x%i){k=0;
 for(j=2;(i>=j)&&(1>=k);j++){
  if(0==i%j){k++;}
 } if(1==k){write(" "+i);}
}}


111 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 01:51:49 ]
インラインアセンブラじゃなくてインラインフォートランにすればいいのに

112 名前:デフォルトの名無しさん [2007/09/22(土) 03:22:01 ]
strtokがエラー出るんだけどなんで?
strtokのソースの中で検索ヒットした文字に\0で置き換えするところでアクセス違反起きてる
ちゃんと文字列の中アクセスしてるはずなのになんで?どうして?

113 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 03:23:17 ]
お前がバカだから

114 名前:デフォルトの名無しさん [2007/09/22(土) 03:32:47 ]
マジで?

115 名前:デフォルトの名無しさん [2007/09/22(土) 03:35:13 ]
くまった

116 名前:デフォルトの名無しさん [2007/09/22(土) 06:13:46 ]
ローカルの変数にコピったら動いた!!!!1
頭いいかもしんない。ここのみんなじゃ無理だったかも・・・



117 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 06:15:15 ]
お前の事だからそんなこったろうと思ったよ
頭わるすぎw全米がわろた

118 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 10:26:33 ]
>>116
無理だったね。
112に書いてあることだけで答えを導き出すには、
おそらく一級のエスパーが必要だったろうから。

119 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 10:34:37 ]
>>116
正解だったね。
113に書いてあるとおりで答えを導き出せないのは、
おまえが超級のパーである証明だったろうから。

120 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 10:38:46 ]
VC++5.0(mfc42のヤツ)のインストールについて教えてください。

WindowsXPが出始めた頃にVC++5.0をインストールして普通に使えていたのですが、
XPのSP2を入れたらInfoViewerが表示できなくなってしまいました。
(HTTP 404 - ファイル未検出)とか言うエラーが表示されます

ググッったら、以下のような情報を見つけました。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_DISABLE_MK_PROTOCOL に新規キーで「MSDEV.EXE=dword:00000000」を作成

が、そのときにはVC++5アンインストールと再インストールをしてしまっていました。
(上の情報を早くみつけていれば、レジストリの修正だけですんだのに。。)

インストールしなおしたVC++5.0では、上記のレジストリキーを設定しても
やはりinfoViewの内容を表示させるとエラーになります。

なにか解決方法をご存知の方がいらっしゃったらだったらご教授ください。
よろしくお願いします。


121 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 10:40:18 ]
新しいのにする

122 名前:デフォルトの名無しさん [2007/09/22(土) 11:11:35 ]
CDC *pdc = GetDC();
pdc->Ellipse(x1, y1, x2, y2);

とかのEllipseの引数を自分で作ったクラス(myclass)にしたい場合

CDCクラスにEllipse(&myclass)みたいなのを作る
myclassにEllipse(&CDC)みたいなのを作る
CDCクラスとmyclassを継承したクラス(myCDC)にEllipse()を作る(1行目もmyCDC *pdc = GetDC();)
どれが普通なんでしょう


123 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 11:33:27 ]
>>97
サンキュー

やっぱそんなかんじか。マイクロソフトはホントダメだな。

124 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 11:40:55 ]
マイクロソフトがダメなんじゃなくてお前がダメw

125 名前:デフォルトの名無しさん mailto:age [2007/09/22(土) 12:11:02 ]
JavaScriptに近いC++ありませんか?

126 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 12:16:04 ]
C++0x



127 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 12:35:50 ]
>>122
フレームワークの中身を書き換えるなんて原則もってのほか。だから1はない。

3番目の案は悪くないが、GetDCがCDCへのポインタ返すのに
myCDCへのポインタとして扱うことは、
(これくらい動くだろうが)規格上、未定義なので気持ち悪い。
仮にGetDCがmyCDCへのポインタを返すように書き換えるとしても
それは1と同じ理由で却下。

残るのは2番。

128 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 12:37:46 ]
人はそれをヘルパ関数と呼

129 名前:デフォルトの名無しさん [2007/09/22(土) 16:42:49 ]
CButtonとかはリソースエディタで追加するとそのまま使えるのに
手で追加するとなぜCreateを呼ばないといけないの?
リソースとして追加した場合なんでCButtonのインスタンスが無いの?


130 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 16:52:16 ]
ボタンはコントロール
C++のクラスではない
CButtonはそれをMFCで扱うためのクラス

131 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 16:56:43 ]
ダイアログ上のコントロールは、
ダイアログ作成時にWindowsが作る(そのためのダイアログだ)。
あとは、作成されたコントロールとソース上のCButtonとを
関連付けるだけなので、Createする必要がない。



132 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 17:13:43 ]
>>130-131
なるほど。。つまり以下の様に理解したけどOKですか?

(1)リソースとしてボタンを追加した場合、MFCのダイアログクラスが初期化のときに自分でそのボタンをCreateしている。
(しかもダイアログクラスはボタンが必要だという情報をリソースファイルから得ている?(だってソース上は見当たらないからなぁ。))

(2)リソースとして追加したうえ、変数を割り当てるとそのCButtonクラスと、内部で生成したボタンコントロールのウインドハンドルをどこかで関連付けている。

(3)リソースエディタを使用しない場合、ダイアログはそのコントロールを作成しない。だから自分でCreateを呼ぶ必要がある。



133 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 17:20:07 ]
>>132
>(2)
つ[OnInitDialog()]

134 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 17:27:32 ]
>>133
ありがとうございます。ステップ実行してOnInitDialogでなんかごにょごにょして、その過程でCButtonのメンバが有効な値をもつようになったの確認できました

135 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 18:40:37 ]
教えるだけ無駄なようだね

136 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 18:59:37 ]
本当は教える知識がないんでしょ?w



137 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 19:01:01 ]
えぇーどんだけーってレベルでしょ

138 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 19:16:31 ]
いかほどぉ〜

139 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 19:40:58 ]
>>132
(1)、「MFCのダイアログクラス」ではなく、「Windows」。

140 名前:デフォルトの名無しさん [2007/09/23(日) 00:15:44 ]
まず何から勉強すればいいですかね?

141 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 03:31:07 ]
>>140
C→C++→Cでwin32apiをかじる→MFCでわけわかんなくなる。
→それでもがんばる→疲れる→Cが恋しくなる→でもC++でがんがる
→どうでもよくなる。

142 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 07:37:51 ]
Cを少しかじる→C++でわけわかんなくなる→MFCをかじる→感動する→C++も分かった気になる
→win32apiも分かった気になる→Cが恋しくなる→久しぶりにCに戻ってみる→
MFCが恋しくなる→でもがんばる→むかついてどうでもよくなる。

143 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 09:02:44 ]
Cを少しかじる→むかついてどうでもよくなる。


144 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 09:13:07 ]
visual C++ からg++なんかの外部のコンパイラを使うにはどうすればいいの?

145 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 09:42:04 ]
cl.exeを置きかえる

146 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 10:36:42 ]
カスタムビルドステップ



147 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 11:59:54 ]
むりむりかたつむり!

148 名前:デフォルトの名無しさん [2007/09/23(日) 16:42:12 ]
WM_KeydownのところでOnKeyDownを追加したんですが、
キーボードから何を押してもそこへ飛んでくれないんですが
これって何か初期設定みたいなのが必要なんでしょうか?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<165KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef