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

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

質問の仕方については次のページが大変参考になります。
URLリンク(www.hyuki.com)
URLリンク(myu.daa.jp)

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

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

2:デフォルトの名無しさん
07/09/10 12:21:02
Part26 スレリンク(tech板)
Part25 スレリンク(tech板)
Part24 スレリンク(tech板)
Part23 スレリンク(tech板)
Part22 スレリンク(tech板)
Part21 スレリンク(tech板)
Part20 スレリンク(tech板)
Part19 スレリンク(tech板)
Part18 スレリンク(tech板)
Part17 スレリンク(tech板)
Part16 スレリンク(tech板)
Part15 スレリンク(tech板)
Part14 スレリンク(tech板)
Part13 スレリンク(tech板)
Part12 スレリンク(tech板)
Part11 スレリンク(tech板)
Part10 スレリンク(tech板)
Part09 スレリンク(tech板)
Part08 URLリンク(pc5.2ch.net)
Part07 URLリンク(pc5.2ch.net)
Part06 URLリンク(pc5.2ch.net)
Part05 URLリンク(pc5.2ch.net)
Part04 URLリンク(pc5.2ch.net)
Part03 URLリンク(pc5.2ch.net)
Part02 URLリンク(pc3.2ch.net)
Part01 URLリンク(pc3.2ch.net)

3:デフォルトの名無しさん
07/09/10 12:21:37
【関連スレ】
■MFC相談室 mfc18d.dll■
スレリンク(tech板)l50
Win32API質問箱 Build57
スレリンク(tech板)l50
【C++】 DirectX初心者質問スレ Part14 【C】
スレリンク(tech板)l50
【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 131
スレリンク(tech板)l50
C++相談室 part56
スレリンク(tech板)l50
C/C++の宿題を片付けます 95代目
スレリンク(tech板)l50
【初心者歓迎】C/C++室 Ver.42【環境依存OK】
スレリンク(tech板)l50

【関連サイト】
猫でもわかるプログラミング
URLリンク(www.kumei.ne.jp)
MSDN ライブラリ ※変更された
URLリンク(msdn.microsoft.com)
URLリンク(msdn2.microsoft.com) (2005のことはこっち)
Platform SDK Update ※変更された
URLリンク(www.microsoft.com)
Google
URLリンク(www.google.co.jp)

4:デフォルトの名無しさん
07/09/10 12:22:16
【このスレの前身 VisualC++相談室 過去スレ】
part 1 URLリンク(piza.2ch.net)
part 2 URLリンク(piza.2ch.net)
part 3 URLリンク(piza2.2ch.net)
part 4 URLリンク(pc.2ch.net)
part 5 URLリンク(pc.2ch.net)
part 6 URLリンク(pc.2ch.net)
part 7 URLリンク(pc.2ch.net)
part 8 URLリンク(pc.2ch.net)
part 9 URLリンク(pc5.2ch.net)

テンプレ終わり。

5:デフォルトの名無しさん
07/09/10 12:40:44
                         \
                         ヽ
                     ____ }
               _, -‐ 二 -―‐- 、`ヽ、_
             ィ=ー-、/        ヽ  `ヽ、
          , '´               \  \
         /       /       `ヽ   丶  ヽ
      , '⌒ /  /:  /   /! l       丶   ヽ   ',
      /  /// / /  / /  l  ヽ \     ハ    l
       〃 / l l  | l   ∨' ヽ ヽー-、   lヽ  l   l
.        !l l  | |   j_{ _,ノ \  l\`ー弋ニ T l  j |   | 
.        !{ |  l l  l 乏≠ミ  \l  >fテ示ヾjl | ./ l  i l、
        ヽ ヽ .N ヽ l{i |ヘiii::l      lヘiii:::} i}| j∧リ.   i lヘ
             \ヽ j小 と)_;ソ      r'_;;(つ/ イノ    ヽjハ
              `ト ハ ゚:::::::.  '   .:::::゚ __/‐<ヘ     ヽ ヽ  >>1乙でごわす
             l: 八   (⌒¨¨⌒ヽ 〃´ ̄`ヽ、ム      \ヽ
             ノ  l> 、 ´ ̄ `´ /      `ヘ       ヾ',
               /    l    {>ー <{        ∧  i     \
            l   /l    l    / l          / ∧ l        \
            |    l∧ ` ヽ _ /  l       // ヽ |ヽ、       ヽ


6:デフォルトの名無しさん
07/09/10 13:46:18
警告のレベルを最大にすると、他人のライブラリで警告だらけになります。
こういうときは、

#pragma warning(push, 0)
#include "....h"
...
#pragma warning(pop)

で、いいでしょうか

7:デフォルトの名無しさん
07/09/10 22:58:00
これまでVCを使ったことはありません。
俺は今後VCを使う日がくるのでしょうか?
(VS2003は持ってる)

本を整理中なんですが、VC、MFC、Win32API、VBあたりの入門的な本を
売っちゃうか悩み中です・・・。

8:デフォルトの名無しさん
07/09/10 22:58:57
売れ

9:デフォルトの名無しさん
07/09/11 08:40:05
std::istream から >> で std::string を読みだす時、
空白でストップしますが、二重引用符で囲んでいる場合は
その間は空白も読み込むようにはできないでしょうか?

ファイル名をストリームで読み込もうとしているのですが、
空白を含むファイル名も扱えるようにしたいのです。

10:デフォルトの名無しさん
07/09/11 09:14:32
ダブルクォーテーションで括っている間だけというのは無理だろう。
自前で解析するしかないと思う。

空白も含めて読み込むことは、
std::getline関数か、std::noskipwsマニピュレータと>>を使うかで可能。

11:デフォルトの名無しさん
07/09/11 09:28:10
次立てるときはC/C++の質問はそっちのスレへ誘導するようにしてほしいな

12:デフォルトの名無しさん
07/09/11 10:10:10
>>7
入門書は売っちゃってもいいけど、中級以上
APIの本とかは残しておくのがいいと思う
自分の場合、今でもPC9801の本とか、ターボアセンブラについていた、オペコード一覧とか
重宝してるよ

13:デフォルトの名無しさん
07/09/11 13:20:16
関数を使っり途中で、確認のためデバッグしたので問題ないと思ったのですが
デバッグ無しで実行するとエラーが表示されます。
以下にソースとエラーpngが入っています。
どなたか、どこがおかしいか指摘してくれませんでしょうか。
お願いします。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

14:デフォルトの名無しさん
07/09/11 13:26:48
次立てるときはC/C++の質問はそっちのスレへ誘導するようにしてほしいな

15:デフォルトの名無しさん
07/09/11 15:01:43
ソースは見てないが
マクローリンのスペル違うぞw
でもこっちの方がなんかいいなw

16:デフォルトの名無しさん
07/09/11 16:06:18
>>13
どうやってデバックして問題ないと判断したのか、その過程を示せ。
-3から3まで0.1刻みのループでは60回繰り返すけど、それは確認したのか。

17:デフォルトの名無しさん
07/09/11 17:24:46
使っり?

18:13
07/09/11 18:39:07
いや、宿題スレにあった問題を解こうと思って
解いてる最中に、どう表示されるかを見ようと思い
デバッグ→OK デバッグ無しで実行→BAD
で、デバッグポイントつけてステップインして
デバッグしまくっても、問題なく終了。
で、VS2005のどっかがおかしくなったのかと思い
VSを修復。
そんで再度、デバッグ無しで実行したら
数値は出て、エラーは出ませんでした。
ま、そんなところです。

19:デフォルトの名無しさん
07/09/11 18:42:21
縦読みでおk

20:デフォルトの名無しさん
07/09/11 18:56:38
>>18
宿題スレの確認ならまあその程度だろうけど、それでは普通デバッグしたことに
ならない。

>>16で答え言ったつもりだったんだけど、60要素分の書き込みに対し、
領域を10要素分しか確保してないからオーバフローして領域破壊しているだけ。
計算の目的知らないけど、単純に考えれば、Ansの第3パラメタが60か、または
Ans関数内のdxの刻みが0.6か、どちらかが違っていると思う。

21:デフォルトの名無しさん
07/09/11 19:33:01
驚愕の新事実発覚!!!
Windowsで外字「㈰」を含むファイル・フォルダ名が、コピー、削除、リスト表示もできません。
CopyFile()、GetCurrentDirectory()などで取り扱えません!!!
でも、dir コマンドはできます。dir>file とリダイレクトすると、fileの中で
この外字は ? に変換されてしまいます!
誰か回避策教えてちょんまゲ。
文字コードは"\x85\x40" です。よろピク。


22:デフォルトの名無しさん
07/09/11 19:41:26
自分の中での驚愕の新事実発覚は心の中で唱えてろ

23:デフォルトの名無しさん
07/09/11 19:54:22
たまたま使えてしまう場合もあるけど
使えない字は使ってはいけない

24:デフォルトの名無しさん
07/09/11 20:02:37
でも、dir とか、ファインダーからは使えちゃうんです。
同じ外字(機種依存文字)でも@などはおk。

25:デフォルトの名無しさん
07/09/11 20:03:29
うるさい死ね

26:デフォルトの名無しさん
07/09/11 20:36:08
その文字はU+3230だろ。
シフトJISに対応する文字が無いから化けるだけじゃねえの?
Unicode系のAPIを呼ぶように修正しろ。

27:デフォルトの名無しさん
07/09/11 20:36:37
>>24
@は外字でもないし、
Unicodeに収録されているので、もはや機種依存文字ですらない。

28:デフォルトの名無しさん
07/09/11 20:46:09
化けるのは問題ないですが、アクセスできずにエラーになってしまうのが困ります。
このフォルダーがあることさえも検出できません。
このフォルダを dir>file としてfileを見ても アスキーの'?' に置き換えられているので
㈰ があることが検出できないのが問題です。消そうと思ってもアクセスできません。


29:デフォルトの名無しさん
07/09/11 20:49:18
>>27
URLリンク(bird.zero.ad.jp)

30:デフォルトの名無しさん
07/09/11 20:53:59
>>26
Unicode系のAPIとは何でしょうか。教えていただければ幸いです。

31:デフォルトの名無しさん
07/09/11 21:09:34
>>30
末尾がWで終わるWin32API群。
例えばCreateFileに対してCreateFileWといった具合。
文字や文字列引数がみなWCHAR (wchar_tのtypedef)を使ったものになっている。

32:デフォルトの名無しさん
07/09/11 21:17:14
>>31
ああ、見たことあります。やってみます。
アリガト

33:デフォルトの名無しさん
07/09/11 22:06:43
シネ

34:デフォルトの名無しさん
07/09/12 10:45:39


35:デフォルトの名無しさん
07/09/12 11:00:29
処女

36:デフォルトの名無しさん
07/09/13 19:01:10
喪失

37:デフォルトの名無しさん
07/09/13 21:06:58
童貞

38:デフォルトの名無しさん
07/09/13 21:13:56
Visual C++ 6.0を使いたいのですがOSはXPでも大丈夫なんでしょうか?
Visual Studio とは何でしょうか?
初心者ですいません・・・


39:デフォルトの名無しさん
07/09/13 21:27:10
「Visual Studio とは何でしょうか?」というレベルなら、まずはVisualStudio2005EEを使ってみてはどうだろうか。
VisualStudioはVC++やC# VBなどでWindowsを開発できる統合開発環境です。
アナルは開発できません。

40:デフォルトの名無しさん
07/09/13 22:11:33
アナルを開発するゲームなら作れるよ!

仕事で必要というのでなければ、VC6はお勧めしない。
OS対応については下のページを参照。
URLリンク(www.microsoft.com)

41:デフォルトの名無しさん
07/09/13 22:25:14
VC6はお勧め

2005EE入れたけどVC6の方が良い

42:デフォルトの名無しさん
07/09/13 22:28:19
VC6の付属STLはカス
C++98の準拠度もカス
よってC++を使うならVC6は

43:デフォルトの名無しさん
07/09/13 22:36:43
Windows XP ではどうかしらないけど
Windows 2000 に Visual Studio 6.0 いれて
MediaPlayer 9 いれたら
Visual C++ Run-time Error で
エクスプローラがめちゃめちゃ落ちるようになたな。

あまりおすすめはしない

44:デフォルトの名無しさん
07/09/14 07:28:09
>>43
Visual Studio入れたら何かとエラー起こすのは昔からお約束。

45:デフォルトの名無しさん
07/09/14 07:29:31
>>43
MediaPlayer 9 いれたら何かとエラー起こすのは昔からお約束。

46:デフォルトの名無しさん
07/09/14 09:34:13
Windows 2000 いれたら何かとエラー起こすのは昔からお約束。

47:デフォルトの名無しさん
07/09/14 11:36:26
M$とはエラる事と見つけたり

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


49:デフォルトの名無しさん
07/09/15 02:03:21
>2005EEに実行がない
シュールだ。

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

51:デフォルトの名無しさん
07/09/15 02:31:08
#include <iostream>
using namespace std;

もっと基礎を勉強しろ

52:デフォルトの名無しさん
07/09/15 02:48:02
分かりました(・◇・)ゞ

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

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



55:デフォルトの名無しさん
07/09/16 08:23:20
まだコントロールができてない

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

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


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

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

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

59:58
07/09/16 21:10:10
ごめんなさい

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

です


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


61:58
07/09/16 21:36:14
>>60
ありがとうございました

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

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


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

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

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

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

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

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

69:デフォルトの名無しさん
07/09/18 01:29:42
GetModuleFileNameに自分のインスタンスハンドル渡す。

70:68
07/09/18 02:21:26
>>69
ありがとうございます。
眠い。。

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

72:デフォルトの名無しさん
07/09/19 14:00:02
眠りましょう。
眠れなければ医者へかかりましょう。

73:デフォルトの名無しさん
07/09/19 14:13:07
いつかは寝なければいけないときが来るのだから寝とけ

74:デフォルトの名無しさん
07/09/19 14:22:28
どうせそのうち寝るのなら、今はがんばって起きていたい

75:デフォルトの名無しさん
07/09/19 17:15:10
でも眠いんだろ?

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

77:デフォルトの名無しさん
07/09/19 17:47:55
あるあるw

78:デフォルトの名無しさん
07/09/19 19:56:19
意味わからね。


79:デフォルトの名無しさん
07/09/19 20:25:47
正解

80:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/09/20 00:54:33
>>80
何か間違ってないか?

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

82:デフォルトの名無しさん
07/09/20 01:01:16
vector<vector<char> > でいいじゃん

83:デフォルトの名無しさん
07/09/20 01:40:54
>>82
死ね

84:デフォルトの名無しさん
07/09/20 14:50:37
そんなvectorの使い方はじめて見た。というか意味不明。

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

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

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

88:デフォルトの名無しさん
07/09/20 19:30:46
C++の話はどうでもいい

89:デフォルトの名無しさん
07/09/20 21:53:53
list<vector<char>>
vector<list<vector>::iterator>
でいいじゃん

90:デフォルトの名無しさん
07/09/21 01:29:23
vector<char>使うならstd::stringを使いたい気分

91:デフォルトの名無しさん
07/09/21 01:39:46
boost::ptr_vector<std::string> str_vec(size);

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

93:デフォルトの名無しさん
07/09/21 02:26:14
>>92
スルー推奨

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

95:デフォルトの名無しさん
07/09/21 22:38:38
C++でBot作れますか?

96:デフォルトの名無しさん
07/09/21 22:51:02
作れない方がおかしい

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

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

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

100:デフォルトの名無しさん
07/09/22 00:04:59
>>98
もっともっともっともっともっともっともっともっともっともっともっともっともっともっともっと詳しく。

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

102:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/09/22 00:24:07
わろた

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


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

106:デフォルトの名無しさん
07/09/22 00:38:05
ワロタら良い

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

108:デフォルトの名無しさん
07/09/22 00:49:50
ソーセージ買いに行ったら自己解決しとった

109:デフォルトの名無しさん
07/09/22 00:57:06
今からオナルんか?
まんこ臭くなるから気を付けろよ

110:デフォルトの名無しさん
07/09/22 01:10:27
エラー デバッグ ブラウザ ツール
URLリンク(www.mozilla-japan.org)
シンプル プログミング ツール
URLリンク(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:デフォルトの名無しさん
07/09/22 01:51:49
インラインアセンブラじゃなくてインラインフォートランにすればいいのに

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

113:デフォルトの名無しさん
07/09/22 03:23:17
お前がバカだから

114:デフォルトの名無しさん
07/09/22 03:32:47
マジで?

115:デフォルトの名無しさん
07/09/22 03:35:13
くまった

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

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

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

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

120:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/09/22 10:40:18
新しいのにする

122:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/09/22 11:33:27
>>97
サンキュー

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

124:デフォルトの名無しさん
07/09/22 11:40:55
マイクロソフトがダメなんじゃなくてお前がダメw

125:デフォルトの名無しさん
07/09/22 12:11:02
JavaScriptに近いC++ありませんか?

126:デフォルトの名無しさん
07/09/22 12:16:04
C++0x

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

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

残るのは2番。

128:デフォルトの名無しさん
07/09/22 12:37:46
人はそれをヘルパ関数と呼

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


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

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



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

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

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

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



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

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

135:デフォルトの名無しさん
07/09/22 18:40:37
教えるだけ無駄なようだね

136:デフォルトの名無しさん
07/09/22 18:59:37
本当は教える知識がないんでしょ?w

137:デフォルトの名無しさん
07/09/22 19:01:01
えぇーどんだけーってレベルでしょ

138:デフォルトの名無しさん
07/09/22 19:16:31
いかほどぉ〜

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

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

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

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

143:デフォルトの名無しさん
07/09/23 09:02:44
Cを少しかじる→むかついてどうでもよくなる。


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

145:デフォルトの名無しさん
07/09/23 09:42:04
cl.exeを置きかえる

146:デフォルトの名無しさん
07/09/23 10:36:42
カスタムビルドステップ

147:デフォルトの名無しさん
07/09/23 11:59:54
むりむりかたつむり!

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

149:デフォルトの名無しさん
07/09/23 17:07:53
WM_KEYDOWN を受け取ろうとしているウィンドウにフォーカスが当たってないんじゃない?
たとえば、ダイアログ上のエディットボックスでキーを押した場合、
WM_KEYDOWN が飛んでくるのはダイアログじゃなくてエディットボックス

150:デフォルトの名無しさん
07/09/23 17:19:31
>>149
ダイアログをクリックしてから押してるんだけどうんともすんとも
ちなみにダイアログだけのプログラムでダイアログにはボタンが6個あるだけです

151:デフォルトの名無しさん
07/09/23 18:28:26
Visual Studio2005使って、Windoxsフォームアプリケーションやってるけど
リソースの使い方がわからない…

152:デフォルトの名無しさん
07/09/23 18:31:20
がんばれ

153:デフォルトの名無しさん
07/09/23 18:35:06
Windoxs

154:デフォルトの名無しさん
07/09/23 18:53:38
>>151
すっげーなお前
Visual Studio2005使って、Windoxsフォームアプリケーションなんかやってるんだ

155:デフォルトの名無しさん
07/09/23 18:54:42
>>154
普通は何やるんですか?

156:デフォルトの名無しさん
07/09/23 19:24:53
>>155
次期SPや修正パッチなどの出荷用テスト

157:デフォルトの名無しさん
07/09/23 19:41:56
私、昨日買ったばっかなんですが、勉強したくて

158:デフォルトの名無しさん
07/09/23 19:47:07
初心者向けの製品は別にあるよ

159:デフォルトの名無しさん
07/09/23 20:12:47
本か何か買ったの?
それ見てやればいいんじゃね?

160:デフォルトの名無しさん
07/09/23 21:31:01
最近のWindowsアプリケーションはいったいどんな種類があるの?
自分はダイアログベースアプリが80%
10%はDLLやStaticLib
時々SDIアプリ
たまーにActiveX

GUI系で最近の流行ってなんですか?

161:デフォルトの名無しさん
07/09/25 07:02:02
スリープ(モニタ電源OFF)から復帰すると動作がおかしくなってるのですが
なにか特別な処理をする必要があるのですか?ソフトはアナログ時計です。
なおPC不調でサスペンドから復帰できなくなってるのでサスペンドの場合はどうなるのか
不明です。


162:デフォルトの名無しさん
07/09/25 07:12:33
サスペンドの場合はPCの電源が即座に切れ二度と起動しなくなります。

163:デフォルトの名無しさん
07/09/25 22:01:23
Visual C++と、標準C++って何が違うんですか?

164:デフォルトの名無しさん
07/09/25 22:19:24
Visual C++は商品名で標準C++は言語名

165:デフォルトの名無しさん
07/09/25 22:31:11
Visual C++で、入門者がMFCを最初にやるのは馬鹿ですかね?

166:デフォルトの名無しさん
07/09/25 23:51:53
C++ をよく理解してるんならいいんじゃないのかな。
でも Windows プログラムの動く仕組み理解しておいた方がいいんじゃないかな

167:デフォルトの名無しさん
07/09/26 00:09:05
VisualC++で、キーボードからの入力をテキストファイルに保存したいんですけど、どうしたら出来ますかね?

168:デフォルトの名無しさん
07/09/26 00:39:39
1)キーボードから入力を受け取って
2)ファイルに書き込む

といいよ

169:デフォルトの名無しさん
07/09/26 00:55:04
>>167
キーロガー作ってパス盗む気か

170:デフォルトの名無しさん
07/09/26 01:11:12
ついでに特定のサイトを見ているときだけ保存したいんですけど、どうしたらできますかね?

171:デフォルトの名無しさん
07/09/26 02:41:42
>>170
釣りは死んでください。

172:デフォルトの名無しさん
07/09/26 02:45:01
はい

173:デフォルトの名無しさん
07/09/26 07:28:10
vs2005ですが、デバッグの際、
stlのvectorとかでエラーが出たときに
なんかウィンドウが出るだけでデバッガの方に出力されないので
どこでエラーが出てるのか分かりにくいです。
どうにか場所を特定する方法ってありますか?

174:デフォルトの名無しさん
07/09/26 08:12:35
キーボードからの入力を受け取りたいんですけど、やっぱりAPIとかの知識がないとだめなんですかね?

175:デフォルトの名無しさん
07/09/26 08:18:52
キーボードからの入力以前に、やっぱりAPIとかの知識がないとだめ人間です。

176:デフォルトの名無しさん
07/09/26 08:25:37
>>173
つブレークポイント
まず適当にブレークポイントを設定して自分のコードのどの場所でエラーが出るか特定する
次にその部分で使ってる関数の各ステップにブレークポイントを設定してどの場所でエラーが出るか特定する
それを再帰的に繰り返していくとランタイムアサートのマクロ構文に辿り着く筈

177:デフォルトの名無しさん
07/09/26 08:39:44
>>175
学習してきます。

178:デフォルトの名無しさん
07/09/26 20:53:45
質問です。

struct Base
{
void *p;
virtual ~Base(){}
};

struct Hoge : public Base
{
Hoge(){p = new HogeData;}
};

と、このように IData *pを派生先で共有したいと思っています。
派生先ごとにpに何を生成するかは決まっており、
Hoge なら new HogeData
Main なら new MainData
John なら new JohnData
といった具合です。(xxxData たちは全て、IDataを継承しています)

この状態で
Hoge *pHoge = new Hoge;
と、VisualSturio6.0のデバッガ「変数ウインドウ」で見た場合、pはあくまでvoid*型なのでそれ以上データを見ることはできません。
しかし、プログラマである私が決めたルールとして Hogeの時のpは*HogeDataとして扱うというルールがあります。
これをデバッガに認識させる方法はありませんでしょうか?

・Base *pHoge = new Hoge; とした場合、pHoge->pをHogeDataだと認識する必要は無い(高望みすぎるので)
・void *p; のかわりに IData *p; にしてみたが、IDataとしてしか認識してくれなかった(HogeDataの持つ変数は見られなかった)
・デバッガに認識させるために、何か特別な記述を加える労力は惜しまない
・クイックウォッチを使ってきちんと手動で型認識させてやれば見られたが、毎回手動はきつい(自動にできる方法があるならそれでもいいかも)

よろしくお願いします。

179:デフォルトの名無しさん
07/09/26 20:55:30
1行間違いです
>と、このように IData *pを派生先で共有したいと思っています。

と、このように void *pを派生先で共有したいと思っています。


曖昧な表現でした
>pはあくまでvoid*型なのでそれ以上データを見ることはできません。

つまり、変数ウインドウ上のpの頭のところに[+]記号が出てこないということです


180:デフォルトの名無しさん
07/09/26 21:08:24
>>178
仮にBaseはpを持っている必要がないとすれば、
BaseにIData* GetData() = 0;のようなメンバ関数を用意して、
個々の派生クラスで、メンバ変数pとpを返すGetDataを定義するという方法が思い付く。
派生クラス毎にpを持てば、HogeDataなど特化した型にできるだろう。

181:デフォルトの名無しさん
07/09/26 21:17:04
void pointer…(ゴクリ

182:デフォルトの名無しさん
07/09/26 21:22:40
>>180
お返事ありがとうございます。

派生クラス毎に持つという案は確かに考えたのですが、
Base <- Hoge <- HogeEx
とやったときに複数ポインタが存在することになってしまいます。
(Baseには無しとしても、Hoge分とHogeEx分)

IData* GetData() =0; の手法ですが、そのGetDataを呼び出す記述がソースに無い限り
いきなりブレイクして変数ウインドウを見ても表示されないのではないでしょうか。

一応今も非virtual なGetDataをそれぞれ持つようにさせ、クイックウォッチの時の記述が統一的になるようにはしています。
(ただ、それでもクイックウォッチ呼び出すのかなり面倒なのですよね…)

183:デフォルトの名無しさん
07/09/26 21:46:50
template <typename T> struct Holder : public IHolder {
Holder() : p(new T) { IHolder::p = p; }
T* p;
};
を作って
typedef Holder<HogeData> Hoge;
typedef Holder<MainData> Main;

みたいに使えばどうか?

見るだけならrelease時はT* p
を持たないバージョン作っといてそれを使うようにすればいいし

184:デフォルトの名無しさん
07/09/26 21:49:48
変数ウインドウで値みなきゃデバッグできないわけじゃないし
それだけのためにごちゃごちゃソースいじるのも頭わるすぎる

185:デフォルトの名無しさん
07/09/26 21:54:44
なるほど、テンプレートですか
実験してみようと思います。

しかし逆に考えると、テンプレート使うくらいしか方法が無いってことなんでしょうかね

私の妄想上の記述ですが
struct Base
{
void *p;
virtual ~Base(){}
};
struct Hoge : public Base
{
union
{
 void *Base::p;
 HogeData* pHogeData;
}
Hoge(){p = new HogeData;}
};

こんなことできないもんでしょうかね?

186:デフォルトの名無しさん
07/09/26 21:55:58
>>184
確かに正論だと思います。
なので「簡単に変数ウインドウで確認するための方法」があるなら知りたいわけです。
とてつもなくソースが難読になってしまうのなら、やらないだろうと思います。

187:デフォルトの名無しさん
07/09/26 22:15:32
もちろんできますお
でもこうすればIHolderがいらない子になってしまう
template <typename T> struct Holder
{
Holder() : derived(new T) {}
union {
IData* base;
T* derived;
};
};
HogeやMainもポインタや参照経由で多態性を持たせるなら
もっと面倒臭くなるし下手すりゃVC6ではコンパイルできなくなるかも

188:デフォルトの名無しさん
07/09/26 22:27:21
MFCのランタイムクラス情報を使っていれば、
自動で派生クラスの内容も表示できたりするけど、
今回はそれは無しだろうしなあ。

189:デフォルトの名無しさん
07/09/26 23:38:07
自分でautoexp.datを書くってのはどうだろう。

190:デフォルトの名無しさん
07/09/26 23:51:54
>>187
定義済みの変数を、unionで「こいつとも共用体ってことで」って後付けできないもんでしょうか

>>188
MFCはなしですね…。携帯電話用なもので

>>189
ぐぐってみましたがこれは面白そうですね。ちょっと調べてみます

191:デフォルトの名無しさん
07/09/27 00:38:43
autoexp.dat を使えばもしかしたらいけそう…。
と思うのですが、ポインタの型変換の書き方がわかりませんね…
Hoge=b=<((HogeData*)p)->b>
では認識してくれないようです。

どなたかautoexp.datについて分かるかたいらっしゃいませんでしょうか
もしくは詳しいページor書籍などを紹介していただけると嬉しいです

192:デフォルトの名無しさん
07/09/28 15:45:55
Visual Studio 2005 Standard Edition を購入しようとしています。
今2003版を持っているので、アップグレード版を買えばいいとは思うのですが、
2003のユーザー登録がしていなといけないとか、
同じパソコンにインストールしないといけないとか、
アップグレード版にはそういった制約があるのでしょうか?
教えて下さいませ

193:デフォルトの名無しさん
07/09/28 16:59:04
ない

194:192
07/09/28 17:14:14
>>193
ありがとうございます。
もし2003を持っていなくても、普通に動くという事?

195:デフォルトの名無しさん
07/09/28 22:34:58
インストール時に2003のディスクチェックくらいあるだろう

196:デフォルトの名無しさん
07/09/28 23:36:41
ディスクチェックもなければアクチもねえぞ

197:デフォルトの名無しさん
07/09/29 00:46:19
#include "gameframe.h"

void GameFrame::doMainLoop(){
ChangeWindowMode(TRUE);
if(DxLib_Init()==-1) return;
SetDrawScreen(DX_SCREEN_BACK);


while(ProcessMessage()==0&& CheckHitKey(KEY_INPUT_ESCAPE)==0){
ClsDrawScreen();
ScreenFlip();
}
DxLib_End();
とソースコードをコンパイルしようとしたら・・・
こんなエラーが出てきましたどうしたらいいでしょう??
↓↓
エラー E2090 型限定子 'GameFrame' がクラス名または名前空間名ではない
エラー E2040 宣言が正しく終了していない


198:デフォルトの名無しさん
07/09/29 01:32:11
エラーコードについて
msdn で調べてみるか
google 先生に聞いてみると良いよ。

199:デフォルトの名無しさん
07/09/29 05:28:42
教えるだけ無駄そうだな
C++勉強したことある?

200:デフォルトの名無しさん
07/09/29 07:24:53
今までVBばっかり使ってたのですが、
最近Visual C++に興味があります
何から始めたらいいでしょうか?

201:200
07/09/29 07:27:18
書き忘れました
VS2005です

202:デフォルトの名無しさん
07/09/29 08:58:17
C++やったことがないとVisual C++は無理

203:デフォルトの名無しさん
07/09/29 09:00:16


204:200
07/09/29 09:06:42
そうですか(><;
どうも

205:デフォルトの名無しさん
07/09/29 17:57:30
coutってなんて読むのでしょうか?

206:デフォルトの名無しさん
07/09/29 18:02:27
シーアウトかな

207:デフォルトの名無しさん
07/09/29 18:43:27
コウティー

208:デフォルトの名無しさん
07/09/29 19:37:55
>>207
無知乙wwwwwwww

209:デフォルトの名無しさん
07/09/29 20:33:05
コンソールアウト

210:デフォルトの名無しさん
07/09/29 22:47:53
コウト

211:デフォルトの名無しさん
07/09/29 23:07:02
の中では

212:デフォルトの名無しさん
07/09/29 23:07:44
兵器


213:デフォルトの名無しさん
07/09/30 06:32:20


214:デフォルトの名無しさん
07/09/30 08:06:32
const int const_cout_count = 0;

215:デフォルトの名無しさん
07/09/30 08:31:56
昔のVCのプロジェクトをビルドしようとしているんですが、
そのプロジェクトではnasmというコマンドを使ってアセンブラファイルをアセンブルしようとしていました。
そしてVC6ではnasmは見つからないらしく、コマンドが見つかりません、ってエラーになります。
nasmはVC6ではなくなってしまったのでしょうか?代替のアセンブラはありますか?


216:デフォルトの名無しさん
07/09/30 08:38:30
昔のVCにnasmついてたっけ?
自分で作ったプログラムかそれ?

217:デフォルトの名無しさん
07/09/30 08:45:18
プログラムはネットで拾ったものです。


218:デフォルトの名無しさん
07/09/30 08:51:23
ググれ。nasmならsourceforge.netで公開されている。

219:デフォルトの名無しさん
07/09/30 09:00:04
ありがとうございます。ググッて来ます

220:デフォルトの名無しさん
07/09/30 09:04:16
おかげさまで今アセンブルできました!!
ありがとうございましたm(_ _)m

221:デフォルトの名無しさん
07/09/30 13:12:49
nasmはintel表記に従っているから好き。
gasは独自表記に拘っているから嫌い。

222:デフォルトの名無しさん
07/09/30 22:17:09
リソースファイルで設定した製品バージョン
VALUE "ProductVersion", "0, 0, 0, 1"
をプログラム中から取得するにはどうすればよいのでしょうか?

223:デフォルトの名無しさん
07/09/30 22:58:03
>>222
GetFileVersionInfo + VerQueryValue

224:デフォルトの名無しさん
07/10/01 06:18:06
なるほど、一旦できた実行ファイルから取得するしかないんですね。
もっと静的にコンパイル時に取得できる物だと思っていました。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4924日前に更新/165 KB
担当:undef