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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
1 : ◆Manna2uCLg :2005/04/15(金) 13:33:14
Visual C++入門者・初心者からの質問を、
お兄ちゃん達が優しく、時には厳しく回答してくれるスレッドです。

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

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

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

過去スレ、関連スレなどは>>2-5
2デフォルトの名無しさん:2007/09/10(月) 12:21:02
Part26 ttp://pc11.2ch.net/test/read.cgi/tech/1176387917/
Part25 ttp://pc11.2ch.net/test/read.cgi/tech/1168354839/
Part24 ttp://pc10.2ch.net/test/read.cgi/tech/1158296664/
Part23 ttp://pc8.2ch.net/test/read.cgi/tech/1140711893/
Part22 ttp://pc8.2ch.net/test/read.cgi/tech/1131443284/
Part21 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
3デフォルトの名無しさん:2007/09/10(月) 12:21:37
【関連スレ】
■MFC相談室 mfc18d.dll■
http://pc11.2ch.net/test/read.cgi/tech/1185917008/l50
Win32API質問箱 Build57
http://pc11.2ch.net/test/read.cgi/tech/1189255282/l50
【C++】 DirectX初心者質問スレ Part14 【C】
http://pc11.2ch.net/test/read.cgi/tech/1182351826/l50
【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 131
http://pc11.2ch.net/test/read.cgi/tech/1170338926/l50
C++相談室 part56
http://pc11.2ch.net/test/read.cgi/tech/1185377587/l50
C/C++の宿題を片付けます 95代目
http://pc11.2ch.net/test/read.cgi/tech/1187944110/l50
【初心者歓迎】C/C++室 Ver.42【環境依存OK】
http://pc11.2ch.net/test/read.cgi/tech/1188748806/l50

【関連サイト】
猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
MSDN ライブラリ ※変更された
http://msdn.microsoft.com/library/ja/
http://msdn2.microsoft.com/ja-jp/library/ (2005のことはこっち)
Platform SDK Update ※変更された
http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en
Google
http://www.google.co.jp/
4デフォルトの名無しさん:2007/09/10(月) 12:22:16
5デフォルトの名無しさん:2007/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デフォルトの名無しさん:2007/09/10(月) 13:46:18
警告のレベルを最大にすると、他人のライブラリで警告だらけになります。
こういうときは、

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

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

本を整理中なんですが、VC、MFC、Win32API、VBあたりの入門的な本を
売っちゃうか悩み中です・・・。
8デフォルトの名無しさん:2007/09/10(月) 22:58:57
売れ
9デフォルトの名無しさん:2007/09/11(火) 08:40:05
std::istream から >> で std::string を読みだす時、
空白でストップしますが、二重引用符で囲んでいる場合は
その間は空白も読み込むようにはできないでしょうか?

ファイル名をストリームで読み込もうとしているのですが、
空白を含むファイル名も扱えるようにしたいのです。
10デフォルトの名無しさん:2007/09/11(火) 09:14:32
ダブルクォーテーションで括っている間だけというのは無理だろう。
自前で解析するしかないと思う。

空白も含めて読み込むことは、
std::getline関数か、std::noskipwsマニピュレータと>>を使うかで可能。
11デフォルトの名無しさん:2007/09/11(火) 09:28:10
次立てるときはC/C++の質問はそっちのスレへ誘導するようにしてほしいな
12デフォルトの名無しさん:2007/09/11(火) 10:10:10
>>7
入門書は売っちゃってもいいけど、中級以上
APIの本とかは残しておくのがいいと思う
自分の場合、今でもPC9801の本とか、ターボアセンブラについていた、オペコード一覧とか
重宝してるよ
13デフォルトの名無しさん:2007/09/11(火) 13:20:16
関数を使っり途中で、確認のためデバッグしたので問題ないと思ったのですが
デバッグ無しで実行するとエラーが表示されます。
以下にソースとエラーpngが入っています。
どなたか、どこがおかしいか指摘してくれませんでしょうか。
お願いします。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4915.lzh
14デフォルトの名無しさん:2007/09/11(火) 13:26:48
次立てるときはC/C++の質問はそっちのスレへ誘導するようにしてほしいな
15デフォルトの名無しさん:2007/09/11(火) 15:01:43
ソースは見てないが
マクローリンのスペル違うぞw
でもこっちの方がなんかいいなw
16デフォルトの名無しさん:2007/09/11(火) 16:06:18
>>13
どうやってデバックして問題ないと判断したのか、その過程を示せ。
-3から3まで0.1刻みのループでは60回繰り返すけど、それは確認したのか。
17デフォルトの名無しさん:2007/09/11(火) 17:24:46
使っり?
1813:2007/09/11(火) 18:39:07
いや、宿題スレにあった問題を解こうと思って
解いてる最中に、どう表示されるかを見ようと思い
デバッグ→OK デバッグ無しで実行→BAD
で、デバッグポイントつけてステップインして
デバッグしまくっても、問題なく終了。
で、VS2005のどっかがおかしくなったのかと思い
VSを修復。
そんで再度、デバッグ無しで実行したら
数値は出て、エラーは出ませんでした。
ま、そんなところです。
19デフォルトの名無しさん:2007/09/11(火) 18:42:21
縦読みでおk
20デフォルトの名無しさん:2007/09/11(火) 18:56:38
>>18
宿題スレの確認ならまあその程度だろうけど、それでは普通デバッグしたことに
ならない。

>>16で答え言ったつもりだったんだけど、60要素分の書き込みに対し、
領域を10要素分しか確保してないからオーバフローして領域破壊しているだけ。
計算の目的知らないけど、単純に考えれば、Ansの第3パラメタが60か、または
Ans関数内のdxの刻みが0.6か、どちらかが違っていると思う。
21デフォルトの名無しさん:2007/09/11(火) 19:33:01
驚愕の新事実発覚!!!
Windowsで外字「㈰」を含むファイル・フォルダ名が、コピー、削除、リスト表示もできません。
CopyFile()、GetCurrentDirectory()などで取り扱えません!!!
でも、dir コマンドはできます。dir>file とリダイレクトすると、fileの中で
この外字は ? に変換されてしまいます!
誰か回避策教えてちょんまゲ。
文字コードは"\x85\x40" です。よろピク。
22デフォルトの名無しさん:2007/09/11(火) 19:41:26
自分の中での驚愕の新事実発覚は心の中で唱えてろ
23デフォルトの名無しさん:2007/09/11(火) 19:54:22
たまたま使えてしまう場合もあるけど
使えない字は使ってはいけない
24デフォルトの名無しさん:2007/09/11(火) 20:02:37
でも、dir とか、ファインダーからは使えちゃうんです。
同じ外字(機種依存文字)でも@などはおk。
25デフォルトの名無しさん:2007/09/11(火) 20:03:29
うるさい死ね
26デフォルトの名無しさん:2007/09/11(火) 20:36:08
その文字はU+3230だろ。
シフトJISに対応する文字が無いから化けるだけじゃねえの?
Unicode系のAPIを呼ぶように修正しろ。
27デフォルトの名無しさん:2007/09/11(火) 20:36:37
>>24
@は外字でもないし、
Unicodeに収録されているので、もはや機種依存文字ですらない。
28デフォルトの名無しさん:2007/09/11(火) 20:46:09
化けるのは問題ないですが、アクセスできずにエラーになってしまうのが困ります。
このフォルダーがあることさえも検出できません。
このフォルダを dir>file としてfileを見ても アスキーの'?' に置き換えられているので
㈰ があることが検出できないのが問題です。消そうと思ってもアクセスできません。
29デフォルトの名無しさん:2007/09/11(火) 20:49:18
30デフォルトの名無しさん:2007/09/11(火) 20:53:59
>>26
Unicode系のAPIとは何でしょうか。教えていただければ幸いです。
31デフォルトの名無しさん:2007/09/11(火) 21:09:34
>>30
末尾がWで終わるWin32API群。
例えばCreateFileに対してCreateFileWといった具合。
文字や文字列引数がみなWCHAR (wchar_tのtypedef)を使ったものになっている。
32デフォルトの名無しさん:2007/09/11(火) 21:17:14
>>31
ああ、見たことあります。やってみます。
アリガト
33デフォルトの名無しさん:2007/09/11(火) 22:06:43
シネ
34デフォルトの名無しさん:2007/09/12(水) 10:45:39
35デフォルトの名無しさん:2007/09/12(水) 11:00:29
処女
36デフォルトの名無しさん:2007/09/13(木) 19:01:10
喪失
37デフォルトの名無しさん:2007/09/13(木) 21:06:58
童貞
38デフォルトの名無しさん:2007/09/13(木) 21:13:56
Visual C++ 6.0を使いたいのですがOSはXPでも大丈夫なんでしょうか?
Visual Studio とは何でしょうか?
初心者ですいません・・・
39デフォルトの名無しさん:2007/09/13(木) 21:27:10
「Visual Studio とは何でしょうか?」というレベルなら、まずはVisualStudio2005EEを使ってみてはどうだろうか。
VisualStudioはVC++やC# VBなどでWindowsを開発できる統合開発環境です。
アナルは開発できません。
40デフォルトの名無しさん:2007/09/13(木) 22:11:33
アナルを開発するゲームなら作れるよ!

仕事で必要というのでなければ、VC6はお勧めしない。
OS対応については下のページを参照。
http://www.microsoft.com/japan/msdn/vstudio/support/tools.aspx
41デフォルトの名無しさん:2007/09/13(木) 22:25:14
VC6はお勧め

2005EE入れたけどVC6の方が良い
42デフォルトの名無しさん:2007/09/13(木) 22:28:19
VC6の付属STLはカス
C++98の準拠度もカス
よってC++を使うならVC6は
43デフォルトの名無しさん:2007/09/13(木) 22:36:43
Windows XP ではどうかしらないけど
Windows 2000 に Visual Studio 6.0 いれて
MediaPlayer 9 いれたら
Visual C++ Run-time Error で
エクスプローラがめちゃめちゃ落ちるようになたな。

あまりおすすめはしない
44デフォルトの名無しさん:2007/09/14(金) 07:28:09
>>43
Visual Studio入れたら何かとエラー起こすのは昔からお約束。
45デフォルトの名無しさん:2007/09/14(金) 07:29:31
>>43
MediaPlayer 9 いれたら何かとエラー起こすのは昔からお約束。
46デフォルトの名無しさん:2007/09/14(金) 09:34:13
Windows 2000 いれたら何かとエラー起こすのは昔からお約束。
47デフォルトの名無しさん:2007/09/14(金) 11:36:26
M$とはエラる事と見つけたり
48デフォルトの名無しさん:2007/09/15(土) 01:57:40
2005EEに実行がないんですけど。2008βでは実行してもテストがどうのっていわれて
コンソールもでないし。ソースはよくあるmainにcoutだけのやつです。
49デフォルトの名無しさん:2007/09/15(土) 02:03:21
>2005EEに実行がない
シュールだ。
50デフォルトの名無しさん:2007/09/15(土) 02:23:08
ソースをプロジェクトに加えてなかった・・。#include <iostream.h>とやるとファイルがないと
言われるし.hを取ると今度はcoutが定義されてない識別子。実行はデバッグなしで開始で
いいんですよね?
51デフォルトの名無しさん:2007/09/15(土) 02:31:08
#include <iostream>
using namespace std;

もっと基礎を勉強しろ
52デフォルトの名無しさん:2007/09/15(土) 02:48:02
分かりました(・◇・)ゞ
53デフォルトの名無しさん:2007/09/16(日) 05:34:49
ひさしぶりにVC++6.0で勉強再開したのですがSP6が出ていたので当てましたが
バージョン情報には変化がありません。確認する方法はないのでしょうか。
54デフォルトの名無しさん:2007/09/16(日) 06:59:35
GetDlgItemでハンドルの取得に失敗してるようなのですがどんな原因が考えられますか。
コントロールのIDは合ってます。HWNDはダイアログボックスの引数です。

55デフォルトの名無しさん:2007/09/16(日) 08:23:20
まだコントロールができてない
56デフォルトの名無しさん:2007/09/16(日) 08:27:57
能力不足
コントロールのIDは合ってるつもりなだけ。HWNDにダイアログボックスのハンドルを指定していない。
HWNDがスコープの範囲外である。
57デフォルトの名無しさん: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が出るのですが、本に書いてあるとおりやってるだけなのですがなぜダメなのでしょうか?
5958: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デフォルトの名無しさん:2007/09/16(日) 21:17:37
>>59
×oldPen = pdc1->SelectObject(myPen);
○oldPen = pdc1->SelectObject(&myPen);
6158:2007/09/16(日) 21:36:14
>>60
ありがとうございました
62デフォルトの名無しさん:2007/09/17(月) 00:12:35
ぜったい本の通りやってないだろバカ
6358:2007/09/17(月) 00:29:01
いえ本が間違ってました
工学社 Visual C++ .NET ゲーム制作教科書 片山幸雄著 の39ページ40ページです
もちろん他の部分から類推できるものなのでそれができなかったのは私がバカなのですが
64デフォルトの名無しさん:2007/09/17(月) 00:53:59
アナログ時計のプログラムってどんな感じなんでしょうか・・・
デジタルなら簡単に出来るんですが。

どなたかご教授お願いしますorz
65デフォルトの名無しさん:2007/09/17(月) 01:05:55
>>64
文字盤の上に、時分秒に従い角度を計算して針を書くだけ
注意点としては針を進めるとき、下の針を消してから新しい針を書くのではなく、
ダブルバッファリングという手法を使って画面を更新すること
これだけ注意すれば問題ないはず
66デフォルトの名無しさん:2007/09/17(月) 01:23:37
>>65
ダブルバッファリングですか。
難しそうですが、頑張ってみます。
ありがとうございました。
67デフォルトの名無しさん:2007/09/17(月) 08:20:56
プログラミングWindowsのサンプルは消してから書く方式だったと思う
サンプル動かして見たけど特にそれで問題ない
68デフォルトの名無しさん:2007/09/18(火) 01:21:43
DLLプログラムで、自分自身が動作しているパスを取得したいのですが、
どうすればいいのか解りません。よろしくお願いします
69デフォルトの名無しさん:2007/09/18(火) 01:29:42
GetModuleFileNameに自分のインスタンスハンドル渡す。
7068:2007/09/18(火) 02:21:26
>>69
ありがとうございます。
眠い。。
71デフォルトの名無しさん:2007/09/19(水) 13:53:38
眠いのですが、どうすればいいのか解りません。よろしくお願いします
72デフォルトの名無しさん:2007/09/19(水) 14:00:02
眠りましょう。
眠れなければ医者へかかりましょう。
73デフォルトの名無しさん:2007/09/19(水) 14:13:07
いつかは寝なければいけないときが来るのだから寝とけ
74デフォルトの名無しさん:2007/09/19(水) 14:22:28
どうせそのうち寝るのなら、今はがんばって起きていたい
75デフォルトの名無しさん:2007/09/19(水) 17:15:10
でも眠いんだろ?
76デフォルトの名無しさん:2007/09/19(水) 17:20:22
俺の経験から言うと
無理して徹夜するよりきっぱり定時に帰って
明日朝からしゃきっとがんばった方が効率が良いと思って
早朝7時くらいに出社して徹夜するはずだった分を補填しようとするけど
結局5分遅刻して(;´Д`)
77デフォルトの名無しさん:2007/09/19(水) 17:47:55
あるあるw
78デフォルトの名無しさん:2007/09/19(水) 19:56:19
意味わからね。
79デフォルトの名無しさん:2007/09/19(水) 20:25:47
正解
80デフォルトの名無しさん: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デフォルトの名無しさん:2007/09/20(木) 00:54:33
>>80
何か間違ってないか?

VC6起動して試したけどワーニング出ない
実行エラーにもならない(上記3行だけだけど)
82デフォルトの名無しさん:2007/09/20(木) 01:01:16
vector<vector<char> > でいいじゃん
83デフォルトの名無しさん:2007/09/20(木) 01:40:54
>>82
死ね
84デフォルトの名無しさん:2007/09/20(木) 14:50:37
そんなvectorの使い方はじめて見た。というか意味不明。
85デフォルトの名無しさん:2007/09/20(木) 14:55:45
>>84
二次元データを扱うために、vector<vector<float> >なんて使い方するのは常套手段だが。
>80の使い方なら確かに気色悪いと思う。
86デフォルトの名無しさん:2007/09/20(木) 16:44:18
>>85
いや、当然>80の話よ。vectorの意味を理解してない気がするので。
87デフォルトの名無しさん:2007/09/20(木) 18:54:25
vector<char> vec(size);
こうしたいだけだよな>>80
88デフォルトの名無しさん:2007/09/20(木) 19:30:46
C++の話はどうでもいい
89デフォルトの名無しさん:2007/09/20(木) 21:53:53
list<vector<char>>
vector<list<vector>::iterator>
でいいじゃん
90デフォルトの名無しさん:2007/09/21(金) 01:29:23
vector<char>使うならstd::stringを使いたい気分
91デフォルトの名無しさん:2007/09/21(金) 01:39:46
boost::ptr_vector<std::string> str_vec(size);
92デフォルトの名無しさん:2007/09/21(金) 02:02:10
>>83
死ね って言ってる理由が分からないんだが。
vector<vector<char> > は何か問題あるの?
93デフォルトの名無しさん:2007/09/21(金) 02:26:14
>>92
スルー推奨
94デフォルトの名無しさん:2007/09/21(金) 22:15:06
リソースエディタ経由ではなく直接リソースIDを確保したいときどうしたらいいですか?
Resource.hにじかに編集?
95デフォルトの名無しさん:2007/09/21(金) 22:38:38
C++でBot作れますか?
96デフォルトの名無しさん:2007/09/21(金) 22:51:02
作れない方がおかしい
97デフォルトの名無しさん:2007/09/21(金) 23:10:50
>>94
resource.h を直接編集してますね
個人的に気をつけてるのは、プロジェクトを閉じてから編集を開始するのと
編集後.apsファイルは削除しておくことくらい
98デフォルトの名無しさん:2007/09/21(金) 23:57:57
VC++6で、キー入力を捕まえたいんですが、
設置してあるボタンを押したあとだとキー入力を受け付けてくれません。
原因は何でしょうか?
99デフォルトの名無しさん:2007/09/22(土) 00:03:53
Win32API で
CreateWindowW(
とすると引数の情報が出てくるんですけど
CreateWindow(
では情報がでてきません。
これが普通なんでしょうか?
それとも何かファイルが壊れててでなかったりしてるんでしょうか?
100デフォルトの名無しさん:2007/09/22(土) 00:04:59
>>98
もっともっともっともっともっともっともっともっともっともっともっともっともっともっともっと詳しく。
101デフォルトの名無しさん: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デフォルトの名無しさん:2007/09/22(土) 00:24:07
わろた
104デフォルトの名無しさん:2007/09/22(土) 00:33:34
インラインアセンブラが使え無い言語は
基本的に劣っていると考えたい・・・
105デフォルトの名無しさん:2007/09/22(土) 00:34:16
すみません、超初心者なんで・・・どうしたらよいのでしょうか?
106デフォルトの名無しさん:2007/09/22(土) 00:38:05
ワロタら良い
107デフォルトの名無しさん:2007/09/22(土) 00:39:10
原因がわかりました。
どう調べたらいいのか分からなかったので・・・
ありがとうございました。
108デフォルトの名無しさん:2007/09/22(土) 00:49:50
ソーセージ買いに行ったら自己解決しとった
109デフォルトの名無しさん:2007/09/22(土) 00:57:06
今からオナルんか?
まんこ臭くなるから気を付けろよ
110デフォルトの名無しさん:2007/09/22(土) 01:10:27
エラー デバッグ ブラウザ ツール
http://www.mozilla-japan.org/
シンプル プログミング ツール
http://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デフォルトの名無しさん:2007/09/22(土) 01:51:49
インラインアセンブラじゃなくてインラインフォートランにすればいいのに
112デフォルトの名無しさん:2007/09/22(土) 03:22:01
strtokがエラー出るんだけどなんで?
strtokのソースの中で検索ヒットした文字に\0で置き換えするところでアクセス違反起きてる
ちゃんと文字列の中アクセスしてるはずなのになんで?どうして?
113デフォルトの名無しさん: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デフォルトの名無しさん:2007/09/22(土) 06:15:15
お前の事だからそんなこったろうと思ったよ
頭わるすぎw全米がわろた
118デフォルトの名無しさん:2007/09/22(土) 10:26:33
>>116
無理だったね。
112に書いてあることだけで答えを導き出すには、
おそらく一級のエスパーが必要だったろうから。
119デフォルトの名無しさん:2007/09/22(土) 10:34:37
>>116
正解だったね。
113に書いてあるとおりで答えを導き出せないのは、
おまえが超級のパーである証明だったろうから。
120デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん:2007/09/22(土) 11:33:27
>>97
サンキュー

やっぱそんなかんじか。マイクロソフトはホントダメだな。
124デフォルトの名無しさん:2007/09/22(土) 11:40:55
マイクロソフトがダメなんじゃなくてお前がダメw
125デフォルトの名無しさん:2007/09/22(土) 12:11:02
JavaScriptに近いC++ありませんか?
126デフォルトの名無しさん:2007/09/22(土) 12:16:04
C++0x
127デフォルトの名無しさん:2007/09/22(土) 12:35:50
>>122
フレームワークの中身を書き換えるなんて原則もってのほか。だから1はない。

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

残るのは2番。
128デフォルトの名無しさん:2007/09/22(土) 12:37:46
人はそれをヘルパ関数と呼
129デフォルトの名無しさん:2007/09/22(土) 16:42:49
CButtonとかはリソースエディタで追加するとそのまま使えるのに
手で追加するとなぜCreateを呼ばないといけないの?
リソースとして追加した場合なんでCButtonのインスタンスが無いの?
130デフォルトの名無しさん:2007/09/22(土) 16:52:16
ボタンはコントロール
C++のクラスではない
CButtonはそれをMFCで扱うためのクラス
131デフォルトの名無しさん:2007/09/22(土) 16:56:43
ダイアログ上のコントロールは、
ダイアログ作成時にWindowsが作る(そのためのダイアログだ)。
あとは、作成されたコントロールとソース上のCButtonとを
関連付けるだけなので、Createする必要がない。

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

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

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

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

133デフォルトの名無しさん:2007/09/22(土) 17:20:07
>>132
>(2)
つ[OnInitDialog()]
134デフォルトの名無しさん:2007/09/22(土) 17:27:32
>>133
ありがとうございます。ステップ実行してOnInitDialogでなんかごにょごにょして、その過程でCButtonのメンバが有効な値をもつようになったの確認できました
135デフォルトの名無しさん:2007/09/22(土) 18:40:37
教えるだけ無駄なようだね
136デフォルトの名無しさん:2007/09/22(土) 18:59:37
本当は教える知識がないんでしょ?w
137デフォルトの名無しさん:2007/09/22(土) 19:01:01
えぇーどんだけーってレベルでしょ
138デフォルトの名無しさん:2007/09/22(土) 19:16:31
いかほどぉ〜
139デフォルトの名無しさん:2007/09/22(土) 19:40:58
>>132
(1)、「MFCのダイアログクラス」ではなく、「Windows」。
140デフォルトの名無しさん:2007/09/23(日) 00:15:44
まず何から勉強すればいいですかね?
141デフォルトの名無しさん :2007/09/23(日) 03:31:07
>>140
C→C++→Cでwin32apiをかじる→MFCでわけわかんなくなる。
→それでもがんばる→疲れる→Cが恋しくなる→でもC++でがんがる
→どうでもよくなる。
142デフォルトの名無しさん:2007/09/23(日) 07:37:51
Cを少しかじる→C++でわけわかんなくなる→MFCをかじる→感動する→C++も分かった気になる
→win32apiも分かった気になる→Cが恋しくなる→久しぶりにCに戻ってみる→
MFCが恋しくなる→でもがんばる→むかついてどうでもよくなる。
143デフォルトの名無しさん:2007/09/23(日) 09:02:44
Cを少しかじる→むかついてどうでもよくなる。
144デフォルトの名無しさん:2007/09/23(日) 09:13:07
visual C++ からg++なんかの外部のコンパイラを使うにはどうすればいいの?
145デフォルトの名無しさん:2007/09/23(日) 09:42:04
cl.exeを置きかえる
146デフォルトの名無しさん:2007/09/23(日) 10:36:42
カスタムビルドステップ
147デフォルトの名無しさん:2007/09/23(日) 11:59:54
むりむりかたつむり!
148デフォルトの名無しさん:2007/09/23(日) 16:42:12
WM_KeydownのところでOnKeyDownを追加したんですが、
キーボードから何を押してもそこへ飛んでくれないんですが
これって何か初期設定みたいなのが必要なんでしょうか?
149デフォルトの名無しさん:2007/09/23(日) 17:07:53
WM_KEYDOWN を受け取ろうとしているウィンドウにフォーカスが当たってないんじゃない?
たとえば、ダイアログ上のエディットボックスでキーを押した場合、
WM_KEYDOWN が飛んでくるのはダイアログじゃなくてエディットボックス
150デフォルトの名無しさん:2007/09/23(日) 17:19:31
>>149
ダイアログをクリックしてから押してるんだけどうんともすんとも
ちなみにダイアログだけのプログラムでダイアログにはボタンが6個あるだけです
151デフォルトの名無しさん:2007/09/23(日) 18:28:26
Visual Studio2005使って、Windoxsフォームアプリケーションやってるけど
リソースの使い方がわからない…
152デフォルトの名無しさん:2007/09/23(日) 18:31:20
がんばれ
153デフォルトの名無しさん:2007/09/23(日) 18:35:06
Windoxs
154デフォルトの名無しさん:2007/09/23(日) 18:53:38
>>151
すっげーなお前
Visual Studio2005使って、Windoxsフォームアプリケーションなんかやってるんだ
155デフォルトの名無しさん:2007/09/23(日) 18:54:42
>>154
普通は何やるんですか?
156デフォルトの名無しさん:2007/09/23(日) 19:24:53
>>155
次期SPや修正パッチなどの出荷用テスト
157デフォルトの名無しさん:2007/09/23(日) 19:41:56
私、昨日買ったばっかなんですが、勉強したくて
158デフォルトの名無しさん:2007/09/23(日) 19:47:07
初心者向けの製品は別にあるよ
159デフォルトの名無しさん:2007/09/23(日) 20:12:47
本か何か買ったの?
それ見てやればいいんじゃね?
160デフォルトの名無しさん:2007/09/23(日) 21:31:01
最近のWindowsアプリケーションはいったいどんな種類があるの?
自分はダイアログベースアプリが80%
10%はDLLやStaticLib
時々SDIアプリ
たまーにActiveX

GUI系で最近の流行ってなんですか?
161デフォルトの名無しさん:2007/09/25(火) 07:02:02
スリープ(モニタ電源OFF)から復帰すると動作がおかしくなってるのですが
なにか特別な処理をする必要があるのですか?ソフトはアナログ時計です。
なおPC不調でサスペンドから復帰できなくなってるのでサスペンドの場合はどうなるのか
不明です。
162デフォルトの名無しさん:2007/09/25(火) 07:12:33
サスペンドの場合はPCの電源が即座に切れ二度と起動しなくなります。
163デフォルトの名無しさん:2007/09/25(火) 22:01:23
Visual C++と、標準C++って何が違うんですか?
164デフォルトの名無しさん:2007/09/25(火) 22:19:24
Visual C++は商品名で標準C++は言語名
165デフォルトの名無しさん:2007/09/25(火) 22:31:11
Visual C++で、入門者がMFCを最初にやるのは馬鹿ですかね?
166デフォルトの名無しさん:2007/09/25(火) 23:51:53
C++ をよく理解してるんならいいんじゃないのかな。
でも Windows プログラムの動く仕組み理解しておいた方がいいんじゃないかな
167デフォルトの名無しさん:2007/09/26(水) 00:09:05
VisualC++で、キーボードからの入力をテキストファイルに保存したいんですけど、どうしたら出来ますかね?
168デフォルトの名無しさん:2007/09/26(水) 00:39:39
1)キーボードから入力を受け取って
2)ファイルに書き込む

といいよ
169デフォルトの名無しさん:2007/09/26(水) 00:55:04
>>167
キーロガー作ってパス盗む気か
170デフォルトの名無しさん:2007/09/26(水) 01:11:12
ついでに特定のサイトを見ているときだけ保存したいんですけど、どうしたらできますかね?
171デフォルトの名無しさん:2007/09/26(水) 02:41:42
>>170
釣りは死んでください。
172デフォルトの名無しさん:2007/09/26(水) 02:45:01
はい
173デフォルトの名無しさん:2007/09/26(水) 07:28:10
vs2005ですが、デバッグの際、
stlのvectorとかでエラーが出たときに
なんかウィンドウが出るだけでデバッガの方に出力されないので
どこでエラーが出てるのか分かりにくいです。
どうにか場所を特定する方法ってありますか?
174デフォルトの名無しさん:2007/09/26(水) 08:12:35
キーボードからの入力を受け取りたいんですけど、やっぱりAPIとかの知識がないとだめなんですかね?
175デフォルトの名無しさん:2007/09/26(水) 08:18:52
キーボードからの入力以前に、やっぱりAPIとかの知識がないとだめ人間です。
176デフォルトの名無しさん:2007/09/26(水) 08:25:37
>>173
つブレークポイント
まず適当にブレークポイントを設定して自分のコードのどの場所でエラーが出るか特定する
次にその部分で使ってる関数の各ステップにブレークポイントを設定してどの場所でエラーが出るか特定する
それを再帰的に繰り返していくとランタイムアサートのマクロ構文に辿り着く筈
177デフォルトの名無しさん:2007/09/26(水) 08:39:44
>>175
学習してきます。
178デフォルトの名無しさん:2007/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デフォルトの名無しさん:2007/09/26(水) 20:55:30
1行間違いです
>と、このように IData *pを派生先で共有したいと思っています。

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


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

つまり、変数ウインドウ上のpの頭のところに[+]記号が出てこないということです
180デフォルトの名無しさん:2007/09/26(水) 21:08:24
>>178
仮にBaseはpを持っている必要がないとすれば、
BaseにIData* GetData() = 0;のようなメンバ関数を用意して、
個々の派生クラスで、メンバ変数pとpを返すGetDataを定義するという方法が思い付く。
派生クラス毎にpを持てば、HogeDataなど特化した型にできるだろう。
181デフォルトの名無しさん:2007/09/26(水) 21:17:04
void pointer…(ゴクリ
182デフォルトの名無しさん:2007/09/26(水) 21:22:40
>>180
お返事ありがとうございます。

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

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

一応今も非virtual なGetDataをそれぞれ持つようにさせ、クイックウォッチの時の記述が統一的になるようにはしています。
(ただ、それでもクイックウォッチ呼び出すのかなり面倒なのですよね…)
183デフォルトの名無しさん:2007/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デフォルトの名無しさん:2007/09/26(水) 21:49:48
変数ウインドウで値みなきゃデバッグできないわけじゃないし
それだけのためにごちゃごちゃソースいじるのも頭わるすぎる
185デフォルトの名無しさん:2007/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デフォルトの名無しさん:2007/09/26(水) 21:55:58
>>184
確かに正論だと思います。
なので「簡単に変数ウインドウで確認するための方法」があるなら知りたいわけです。
とてつもなくソースが難読になってしまうのなら、やらないだろうと思います。
187デフォルトの名無しさん:2007/09/26(水) 22:15:32
もちろんできますお
でもこうすればIHolderがいらない子になってしまう
template <typename T> struct Holder
{
Holder() : derived(new T) {}
union {
IData* base;
T* derived;
};
};
HogeやMainもポインタや参照経由で多態性を持たせるなら
もっと面倒臭くなるし下手すりゃVC6ではコンパイルできなくなるかも
188デフォルトの名無しさん:2007/09/26(水) 22:27:21
MFCのランタイムクラス情報を使っていれば、
自動で派生クラスの内容も表示できたりするけど、
今回はそれは無しだろうしなあ。
189デフォルトの名無しさん:2007/09/26(水) 23:38:07
自分でautoexp.datを書くってのはどうだろう。
190デフォルトの名無しさん:2007/09/26(水) 23:51:54
>>187
定義済みの変数を、unionで「こいつとも共用体ってことで」って後付けできないもんでしょうか

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

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

どなたかautoexp.datについて分かるかたいらっしゃいませんでしょうか
もしくは詳しいページor書籍などを紹介していただけると嬉しいです
192デフォルトの名無しさん:2007/09/28(金) 15:45:55
Visual Studio 2005 Standard Edition を購入しようとしています。
今2003版を持っているので、アップグレード版を買えばいいとは思うのですが、
2003のユーザー登録がしていなといけないとか、
同じパソコンにインストールしないといけないとか、
アップグレード版にはそういった制約があるのでしょうか?
教えて下さいませ
193デフォルトの名無しさん:2007/09/28(金) 16:59:04
ない
194192:2007/09/28(金) 17:14:14
>>193
ありがとうございます。
もし2003を持っていなくても、普通に動くという事?
195デフォルトの名無しさん:2007/09/28(金) 22:34:58
インストール時に2003のディスクチェックくらいあるだろう
196デフォルトの名無しさん:2007/09/28(金) 23:36:41
ディスクチェックもなければアクチもねえぞ
197デフォルトの名無しさん:2007/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デフォルトの名無しさん:2007/09/29(土) 01:32:11
エラーコードについて
msdn で調べてみるか
google 先生に聞いてみると良いよ。
199デフォルトの名無しさん:2007/09/29(土) 05:28:42
教えるだけ無駄そうだな
C++勉強したことある?
200デフォルトの名無しさん:2007/09/29(土) 07:24:53
今までVBばっかり使ってたのですが、
最近Visual C++に興味があります
何から始めたらいいでしょうか?
201200:2007/09/29(土) 07:27:18
書き忘れました
VS2005です
202デフォルトの名無しさん:2007/09/29(土) 08:58:17
C++やったことがないとVisual C++は無理
203デフォルトの名無しさん:2007/09/29(土) 09:00:16
204200:2007/09/29(土) 09:06:42
そうですか(><;
どうも
205デフォルトの名無しさん:2007/09/29(土) 17:57:30
coutってなんて読むのでしょうか?
206デフォルトの名無しさん:2007/09/29(土) 18:02:27
シーアウトかな
207デフォルトの名無しさん:2007/09/29(土) 18:43:27
コウティー
208デフォルトの名無しさん:2007/09/29(土) 19:37:55
>>207
無知乙wwwwwwww
209デフォルトの名無しさん:2007/09/29(土) 20:33:05
コンソールアウト
210デフォルトの名無しさん:2007/09/29(土) 22:47:53
コウト
211デフォルトの名無しさん:2007/09/29(土) 23:07:02
の中では
212デフォルトの名無しさん:2007/09/29(土) 23:07:44
兵器
213デフォルトの名無しさん:2007/09/30(日) 06:32:20
214デフォルトの名無しさん:2007/09/30(日) 08:06:32
const int const_cout_count = 0;
215デフォルトの名無しさん:2007/09/30(日) 08:31:56
昔のVCのプロジェクトをビルドしようとしているんですが、
そのプロジェクトではnasmというコマンドを使ってアセンブラファイルをアセンブルしようとしていました。
そしてVC6ではnasmは見つからないらしく、コマンドが見つかりません、ってエラーになります。
nasmはVC6ではなくなってしまったのでしょうか?代替のアセンブラはありますか?
216デフォルトの名無しさん:2007/09/30(日) 08:38:30
昔のVCにnasmついてたっけ?
自分で作ったプログラムかそれ?
217デフォルトの名無しさん:2007/09/30(日) 08:45:18
プログラムはネットで拾ったものです。
218デフォルトの名無しさん:2007/09/30(日) 08:51:23
ググれ。nasmならsourceforge.netで公開されている。
219デフォルトの名無しさん:2007/09/30(日) 09:00:04
ありがとうございます。ググッて来ます
220デフォルトの名無しさん:2007/09/30(日) 09:04:16
おかげさまで今アセンブルできました!!
ありがとうございましたm(_ _)m
221デフォルトの名無しさん:2007/09/30(日) 13:12:49
nasmはintel表記に従っているから好き。
gasは独自表記に拘っているから嫌い。
222デフォルトの名無しさん:2007/09/30(日) 22:17:09
リソースファイルで設定した製品バージョン
VALUE "ProductVersion", "0, 0, 0, 1"
をプログラム中から取得するにはどうすればよいのでしょうか?
223デフォルトの名無しさん:2007/09/30(日) 22:58:03
>>222
GetFileVersionInfo + VerQueryValue
224デフォルトの名無しさん:2007/10/01(月) 06:18:06
なるほど、一旦できた実行ファイルから取得するしかないんですね。
もっと静的にコンパイル時に取得できる物だと思っていました。
225デフォルトの名無しさん:2007/10/01(月) 08:11:55
exeはコンパイルし直さない限り変らないから静的な情報だろ
226デフォルトの名無しさん:2007/10/01(月) 08:16:41
>>225
それはそうなんだけど、コンパイル時に決定できるなら
よかったなぁ、と思って。マクロの中で使いたいから。
227デフォルトの名無しさん:2007/10/01(月) 09:13:26
Resource.hあたりに、"0, 0, 0, 1"を適当にdefineして、
.rcと使いたいマクロ中でそれ使うようにすればいいだろ!!!

とか、言ってみる。
228デフォルトの名無しさん:2007/10/01(月) 12:27:52
>>226
リソースはコンパイル時に確定していない情報なんだから当然、無理。
# リソースが確定するのはリンク時。
229デフォルトの名無しさん:2007/10/01(月) 12:31:17
>>226
マクロの中で使う場合でも定数である必要はないんじゃないの?
取得用関数を1つ別に作って、マクロの中でその関数使えばすむ話だと思うけど
230デフォルトの名無しさん:2007/10/01(月) 16:08:06
231デフォルトの名無しさん:2007/10/01(月) 21:48:11
Win2k3 x64上で64ビットEXEから
32ビットのみ対応DLLを使いたいと思っております。
しかし、MSDNを見ると、上記は不可能であると知りました。
32ビットのみ対応DLLを64ビット対応にする、という方法以外で、
64ビットEXEから32ビットdllを使用できる方法、プロセス構成として
何が考えられますでしょうか?
なるべくパフォーマンスが落ちないような実装として何がありますでしょうか?
加えて、最も簡単な方法もありましたら教えていただきたいです。

232デフォルトの名無しさん:2007/10/01(月) 21:54:53
32ビットDLLを呼ぶEXEを作って、それと64ビットEXEとでプロセス通信したらどうか。
COMで32ビットアウトプロセスサーバ作ってもいいだろうし。
いずれにせよ32ビットEXEを介すことに変わりはないが。
233231:2007/10/01(月) 21:58:02
>232
ありがとうございます。
プロセス通信というと、Socket通信とかでしょうか?
メモリを共有することはできないんですよね。
もしできたとしてもコーディングが難しいのでしょうかね・・・?
234デフォルトの名無しさん:2007/10/01(月) 22:09:33
ソケットもそうだし、ウィンドウメッセージ、メモリマップドファイル、パイプ、メールスロット、その他色々ある。
用途に合わせて好きなの選べ。
235231:2007/10/01(月) 22:17:54
>>234
ありがとうございます。やはりプロセス間通信しかないですか・・・
dllには大きなデータを一度に渡すのですが、その場合に最も効率いいものはあるのでしょうか?ここからは自分で調べないといけないのかもですね。
236デフォルトの名無しさん:2007/10/01(月) 22:36:27
Win32 and COM Development
- Development Guides
- 64-bit Windows Programming
- Running 32-bit Applications
- Interprocess Communications

速度的には共有メモリだろうけど、一時ファイルを介するのも一つの手かもな。
237デフォルトの名無しさん:2007/10/02(火) 12:24:13
始めまして、質問させていただきます。
Microsoft Visual C++ 6.0で人が作ったアプリケーション拡張開こうとしてるのですが
開き方が分かりません。誰か教えてください。宜しくお願いします。
238それが誰かは知りませんが:2007/10/02(火) 12:26:09
「人」に聞きなさい。
239デフォルトの名無しさん:2007/10/02(火) 12:33:56
落ちてたものなので、人に聞くことも出来ないので、ここに聞くことに
したのですが、誰か教えてもらえませんか?宜しくお願いします。
240デフォルトの名無しさん:2007/10/02(火) 13:50:34
アプリケーション拡張ってDLLのこと?
開くって何したいの?
241デフォルトの名無しさん:2007/10/02(火) 14:03:24
>>240
開き方わかります?知ってたら教えてください
242デフォルトの名無しさん:2007/10/02(火) 14:37:17
VC++ 2005 Express Editionで質問です。

VC++のヘルプをMSDN Express Libraryからmsdn2007年6月版に変更したいのですが
msdnから落として完全インストールでデフォルトのC:\Program Files\MSDNに入れました。
VC++でヘルプを開くとき新しく入れた2007年6月版が開くように設定するにはどうしたらいいですか?

243デフォルトの名無しさん:2007/10/02(火) 15:45:10
>>241
釣り?
DLLは「開く」ものじゃないぞ?
244デフォルトの名無しさん:2007/10/02(火) 16:04:13
そのまま VC++ に取り込んで改造できると思ってんのか

笑っちゃう
245デフォルトの名無しさん:2007/10/02(火) 16:40:05
>240に対して>241の応答は酷すぎる。「言葉が通じない」の実例だ。
246デフォルトの名無しさん:2007/10/02(火) 16:54:43
>>241
DLLを開きたいならCreateFileを使え
247デフォルトの名無しさん:2007/10/02(火) 16:59:14
話をかき混ぜるようなこと書くなw
248デフォルトの名無しさん:2007/10/02(火) 17:09:18
落ちてたものなのに「人」が作ったとなんで判ったんだろう。
249デフォルトの名無しさん:2007/10/02(火) 17:24:52
人に聞けないってここの住人は…(以下略)
250デフォルトの名無しさん:2007/10/02(火) 17:29:51
>>244
なんだ改造できないのか、残念
251デフォルトの名無しさん:2007/10/02(火) 18:03:06
>>248
人が作ったのでなければ何だね。
自動コーディングスクリプトかね。
まさか神が造ったなどと言うつもりではあるまい。
252デフォルトの名無しさん:2007/10/02(火) 18:27:12
落としたつもりは無いんだけど
253デフォルトの名無しさん:2007/10/03(水) 00:14:18
何このカオス
254デフォルトの名無しさん:2007/10/03(水) 21:02:00
ttp://www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/
で、プログラムフォルダ以下のファイルを編集するときに、変更を保存できないんですが
どうすればいいのでしょうか?
255デフォルトの名無しさん:2007/10/03(水) 21:31:17
そこらへんのディレクトリ・ファイルは、管理者権限持ったユーザにしか
書き込み系のアクセス権限がないはず。
管理者権限持って出直してこい。
256デフォルトの名無しさん:2007/10/03(水) 22:19:29
管理者権限持っているんだが、どうもおかしいな
257デフォルトの名無しさん:2007/10/03(水) 22:23:16
でもね、昨日の「-1」は、まじでわかっていた
信じて
258デフォルトの名無しさん:2007/10/03(水) 22:56:29
Vista+UAC
259デフォルトの名無しさん:2007/10/04(木) 15:54:21
すみません VC6.0 初心者です。
ATLでNTサービスプログラムを作っています。

デバッグ用にメッセージボックスが出せると便利なのになぁと
思うんですけど、MessageBoxを使うと「ボン」と音がするだけで、
見えるところに出てきません。
(処理はそこで止まるので、出てはいるようです)

やむなく LogEvent 関数でログを吐き、
イベントビューアで見てますが、NTサービスでは
メッセージボックスを出せないものなんでしょうか?
260デフォルトの名無しさん:2007/10/04(木) 16:29:02
>>259
デスクトップとの対話をサービスに許可
というオプションは試した?
261デフォルトの名無しさん:2007/10/04(木) 18:18:07
>>260
対話を許可にしたらできました。
どうもありがとうございました(´・ω・`)
Visualstudio 2003 C++で、ダイアログプログラムを作っているのですが
ダイアログを編集しているときにグリッドを表示させているのですが、
標準ではグリッドの表示がされていないので、
書式-ガイドの設定-グリッドをチェック
グリッドの間隔はデフォルトで6になっているのを3にしてOKボタンを押すのですが
VC2003が覚えてくれません。これはやっぱり仕様なのでしょうか?
どこかにデフォルトの設定を変えて通常グリッドON、間隔3にできないものでしょうか?
ご教示ください、よろしくお願いします。
263デフォルトの名無しさん:2007/10/09(火) 22:30:41
fatal error C1010: プリコンパイル ヘッダーを検索中に不明な EOF が見つかりました。'#include "stdafx.h"' をソースに追加しましたか?
と、表示されるのですが…どうしたらよいのでしょうか…
文は「試しにこれをコンパイルしてみよう」みたいなのを何度も見直したんで大丈夫なはずなのですが…
264デフォルトの名無しさん:2007/10/09(火) 22:45:28
'#include "stdafx.h"' をソースに追加しましたか?
265デフォルトの名無しさん:2007/10/09(火) 22:53:07
それがイマイチわからなかったので追加しない方法もあったようで
そっちでやったらコンパイルできました…
266デフォルトの名無しさん:2007/10/10(水) 01:50:25
タイトルバーを持つけどドラッグできないウインドって作成できますか?
ウインドを移動させたくないんです。
267デフォルトの名無しさん:2007/10/10(水) 01:54:30
WM_MOVING をのっとって見るとか?
268デフォルトの名無しさん:2007/10/10(水) 01:59:19
>>267
こんばんは。早速試してみましがダメでした。:-)
269デフォルトの名無しさん:2007/10/10(水) 02:22:19
WM_WINDOWPOSCHANGING
270デフォルトの名無しさん:2007/10/10(水) 02:32:24
>>269
ありがとうございます。しかしそのメッセージを処理させないようにしたら
ウインドの初期化処理でシステムから利用されているらしく、ウインドが表示されなくなってしまいました。

ウインドをドラッグしようとすると枠だけが移動するヤツありますよね?
ドラッグを終えたときだけウインドが一瞬で移動するやつです。
あんな風にドラッグ操作だけは受け付けるけど、放したときに結局元の位置に戻っちゃう、
みたいなのでもいいです。

クレクレですみませんがよろしくお願いしま〜す

271デフォルトの名無しさん:2007/10/10(水) 02:45:28
>そのメッセージを処理させないようにしたら
どっちも現在の位置を入れるんだよ
272266:2007/10/10(水) 02:56:36
こんばんは。皆さん、遅くまでありがとうございます。

いろいろ試してみたのですが、上手くいかないみたいです。
海外のサイトをあさっていて上手く行く方法を見つけました。

HMENU hMenu = GetSystemMenu(mhWnd, FALSE);
::DeleteMenu(hMenu, SC_MOVE,MF_BYCOMMAND);

でメニューから「移動」を取ってしまう方法のようです。

お騒がせしました。(^0^)/

273デフォルトの名無しさん:2007/10/10(水) 11:22:33
【政治】政府、"お金をつくる"造幣局や印刷局など独立法人20以上を民営化へ−機密性の保持も絡み様々な意見も★


http://news22.2ch.net/test/read.cgi/newsplus/1191932873/

【民営化】造幣局・印刷局など、独立行政法人20以上を民営化へ:政府方針 [07/10/07]
http://news21.2ch.net/test/read.cgi/bizplus/1191727281/


政府は6日、現在進めている独立行政法人(独法)の整理合理化に関連し、
101ある独法のうち、予算に占める国からの財政支出の割合(財政依存度)が低い
20法人以上の民営化を目指す方針を固めた。

2007年末に整理合理化計画を策定し、閣議決定する予定だ。
民営化の対象には、造幣局や国立印刷局、日本万国博覧会記念機構などがあがっている。
今後、独法の民営化推進を目指す渡辺行政改革相らの方針に対し、
事業の公共性の高さなどを主張する関係省庁の巻き返しが本格化しそうだ。

貨幣や紙幣を造る造幣局や国立印刷局については、機密性の保持なども絡み、
是非をめぐって様々な意見が出そうだ。

http://headlines.yahoo.co.jp/hl?a=20071007-00000002-yom-pol
274デフォルトの名無しさん:2007/10/10(水) 11:30:28
>>272
試してみたら本当に動かないな。なんて怪しい仕様なんだ……
275デフォルトの名無しさん:2007/10/10(水) 16:22:12
日付の取得方法を教えて下さい
276デフォルトの名無しさん:2007/10/10(水) 16:59:13
カレンダーを見る
277デフォルトの名無しさん:2007/10/10(水) 18:45:09
本に書いてない?
MSDNにもサンプルコードのってたような気がする
278デフォルトの名無しさん:2007/10/10(水) 20:21:56
VC2005を使っています。
Bitmapクラスを使って、ビットマップデータを、ファイルではなく、指定したメモリに格納したいと思っています。
ファイル保存しかできないでしょうか?
できるのなら、例を教えていただけるとありがたいです。
279デフォルトの名無しさん:2007/10/10(水) 21:03:09
ファイルとして保存する所までできてたらメモリでもいっしょだろ
280デフォルトの名無しさん:2007/10/10(水) 21:07:48
つ System.IO.UnmanagedMemoryStream
281デフォルトの名無しさん:2007/10/10(水) 22:35:15
サンプルコードではなく、実用的なアプリケーションのソースを公開してるとこありませんか?
MFCでもSDKでOK

wwwを検索すると、Viewに”hello world”とTextOutしていかにも、C++/VC++/MFC使えますみたいな
のばっか、そんなの誰でもできるっちゅうねんw
282デフォルトの名無しさん:2007/10/10(水) 22:37:44
OSS
283デフォルトの名無しさん:2007/10/10(水) 22:38:30
探せばいくらでも見つかるはずだけど
馬鹿には見つからないんだな
284デフォルトの名無しさん:2007/10/10(水) 22:41:17
>>281
実用的なアプリケーションのソースくらいお前以外誰でも書けるっちゅうねんw
285デフォルトの名無しさん:2007/10/10(水) 22:43:43
MFC、SDK ぐらいしか検索ワード知らないんだから
そういうサイトしかヒットしないのは当たり前
286デフォルトの名無しさん:2007/10/10(水) 22:44:38
ネットで言語の勉強してたら自然とそういう情報に当たるか見つけ方自ずと分かるっちゅうねんw
287デフォルトの名無しさん:2007/10/10(水) 22:46:21
あらあらあおりと取られちゃったのかしらんw
次元ひくっ
288デフォルトの名無しさん:2007/10/10(水) 22:49:15
質問の次元が高すぎるっちゅうねんw
289デフォルトの名無しさん:2007/10/10(水) 22:49:39
あらあらあおりと取っちゃったのかしらんw
次元ひくっ
290デフォルトの名無しさん:2007/10/10(水) 22:50:46
質問の次元が高すぎるっちゅうねんw
291デフォルトの名無しさん:2007/10/10(水) 22:51:07
>>281
実用的なアプリケーションのソースが理解できないから
お前のレベルに見合ったhello worldしか目に付かないのだっちゅうねんw
292デフォルトの名無しさん:2007/10/10(水) 22:55:08
逆にどういうキーワードで検索してるのか気になるっちゅうねんw
293デフォルトの名無しさん:2007/10/10(水) 22:56:34
しかし、>>281が言ってることも的を射てるよ

webでプログラミング情報を公開してる奴って結構多いが
どれも、同じようなことしか書いていない

彼は恐らく日本語のページしかみてないんじゃないかな?
294デフォルトの名無しさん:2007/10/10(水) 22:59:43
ぜんぜんプログラミングの知識のないやつとかが、
どっかで拾って来たソースのビルドの仕方聞くことが結構あるから
まったく見つけられないやつはかなり特殊
295デフォルトの名無しさん:2007/10/10(水) 23:01:48
どれも、hello worldしか書いていないページを是非紹介して貰いたい
296デフォルトの名無しさん:2007/10/10(水) 23:10:47
Visual Studio 2002 C++で開発しております。

現在、ディスプレイの主電源が入っているか確認するプログラムを
作成しているのですが、主電源の状態を取得する事ができておりません。

SC_MONITORPOWERで情報がとれないかなとも試してみたのですが
主電源情報となると取れないようでした。

お手数ではございますが、ご教授のほど、よろしくお願い致します。
297デフォルトの名無しさん:2007/10/10(水) 23:22:05
>296
そのプログラム考えたやつに聞けば?
できる前提じゃないとそういう細かい要求でないと思う
298296:2007/10/10(水) 23:37:51
>>297
考えたのは自分なので、聞くことはできないです。

その為、主電源情報を取得する方法ご存知の方が
いらっしゃるのではないかと思い、質問させて頂きました。
299278:2007/10/10(水) 23:38:55
>>279 280
ありがとうございます。bitmapクラスのSaveでファイル保存をしていました。
このメソッドはファイル保存しかできないように見えます。保存先をメモリにしたいです。
UnmanagedMemoryStreamをMSDNで見ましたが、どのようにこの問題の解決のために使うのかわかりません。
サンプルを教えていただけないでしょうか?もしくはBitMapクラスでメモリ保存できるAPIはあるのでしょうか?
300デフォルトの名無しさん:2007/10/10(水) 23:51:03
うちのモニタは主電源は入りっぱなしだけど
パソコン立ち上げた時にモニタのスイッチ押さないとモニタ写らない。
パソコン立ち上げた時にモニタが自動で写るようにしてほしいな
301デフォルトの名無しさん:2007/10/10(水) 23:54:38
自分ですればいいじゃん
302デフォルトの名無しさん:2007/10/10(水) 23:59:10
>>299
Stream に保存できるだろ
303デフォルトの名無しさん:2007/10/11(木) 00:14:19
>>299
ぐぐった先頭にあるMSDNのページにサンプルあるんだけどそれではダメなの?
もしかして、サンプルに書いてあるコメントが読めないとか?
304デフォルトの名無しさん:2007/10/11(木) 09:19:32
仕様勉強するにはやっぱり
なんか1冊本を買ってきて最初から読むのがいいですかね
305デフォルトの名無しさん:2007/10/11(木) 09:28:22
人それぞれ
306デフォルトの名無しさん:2007/10/11(木) 17:58:45
>>299
そもそも、そのBitmapはネイティブ、マネージのどっちだ?

ネイティブのgdiplus::Bitmapなら、IStream*を引数に取るSaveを使え。
IStreamは自分で実装してもいいし、CreateStreamOnHGlobalを使ってもいい。

マネージのSystem::Drawing::Bitmapなら、Stream^を引数に取るSaveを使え。
渡すStreamは、System::IOのMemoryStreamでいいだろうが、
場合によってはUnmanagedMemoryStreamが適する場合もあるかもしれない。
307デフォルトの名無しさん:2007/10/11(木) 19:05:33
マルチスレッドを実現するためにスレッド作成をしたいと思ってます。

以下はスレッドを作成するクラスのソースです。
このように、staticをつけないとコンパイルエラーになります。

スレッド関数は、必ずStaticにしなければならないのでしょうか?
Staticを使わずにスレッド生成を実現したいと思っております。
というのも、Static内の関数を全てStaticにしないといけなくなるので
・・・

スレッド生成でStaticを使わない実現方法があったら教えていただきたいです。
実際、みなさんはどのような方法でスレッド生成を実現しているのでしょうか?

class TestThread{
// コンストラクタ、デストラクタは省略
public:void Function()
{
// スレッド作成
Thread^ main= gcnew Thread(gcnew ThreadStart(ThreadProc));
}

private:static void ThreadProc() // staticをつけないとエラー
{// 処理 }
};
308デフォルトの名無しさん:2007/10/11(木) 19:33:23
gcnew ThreadStart(this, &TestThread::ThreadProc)かな。
309デフォルトの名無しさん:2007/10/11(木) 19:41:06
>>308
レス感謝です。しかしコンパイルエラーになりました。
deligate引数が無効と出ました。
310デフォルトの名無しさん:2007/10/11(木) 21:18:49
>>309
ああごめん。>>308の方法は、値クラスか参照クラスにしか使えない。

もし、ネイティブクラスの非静的メンバ関数を別スレッドで実行したければ、
マネージクラスでラップするか、CRTの_beginthreadexを使う必要がある。
311307:2007/10/11(木) 21:54:57
>>310
マネージクラスでラップ(クラスにrefをつけた)ら、
コンパイルが通り、正常に動作しました。

beginthreadexについては調べてみます。
ありがとうございました。
312デフォルトの名無しさん:2007/10/11(木) 23:19:26
マネージドとか、最近妙なモンが出てきやがって。。
313デフォルトの名無しさん:2007/10/11(木) 23:21:23
もう最近でもないような。
314デフォルトの名無しさん:2007/10/11(木) 23:21:37
:::::::::::::::::...... ....:::::::゜::::::::::..   (___ )(___ ) ::::。::::::::::::::::: ゜.::::::::::
:. .:::::。:::........ . .::::::::::::::::: _ i/ = =ヽi :::::::::::::。::::::::::: . . . ..
:::: :::::::::.....:☆彡::::    //[||    」  ||] :: ::::::::::::::
 :::::::::::::::::: . . . ..: :::: / ヘ | |  ____,ヽ | | :::::::::::.... .... .. .::::
::::::...゜ . .:::::::::  /ヽ ノ    ヽ__/  ....... . .::::::::::::........ ..:
:.... .... .. .     く  /     三三三∠⌒>:.... .... .. .:....
:.... .... ..:.... .... ..... .... .. .:.... .... .. .... . .... . ..... .... .. ..... ............. .. 
:.... . ∧∧   ∧∧  ∧∧   ∧∧ .... .... .. .:.... .... ..... .... .
... ..:(   )ゝ (   )ゝ(   )ゝ(   )ゝ デテキヤガッテ・・・.
....  i⌒ /   i⌒ /  i⌒ /   i⌒ / .. ..... ...................
..   三  |   三  |   三  |   三 |
...  ∪ ∪   ∪ ∪   ∪ ∪  ∪ ∪
315デフォルトの名無しさん:2007/10/11(木) 23:40:59
おまえらあんなC++もどき使うのやめちまいな!
316デフォルトの名無しさん:2007/10/11(木) 23:53:51
誰も使ってないような。
317デフォルトの名無しさん:2007/10/12(金) 00:16:45
C#やVBなんかよりは全然いいがなw
318デフォルトの名無しさん:2007/10/12(金) 09:42:10
リストビューで選択されているすべての項目のインデックスをしらべるにはどうしたらいいんですかね?

なんか
GetFirstなんたらの後に、GetNextなんたらをやってもうまくいかなかったのですが…
319デフォルトの名無しさん:2007/10/12(金) 09:46:09
LVIS_SELECTED
320デフォルトの名無しさん:2007/10/12(金) 09:48:08
>>318
じゃあお前にはムリだ。
321デフォルトの名無しさん:2007/10/12(金) 16:24:12
>>318
CListCtrl::GetFirstSelectedItemPositionのサンプルコードをよく見直せ。
それでも判らないならコードupしる。
322デフォルトの名無しさん:2007/10/12(金) 18:53:49
コンストラクタはオブジェクトの初期化処理を行い
デストラクタはオブジェクトの終了処理を行う
というのは、どういった場面で使われるのですか?
いまいち理解出来ないです
323デフォルトの名無しさん:2007/10/12(金) 19:04:54
コンストラクタは最初に呼ばれて、デストラクタは最後に呼ばれるだけ
利用方法がわからなかったら無理に使わなくてもかまわない
324デフォルトの名無しさん:2007/10/12(金) 19:34:34
>>322
デストラクタは、freeのような使い終わった後に呼ばないといけない解放処理を書く。
例えばstd::auto_ptrが内部に保持しているポインタをdeleteしたり、
ATL::CHandleはCloseHandleしたりなどという具合。

コードがスッキリするし、例外が投げられたときでも確実に資源が解放されるのがいい。
325デフォルトの名無しさん:2007/10/13(土) 09:06:01
>>322
オブジェクトを作るときに
メンバ変数の値を動的に初期化するときとかにコンストラクタを使う
たとえばある時はメンバ変数をAで初期化したいけど
別の時にはBで初期化したいようなとき。
っていうのがまだまだ初心者な俺の理解です。
たとえば

class obj {
  char test;
public:
  obj(char ch) { test = ch; }
};

obj testobj('A');

っていう感じかなぁ
あとは動的にメモリを確保する必要があるときとか。
クラスのこともっと勉強していけばわかってくるよ。
326デフォルトの名無しさん:2007/10/13(土) 09:28:46
コンストラクタ=母
デストラクタ=嫁
327デフォルトの名無しさん:2007/10/14(日) 12:45:49
環境XP professional SP2
Microsoft Visual C++ 2005 Express Edition(MSからダウンロードしてます)
SDKインストールすみ(MSからダウンロードしてます)

cppファイルとdefファイルをビルトしたいのですが
以下のメッセージがでてビルトできません。


------ ビルド開始: プロジェクト: aaaaaa32, 構成: Debug Win32 ------
コンパイルしています...
aaaaaa.cpp
c:\documents and settings\administrator\my documents\visual studio 2005\projects\123ler\aaaaaa.cpp(1) : fatal error C1083: include ファイルを開けません。'windows.h': No such file or directory
ビルドログは "file:\\c:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\123ler\Debug\BuildLog.htm" に保存されました。
aaaaaa32 - エラー 1、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========

というメッセージがでて ビルドできません

どうも設定の段階でつまずいているようなのですが
また、ここに参考になりそうなコメントをみつけたのですが
どこの設定がまちがえているのかが よくわかりませんでした。
ttp://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=472335&SiteID=7

どなたかエラーを解決する方法をおしえていただけないでしょうか?
よろしくお願いします。
328デフォルトの名無しさん:2007/10/14(日) 12:59:49
>>327
想像だが、標準ファイル名をダブルクォーテーションで囲んでいるのではないか?
×#include "windows.h"
○#include <windows.h>
329デフォルトの名無しさん:2007/10/14(日) 13:18:33
Expressの場合は何かのファイルを自分で編集しなきゃいけなかったような
330デフォルトの名無しさん:2007/10/14(日) 13:21:03
331デフォルトの名無しさん:2007/10/14(日) 22:27:56
327です

328さん、329さん、330さん ご返事ありがとうございます。
手順3というのが よくわからなくて、
(いきなり オプションとかかれても 初心者にはどこにあるかすぐには
 わかりませんでした)(メニューから オプションとかいてくれるといいかも)

いろいろと 試行錯誤して やっと意味がわかりました
Executable ファイル
Include ファイル
Library ファイル
のボタンが 右側上に あるのが やっとわかりました。

あと当方のバージョンでは そこも日本語に翻訳されており(カタカナもあり)
それで 上からそれぞれのパスを設定したら うまくいきました。

フォルダをクリックしパスの本文をダイレクトに入力するんですね(^ ^;)
(アイコンの意味も、私には わかりにくかったです)

この理解のために、Visual C# 2005の本(秀O)も買ったのですが
少しバージョンが違うようですね。(2006年8月第1版)

ここでのつまずきに かなりの時間をついやしました。
ほんとにありがとうございました。(^ ^)

このあと、日付を変更して、別なテスト(実験)をやっていたら
Microsoft Visual C++ 2005 Express Editionがうごかなくなってしまいました
(今朝インストールしなおしたばかりなのに)
(これも承認しないといけないんですね)
332デフォルトの名無しさん:2007/10/14(日) 22:38:37
あほすぎ
C++とC#は別物
オプションなんてたいていツール→オプション(設定)でどのソフトも同じ
Windowsは初めて?
その程度の知識でプログラムを作る側のアプリを触るのはやめて下さい。
333デフォルトの名無しさん:2007/10/14(日) 22:40:33
どうい
334デフォルトの名無しさん:2007/10/14(日) 23:07:08
ずぶの素人に本気になって相手できるお前らがうらやましい。
まるで泣いている赤ん坊に「日本語しゃべれねぇヤツは日本人じゃねぇよ!」
ってマジ切れしてる大人のようであります。
335デフォルトの名無しさん:2007/10/14(日) 23:09:33
やれやれ
どこに本気になっている人がいるんでしょうか?
赤ん坊に自分の見合った事をやりなさいと諭してるだけでしょ。
336デフォルトの名無しさん:2007/10/14(日) 23:46:23
> どこに本気になっている人がいるんでしょうか?

いないなら問題ないです^^
337デフォルトの名無しさん:2007/10/14(日) 23:49:35
VC2005EE+SDKを最初に手に取った赤ん坊には拍手を送りたい。
VC#と間違ってVC落としたのなら別だけど...
338デフォルトの名無しさん:2007/10/15(月) 03:44:06
#と++を見間違えたのだろうか。
それとも本当にばかなんだろうか。
339デフォルトの名無しさん:2007/10/15(月) 06:14:13
初心者のちょっとしたあやまちだろう。
おまえらが、パソコンに初めて触ったときのことをよく
思いだして見ろよ、ハゲ。
340デフォルトの名無しさん:2007/10/15(月) 06:51:30
思い出した!うーんそんな間違いはしなかったなぁ。うん。
341デフォルトの名無しさん:2007/10/15(月) 08:10:33
HOW MANY PAGES の意味が解りませんでした(><)
342デフォルトの名無しさん:2007/10/16(火) 17:28:52
How many files(0-15)?がどうかしたって?
343デフォルトの名無しさん:2007/10/16(火) 17:30:51
VC++はcl.exeとデバッガだけ使うようにしてさ
エディタはemacsとかvim使おうぜ
その辺の初心者の10倍の速度で上達するよ☆(ある意味で)
344デフォルトの名無しさん:2007/10/16(火) 17:38:20
たまに現れるけど何がしたいの
345デフォルトの名無しさん:2007/10/16(火) 18:26:42
Vimと言えば、初心者向けに操作方法を説明しているサイトは多いが、
始めにQuickFixコマンドの説明を含めている所は見たことが無いな。
名前付きバッファなんざ覚える暇があったら、:cwだけでも覚えるべきだ。
346デフォルトの名無しさん:2007/10/16(火) 22:10:04
もぅ…訳がわからん
MFC使うためにオブジェクト指向プログラミングを勉強してるが、
静的メンバ変数とか、メンバイニシャライザだとか、訳がわからなくなってきた、
347デフォルトの名無しさん:2007/10/16(火) 22:13:53
今時MFC使うなんてバカじゃねぇのw
348デフォルトの名無しさん:2007/10/16(火) 22:18:53
>>347
今は何を使うんですか?
349デフォルトの名無しさん:2007/10/16(火) 22:19:30
ナウなヤングに今のトレンドを教えてください。
350デフォルトの名無しさん:2007/10/16(火) 22:24:59
.NET?
だけど俺はあえてATL/WTLを選ぶぜ!!
351デフォルトの名無しさん:2007/10/16(火) 23:02:35
>>346
MFCには魔物が潜んでいる。
ヤツは必ずキミを破滅に導いてくれる。
もはやマイクロ・ソフトさえ見捨てたMFCを、なぜ今更?
352デフォルトの名無しさん:2007/10/16(火) 23:18:53
Googleさんが言うには

vc mfc の検索結果 約 1,950,000 件中 1 - 10 件目 (0.06 秒) 
vc wtl の検索結果 約 225,000 件中 1 - 10 件目 (0.05 秒) 
vc c++/cli の検索結果 約 1,510,000 件中 1 - 10 件目 (0.13 秒) 

C++/CLIが意外と多いのに驚いた。
353デフォルトの名無しさん:2007/10/16(火) 23:23:29
それ、vcとc++とcliで検索がかかってないの?
354デフォルトの名無しさん:2007/10/16(火) 23:26:01
>>353
ぐぐれwww
355デフォルトの名無しさん:2007/10/16(火) 23:29:52
MFCってさ、文字列だはSTLに比べて格段に扱いやすいんだよな。
ただそれだけ。それだけなの。
深みにハマれば人生を棒に振るだけだから、絶対に近づかないほうがいい。
廃人になって捨てられる悲しい人生が待っている。
「MFCやめますか?それとも人間やめますか?」

そもそも 「DLL HELL」 とい言葉はMFCから生まれたもの。
意味はDLL地獄。DLLという単語とHELL=地獄をかけてある。
ようこそMFC地獄へ!
356デフォルトの名無しさん:2007/10/16(火) 23:35:03
std::basic_stringてSTLの問題児のひとつじゃないかw
357デフォルトの名無しさん:2007/10/16(火) 23:37:48
そう。だからだよ、MFCの方が使いやすい。文字列だけはな。
でも、コレに騙されてはイカン!
358デフォルトの名無しさん:2007/10/16(火) 23:50:17
すんごい同意☆
MFCはCStringだけが取り柄w
あとちょっとしたアプリはDialogベースアプリで書けるのがメリットかな。
だから俺はいつもMFCのDialogベース。
皆はなに使ってるの?Win32?
359デフォルトの名無しさん:2007/10/16(火) 23:58:44
うん
360デフォルトの名無しさん:2007/10/17(水) 00:07:34
MFCはAPIのラッパークラスだし何でSTLが比較対象に上がるのか理解に苦しむ。
361デフォルトの名無しさん:2007/10/17(水) 00:51:28
>>360
初心者にはそこが分からない。
間違った方向へ進もうとしている初心者を正しく導くのが、
このスレの住人に課せられた使命。
362デフォルトの名無しさん:2007/10/17(水) 01:22:06
MFCにはCStringがある。だからSTLと比較される。
363デフォルトの名無しさん:2007/10/17(水) 01:44:23
MFCは CString 以外は使うな。人間性を失いたくなければ。
364デフォルトの名無しさん:2007/10/17(水) 14:18:04
ダイアログベースのアプリならMFCが楽でいいよ。
そっから先は無理だけど。
作るもの全てがダイアログベースのアプリになってしまう。
俺がいい例。
365デフォルトの名無しさん:2007/10/17(水) 14:50:39
たまにはドキュメントビューアーキテクチャのことも思い出してあげてください
366デフォルトの名無しさん:2007/10/17(水) 16:23:14
>>342
青春時代を思い出して泣いた。
367デフォルトの名無しさん:2007/10/17(水) 17:49:02
VC6.0でWindowsサービスを作っています。
作ったサービスはXPでは動作するのですが、
2003 Server ではサービスとしての起動ができません。
(正確にはWindows Server 2003 R2 Standard Edition です)

サービスマネージャで「サービスの開始」をクリックすると、
プログレスバーが出てしばらく後
「ローカルコンピュータのxxxx(サービス名)サービスを開始できません。
エラー1053:そのサービスは指定時間内に開始要求または
制御要求に応答しませんでした。」となります。

根本的に、2003 Server 向けのサービスをVC6で作ることはできないのでしょうか。
ご存知の方おしえてください
368デフォルトの名無しさん:2007/10/17(水) 18:04:46
>>365
つーかMFCはそれがメインだと思うんだが、使いこなせない人多いんかな。
369デフォルトの名無しさん:2007/10/17(水) 18:21:47
C++作成支援プログラムって存在しますか?
たとえばHTMLならPOWERPOINTで画像やボタンの配置などが簡単にできますがC++でも同じようなことができる
プログラムってありますでしょうか。
370デフォルトの名無しさん:2007/10/17(水) 18:25:26
スレが違うと思われ
371デフォルトの名無しさん:2007/10/17(水) 18:28:24
Visual C++は、まさにそういう類いのソフトウェア。

ところで、PowerPointはただの釣針だよね?
372デフォルトの名無しさん:2007/10/17(水) 18:41:59
>>371
powerpointじゃなかったpublisherだった。
ありです。
373デフォルトの名無しさん:2007/10/17(水) 18:49:46
>>369
GUIツールキットとかGUIビルダーとかかな・・・
スレッドあるからそこで雰囲気見てみるといいよ。
374デフォルトの名無しさん:2007/10/17(水) 18:53:16
VC++初めて使おうと思ってるんですけどVBのプログラミング言語のところだけC++になったもの、と考えてあってますか?
もしVBのようにGUIが作れるのであれば本格的に勉強しようと思ってるんですが・・・
375デフォルトの名無しさん:2007/10/17(水) 19:05:41
VBと違って簡単なプログラムでも大量のコードが必要
376デフォルトの名無しさん:2007/10/17(水) 19:37:37
待て、Publisherも名前からして違う。
MS OfficeならFrontPageだろ。
まあこれも別製品に後継を譲る立場だが。
377デフォルトの名無しさん:2007/10/17(水) 21:29:08
>>374
Standard以上のVCにはいくつかのライブラリが付いてくるんだけど
.Netを使うならVB.NetのようにGUIを作れる。ただ言語は純粋なC++じゃなく
C++/CLIになる。ライブラリ使わないなら375の言うようなことになる。

C++のライブラリもあるんだけど、必ず変なのが来て暴れるので説明省略。
378デフォルトの名無しさん:2007/10/18(木) 03:05:31
VC++ってもしかしてCopyFile(○○,××,FALSE)に対応してない?
どなたか解決方法教えてください
379デフォルトの名無しさん:2007/10/18(木) 03:36:31
たぶん原因が<windows.h>をインクルードしてないからなんだと思うのですが、#include文を入れると
大量にエラーが増えてしまいます・・・
どうすればいいのでしょうか
380デフォルトの名無しさん:2007/10/18(木) 03:58:37
>どうすればいいのでしょうか
コンパイラが教えてくれるだろ。

■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう。
・できるだけ具体的に。
381デフォルトの名無しさん:2007/10/18(木) 12:38:16
VC2005 Proを使ってます。

クラスライブラリのヘッダにて、abstract sealedの
クラス内にtypedefとtemplateを使った定義をしました。
しかし、そのヘッダ内では使えるものの、そのほかのクラスでは使用
できません。コンパイルエラーになります(定義されていないとのこと)
(staticのメンバ関数などはOK)。
どうしたら、他クラスで使用できるのでしょうか?また、templateや
typedefをクラスライブラリで定義する場合はこの方法しかないのでしょうか?

// typedefを使用したクラス(例)
public ref class TYPES abstract sealed{
public:
typedef short test16;
typedef unsigned short utest16;};
// templateを使用したクラス(例)
public ref class METHODS abstract sealed{
public:
template <typename T1>
static T1 TEMPTEST (const T1& t1)
{return t1;}
// このメンバ関数は他クラスでも使用可能
static void TEST(int num){int i = 3;}
};
382デフォルトの名無しさん:2007/10/18(木) 13:45:36
スレ違い?
クラスライブラリで template、typedef 使うなよ
383デフォルトの名無しさん:2007/10/18(木) 18:56:16
>>381
いつものC++みたいに、ヘッダファイルも一緒に配ればOK。
384デフォルトの名無しさん:2007/10/18(木) 23:02:47
STLとMFCだと、プログラミングの技術に差は出ますかね?
385デフォルトの名無しさん:2007/10/18(木) 23:09:18
使い道が全然違う
386デフォルトの名無しさん:2007/10/18(木) 23:15:55
MFCって次期VSから無くなるんじゃなかったっけ?
もうどうでもいいよ
387デフォルトの名無しさん:2007/10/18(木) 23:28:16
>>386
確かMSDNにMFCに関するQ&Aがあって「MFCはなくなりませんか?」みたいなQに対して、「永久になくなりません。」ってAがあった。
ホントかよっ!と思いつつ読んでいたが、無くなるのか。。
388デフォルトの名無しさん:2007/10/18(木) 23:28:40
今から勉強するならSTLですかね?
参考書籍等が書店に見当たらないのですが、ほとんどがMFCを説明している本でして、
389デフォルトの名無しさん:2007/10/18(木) 23:30:38
>>364
ダイアログベースなら他のツール使えば?
ダイアログベースのアプリなんて使ったこと無い
390デフォルトの名無しさん:2007/10/18(木) 23:34:55
>>388
MFCとSTLは全く別物
どちらもやってもよい
391デフォルトの名無しさん:2007/10/18(木) 23:58:28
392デフォルトの名無しさん:2007/10/18(木) 23:59:39
簡単なGUIアプリケーションを作りたいと思っています。
一応、C,C++は基本的なことは理解しているつもりです。
検索したらMFCや.NET Framework、Win32APIがあったのですが。
違いもいまいちわからないのですが、どれを使ったらいいのでしょうか?
宜しくお願いします。
393デフォルトの名無しさん:2007/10/19(金) 00:00:01
とりあえず2008ではなくならない
むしろ拡張されてる
394デフォルトの名無しさん:2007/10/19(金) 00:03:26
けど、あいかわらずグリッド系は自前で作るしかないのね
395デフォルトの名無しさん:2007/10/19(金) 01:14:27
Visual Basic2005とVisual studio2005って何が違うのか何方か教えてください
396デフォルトの名無しさん:2007/10/19(金) 01:23:32
わらた
397デフォルトの名無しさん:2007/10/19(金) 01:27:45
>>389
いまのアプリケーション開発(Win)ってトレンドってなんだろう?
Win32だとGUIを作るのが大変そうだし。
視覚的にGUIが作れるのってダイアログベースアプリくらいしか思いつかない。
あとはVBかC#。
C#も作ったコントロールやウインドがやたら画面の端に引っ付いたりして気に食うものがなかなか出来ない(と個人的に思う)

398デフォルトの名無しさん:2007/10/19(金) 03:24:51
VC++のフォームを使ってボタンを押すと特定のファイルを移動するプログラムを作りたいんですが、
copyfile の identifier が見つかりませんでした、とビルドエラーがでます。助けてください
399デフォルトの名無しさん:2007/10/19(金) 07:27:53
全ソースupしたら助けてやらないことも無い。
400デフォルトの名無しさん:2007/10/19(金) 07:39:39
WinAPIのCopyFileなら
必要なヘッダ(windows.h)をincludeしてない
CopyFileなのにCopyfileやcopyfileにしてる
401デフォルトの名無しさん:2007/10/19(金) 09:43:51
どなたか>>392お願いします。
スレ違いだったら言ってください。
402デフォルトの名無しさん:2007/10/19(金) 09:53:57
どれでも好きなの使ったらええやん
向き不向きがあるだろ
403デフォルトの名無しさん:2007/10/19(金) 10:59:48
C++/CLIでWindows.Formsがトレンドなんじゃないの?
とC#を使いながら言ってみる。
404デフォルトの名無しさん:2007/10/19(金) 15:19:15
>>389
>ダイアログベースなら他のツール使えば?
ツール???何の?
ツールの話なんて誰がしてたの?
405デフォルトの名無しさん:2007/10/20(土) 00:51:50
ソースファイルはあるのだがどうにもコンパイル出来ない・・。
替わりに俺がやってやるぜ!なんて素敵な方、いませんか?

g++とsqliteのライブラリ・ヘッダがあれば良いらしいのですが。
欲しいバイナリはwin32用です。
406デフォルトの名無しさん:2007/10/20(土) 00:52:43
壱千万で引き受けます。
407デフォルトの名無しさん:2007/10/20(土) 00:55:14
それ・・は・・むり・・。orz
408デフォルトの名無しさん:2007/10/20(土) 03:28:28
おいおい、NTTデータなら800億円で受注する仕事だぜ?安いもんさ。
409デフォルトの名無しさん:2007/10/20(土) 11:01:54
VC++2005EEを使っています。
コマンドラインからclでコンパイルのみを行ってからlinkを使った場合、
CRTやkernel32.libは指定しなくても自動的にリンクされるようですが、
デフォルトでリンクされるライブラリファイルはどこで定義されているのでしょうか?
410デフォルトの名無しさん:2007/10/20(土) 12:54:14
Windows2000でVC++2002でアプリケーションを作成したのですが
"read" になることはできませんでしたのエラーがでても動いているので
そのまま稼動させて大丈夫でしょうか?
readってことは参照しかしてないってことですよね?
411デフォルトの名無しさん:2007/10/20(土) 12:55:59
だめだよ
412デフォルトの名無しさん:2007/10/20(土) 13:00:38
なぜですか?
413デフォルトの名無しさん:2007/10/20(土) 13:12:59
>409
lib
414デフォルトの名無しさん:2007/10/20(土) 13:16:14
>>410
コード晒してくだちゃい><
415デフォルトの名無しさん:2007/10/20(土) 13:19:19
1万7千行ありますが
416デフォルトの名無しさん:2007/10/20(土) 13:26:47
何でその程度で触ってんの?
一人で使うなら問題ない
それが君の力量だから
417デフォルトの名無しさん:2007/10/20(土) 13:38:21
一人では使いませんが一人で作っています
418409:2007/10/20(土) 13:40:40
>>413
それはライブラリファイルがある場所を示してくださっていると解釈してよろしいですか?

ライブラリがある場所ではなく、デフォルトでリンクされるライブラリファイルが
どこでどのように設定されているのかを知りたいのです。
例えばkernel32.libやCRTはデフォルトでリンクするが、
user32.libは指定しないとリンクされない…とか。

corewin_express.vspropsで設定されているライブラリファイルは
コマンドラインでのリンクには影響を与えないことを確認しました。
419デフォルトの名無しさん:2007/10/20(土) 14:17:07
hBitmap=LoadImage(hInstance,MAKEINTRESOURCE("IDB_CHAR"),IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION);

if (hBitmap == NULL)
{
MessageBox(hWnd,"BitMap Load Error", "エラー",MB_OK);
return 0;
}

これでリソースからビットマップを読んでるつもりなんですが
何故、メッセージが出るんでしょうか?
#include "resource.h" も付けています。

MAKEINTRESOURCE("IDB_CHAR") の部分に
ビットマップのパスを入れても同じです。
420デフォルトの名無しさん:2007/10/20(土) 14:26:50
GetLastError()
421デフォルトの名無しさん:2007/10/20(土) 14:43:49
>>419
MAKEINTRESOURCE(゚听)イラネ
このマクロは、LPCTSTRにWORD型のIDを突っ込むために使う。
422デフォルトの名無しさん:2007/10/20(土) 20:42:10
>>410
ポインタの使い方間違ってるんじゃないの?
423デフォルトの名無しさん:2007/10/20(土) 23:41:40
「猫でも〜」で、C++でもGDI+が使えることを知りました。
さっそく画像表示プログラムつくってみたんですけど、パスに漢字がはいると
表示できません。これはなぜでしょうか?
424デフォルトの名無しさん:2007/10/20(土) 23:57:46
VC++6.0でOutlook2007と携帯W54Tのスケジュールとタスクの同期プログラム作りたいんだけど。
まずは、bluetoothの制御方法から教えてくれ。
サンプル世路
425デフォルトの名無しさん:2007/10/21(日) 00:08:14
そのようなことができる方は初心者とは言いません。


426デフォルトの名無しさん:2007/10/21(日) 00:26:14
初心者とは、初心の心を持っている者のことである。
427デフォルトの名無しさん:2007/10/21(日) 00:34:12
うるせぇ!オレ様は初心者だぞ。おまいら初心者を差別するつもりか?
初心者には知る権利がある。質問する権利がある。違うか?
オレの言ってる事が間違っているなら、筋道立てて理路整然と反論してみろや!
428デフォルトの名無しさん:2007/10/21(日) 01:12:58
俺は小心者ですが何か?
429398:2007/10/21(日) 02:09:50
#include <windows.h>
#pragma once
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
namespace testfile {
public ref class form : public System::Windows::Forms::Form
{
public:
form(void)
{
InitializeComponent();
}

protected:
~form()
{
if (components)
{
delete components;
}
}
private: System::Windows::Forms::Button^ button1;
protected:
private:
System::ComponentModel::Container ^components;

続く
430デフォルトの名無しさん:2007/10/21(日) 02:11:36
#pragma region Windows Form Designer generated code
void InitializeComponent(void)
{
this->button1 = (gcnew System::Windows::Forms::Button());
this->SuspendLayout();

this->button1->Location = System::Drawing::Point(58, 130);
this->button1->Name = L"button1";
this->button1->Size = System::Drawing::Size(163, 74);
this->button1->TabIndex = 0;
this->button1->Text = L"button1";
this->button1->UseVisualStyleBackColor = true;
this->button1->Click += gcnew System::EventHandler(this, &form::button1_Click);

this->AutoScaleDimensions = System::Drawing::SizeF(6, 12);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(292, 266);
this->Controls->Add(this->button1);
this->Name = L"form";
this->Text = L"form";
this->ResumeLayout(false);
}
#pragma endregion
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{CopyFile("\\files\\readme.txt","C:\\program files\\testprogram\\readme.txt",FALSE);
}
};
}
長いですけどフォームつかったら自動的にいろいろ追加されてこんなふうになってしまいました。ボタンを押すとファイルを書き換えるだけなんですけど・・・
とりあえずボタン押して
431398:2007/10/21(日) 02:17:02
そしてビルドしたときのエラー
1>------ ビルド開始: プロジェクト: testfile, 構成: Debug Win32 ------
1>コンパイルしています...
1>form.cpp
1>c:\documents and settings\○\my documents\visual studio 2008\projects\project1\testfile\testfile\form.h(1) : error C2001: newline in constant
1>c:\documents and settings\○\my documents\visual studio 2008\projects\project1\testfile\testfile\form.h(1) : error C2059: syntax error : 'string'
1>c:\documents and settings\○\my documents\visual studio 2008\projects\project1\testfile\testfile\form.h(88) : error C2065: 'FALSE' : undeclared identifier
1>c:\documents and settings\○\my documents\visual studio 2008\projects\project1\testfile\testfile\form.h(88) : error C3861: 'CopyFile': identifier not found
1>ビルドログは "file://c:\Documents and Settings\○\My Documents\Visual Studio 2008\Projects\Project1\testfile\testfile\Debug\BuildLog.htm" に保存されました。
1>testfile - エラー 4、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
432デフォルトの名無しさん:2007/10/21(日) 02:39:43
CopyFile で右クリックして「定義へ移動」すると勉強になると思う。
433デフォルトの名無しさん:2007/10/21(日) 09:06:43
CLR-Windowsフォームアプリケーション で新規作成、
ボタン配置してハンドラを同じように書いてみたけど、
文字列がUnicodeでないと文句言われただけで、後は問題無かった。
form.h(1)の謎のエラーが後に影響しているのかもしれんね。
そのエラーだと、ヘッダをインクルードしているソース側に問題がある可能性もあるから、
#include "form.h" より前の部分もチェックした方が良いな。
434デフォルトの名無しさん:2007/10/21(日) 10:03:42
現在,
Visual C++ 6.0 → .netの2005
Windows2000 → WindowsXP SP2
へようやく以降したのですが,分からぬエラーが.

6.0 + 2000 = 問題ない
6.0 + XP = 問題ない
2005+ 2000 = 問題ない
2005+ XP = 問題あり

何が問題か,ですが
テキストファイルを読み込むと終了時にアクセス違反
というエラーがでます.
テキストファイルを読み込まなければエラーは起きません.

何かXPと2005の組み合わせで気をつけなければ
ならないことあるのでしょうか?
435409:2007/10/21(日) 10:21:58
>>409 >>418
どなたかご存知の方がおられましたら、教えてください。
436デフォルトの名無しさん:2007/10/21(日) 12:43:51
>>421
hBitmap=LoadImage(hInstance,"C:\\test.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
なら、その後Bitbltで描けるようですが、
hBitmap=LoadImage(hInstance,MAKEINTRESOURCE("IDB_NULL"),IMAGE_BITMAP,0,0,LR_DEFAULTCOLOR);
これだと駄目です。MAKEINTRESOURCEを取っても駄目です。

パスで指定 → OK
リソースから → 駄目

もう、どうしたらいいか・・・
437デフォルトの名無しさん:2007/10/21(日) 12:48:21
>>436
GetLastError()で見たのかよ低脳
""取ってみ
MAKEINTRESOURCE("IDB_NULL")→MAKEINTRESOURCE(IDB_NULL)
438デフォルトの名無しさん:2007/10/21(日) 12:51:43
>>434
自分の2005+XP SP2では問題は発生しない。
2000->XP SP2 はもちろんクリーンインストールだよな。

>>435
コンパイラの既定CRTライブラリは/MTなので、
出力されたオブジェクトファイルにlibcmt.libのリンク指示が含められている。
で、リンク時にCRTライブラリによってエントリポイントが解決された結果、
それが依存するライブラリもリンクされている。

CRT内部で何をしているか調べるのは正直骨だし、
とりあえず宣言しとけばいいんじゃね?被っても問題無いし。

ちなみに、エントリポイントを自分のコードで解決してCRTを一切リンクしなかった時は
kernel32.libすらリンクされなかったので、あくまで依存関係に従っていると考えて良さそう。

>>436
リソースの識別には、16ビットIDと文字列を対応付ける二つの方法がある。
"IDB_NULL"という文字列を対応付けているなら "IDB_NULL" で良いが、
resource.hのIDB_NULLのID定義を介しているなら、MAKEINTRESOURCE(IDB_NULL)だ。
439デフォルトの名無しさん:2007/10/21(日) 12:58:40
画像はウィンドウクラスでカーソルとアイコンの登録しかやったことないけど
メニューの指定でもいろいろ悩んだなぁ・・・。

とりあえずわかったことは
引数として文字列(のポインタ)が要求されるのに
resource.h でリソース名に定数振られてて
そのせいでうまくいかないっぽいってことはわかった。
画像とかの ID とかを "" で囲んで
resource.h から #define の定義を消すとうまくいってた。

正当なやり方はよくわかってない。
440デフォルトの名無しさん:2007/10/21(日) 13:05:00
よくわかってない奴は黙ってろや
あほが余計悩むだろ
441デフォルトの名無しさん:2007/10/21(日) 13:10:39
>>437,438,439
" を外しても同じです。
エラーなどは出ません。

一応、使ってるのがVC5なんですよ。これって関係あるんかな?


GetLastErrorも調べてみます。
442デフォルトの名無しさん:2007/10/21(日) 13:17:43
たまに、resource.hに使われなくなったIDが残ったりするから、それかもしれないな。
.rcファイルとresource.hを目視で確認してみ。
443デフォルトの名無しさん:2007/10/21(日) 13:21:34
何か理由があってVC5なんて使ってるの?
新しいのに移行する時に余分に時間が掛かるだけだし情報も少ないよ
444デフォルトの名無しさん:2007/10/21(日) 13:27:34
リソースビューでその画像が "IDB_NULL" ってなってるんじゃないの?
"" とって IDB_NULL にしてみたら?
445デフォルトの名無しさん:2007/10/21(日) 13:33:21
>>444
画像名はリソースビューで見ても IDB_NULL で
"" は付いていません。

本当に謎だ・・・
446デフォルトの名無しさん:2007/10/21(日) 13:37:03
>>445
今手元に環境あるの?
447409:2007/10/21(日) 13:57:16
>>438
オブジェクトファイルにコンパイラからのリンク指示が含まれているということなので、
dumpbinを使ってオブジェクトファイルの内容を調べてみたところ、libcmt.libのリンクを
指示するリンカオプションが含まれていました。

また同様に、libcmt.libをdumpbinで調べてみたところ、kernel32.libへのリンクが
指示されていました。


おかげで疑問が解決しました。ありがとうございました。
448デフォルトの名無しさん:2007/10/21(日) 14:59:09
OS:XP Pro sp2で下記URL先のWindows アプリケーションがアクティブにならない状態です。
解決策はあるのでしょうか?
ttp://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=1361138&SiteID=7
449デフォルトの名無しさん:2007/10/21(日) 15:04:10
解決してんじゃん
いろいろやってみろよ
お前には無理だけど
450434:2007/10/21(日) 15:22:29
>>438
クリーンインストールです.

サブPCが2000のままだったのでVC++6.0を入れて
メインPC(XP)の.netの2005とモニタ並べて
まったく同じ処理をやってもメインPCの方だけアクセス違反が….
2005では文字コードをUnicode→マルチバイトへの変更が差分です.
451デフォルトの名無しさん:2007/10/21(日) 15:29:12
同じじゃないじゃん
452デフォルトの名無しさん:2007/10/21(日) 16:36:59
>>446
あります。

一応、LoadImage後に
if (hBitmap == NULL)
{
MessageBox(hWnd,"BitMap Load Error", "エラー",MB_OK);
return 0;
}
で調べてみると メッセージが出ます。
453デフォルトの名無しさん:2007/10/21(日) 16:41:48
あるのに遅すぎんだよ
454デフォルトの名無しさん:2007/10/21(日) 17:56:53
LoadImageで読み込めないフォーマットのビットマップの可能性もあるから、
まずは、FindResourceでリソースを見つけられているかどうか確認した方が良いな。
生成された実行ファイルをIDEで開けばリソースを覗けるはずだから、
IDが正しく対応しているかの確認も。
455デフォルトの名無しさん:2007/10/21(日) 18:00:58
LoadImageで読み込めてるって書いてある
456434 450:2007/10/21(日) 18:06:57
>>451
@windowsXP (.NETの2005)で文字コードをマルチバイト,
Awindows2000(.NETの2005)で文字コードをマルチバイト,
同じ条件で@では終了時エラー,Aでは正常終了です.
まったく同じ条件です.

XPのSP2で何か気をつけるべきことがあるのかと考えていますが,
まだ原因が特定できません.
457デフォルトの名無しさん:2007/10/21(日) 18:12:33
今まで問題のあるコードがたまたま動いていただけなんじゃねぇの。
458434 450 456:2007/10/21(日) 18:22:27
>>457
うーん,その可能性も否定できないんですが
実際に複数台のPCで1日中ずっと処理を走らせて,
3年間,エラーが起きることはなありませんでした.

エラーが起きる部分(ファイル読込)は少なく見積もって
数万回は走っているはずです.
終了時にエラー(アクセス違反)は一度も出ていません.

現在調べている時は余計な部分を削除していき,
ファイル読込部分しか書いていないです.
459デフォルトの名無しさん:2007/10/21(日) 18:33:12
自分は絶対間違ってないという前提なら
ここで質問されても答えようがないから
マイクロソフトに直接聞け
460デフォルトの名無しさん:2007/10/21(日) 18:34:41
短いならコード出すべし。
461デフォルトの名無しさん:2007/10/21(日) 18:36:08
Unicodeなら問題ないの?
462デフォルトの名無しさん:2007/10/21(日) 18:42:48
どうせバッファオーバーフローとかだろ
463デフォルトの名無しさん:2007/10/21(日) 19:14:49
どうしてデバッガで追うとかしないの?
464自作ブラウザ:2007/10/22(月) 17:48:37
VC++ 6.0 で htmlview を基本クラスにして、ブラウザを作成した時には
マウスによるクリック処理をプログラマがコードを追加して実装しなくても、
左ボタン処理等が実装されていますが、これをカスタマイズしたい時には
どうすればよいのでしょうか?
465デフォルトの名無しさん:2007/10/22(月) 17:52:14
>>464
つ[JavaScript]
466デフォルトの名無しさん:2007/10/23(火) 16:00:19
windows フォームアプリケーションを使ってるんですがC++と少し違いを感じました。
messagebox.showをmessagebox::showと書いたり
messagebox以外にもいろんな機能を使いたいんですがなんと入力すればいいのかわかりません。
ファイルを特定フォルダに作成したり、特定なファイルを上書きしたり、別ウィンドウを開いたりしたいんですが
誰か教えてください
467デフォルトの名無しさん :2007/10/23(火) 17:20:25
C++出来るんならMFCなりapiたたいたりapiクラス化するなりで良いじゃん
468デフォルトの名無しさん:2007/10/23(火) 21:30:31
>>466 がやっているのは、C++/CLI だ。
というわけで .NET Framework のリファレンスを見れ。

もっとも、.NET 触るんであれば、俺は C# をお勧めする。
469デフォルトの名無しさん:2007/10/24(水) 05:26:09
>>468
だな。VSC++はネーテブコード吐き出すためのツールだと知れ>>466
470デフォルトの名無しさん:2007/10/24(水) 05:31:13
VS2003.NET→VS2005に環境を移行しました。
が、VS2003.NETでは警告、エラーともにでなかったソースでもVS2005だと警告が出ます。
調べたところ、文字コードがUNICODEではないため警告が出ているようです。

そこで、文字コードを一括(プロジェクト内のソースすべて)をUNICODEに変更するにはどうすればよいのでしょうか?
471デフォルトの名無しさん:2007/10/24(水) 05:37:28
めんどくさいぞ
それよりプロジェクトのプロパティで以前の文字コードに設定したらどや
472デフォルトの名無しさん:2007/10/24(水) 05:46:34
>>471
ありがとうございます。
プロジェクトのプロパティはVS2005の設定項目のどこを変更すればよいのでしょうか?

質問ばかりですいません・・・・
473デフォルトの名無しさん:2007/10/24(水) 05:57:41
左側のソリューションエクスプローラのプロジェクトファイルのアイコンを右クリック→プロパティ
全般のページが開いてると思うから真ん中当たりに文字セットがある
2005からデフォルトでUNICODEになった
474デフォルトの名無しさん:2007/10/24(水) 06:15:14
VS2003.NETで作成したプロジェクトをVS2005で開き、>>473の部分を確認したのですが、
すでに「マルチバイト文字セットを利用する」となっていました。

warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。
データの損失を防ぐために、ファイルを Unicode 形式で保存してください。

出てくる警告は上記のものです。これは気にしなくてもよいのでしょうか・・・
475デフォルトの名無しさん:2007/10/24(水) 06:17:54
何やそれかw
ファイル→保存オプションの詳細設定でUnicodeで保存し直したら消えるんちゃう?
476デフォルトの名無しさん:2007/10/24(水) 06:40:16
これでいけそうですね。
ただ、ファイルが十数ファイルあるので一括変換できればうれしかったのですが・・・残念です。

早朝からありがとうございました。
477デフォルトの名無しさん:2007/10/24(水) 11:49:14
>>476
せっかくVC++使ってるんだから
一括変換のプログラム書けばいいだろう
478デフォルトの名無しさん:2007/10/24(水) 12:54:31
>>467-469
ありです。やってみます
479デフォルトの名無しさん:2007/10/25(木) 21:59:36
超初心者で申し訳ないのですが、質問があります。

VC++ 2005で、
ttp://tserve01.aid.design.kyushu-u.ac.jp/~fujiki/vc_lecture/c_6.htm
を参考にペイントツールを作成していたのですが、
ツールバーのボタンが押されたときに呼び出される関数を設定する所で詰まってしまいました。
ClassWizardのない2005では、この部分をどう作ったら良いのでしょうか?
480デフォルトの名無しさん:2007/10/25(木) 22:17:38
ツールバーのボタンを押す
481デフォルトの名無しさん:2007/10/25(木) 22:20:29
最初メニューにコマンド追加して
それをツールバーにも設定
482479:2007/10/25(木) 22:40:56
>>481
クリアしました。
啓蒙ありがとうございました。
483デフォルトの名無しさん:2007/10/26(金) 06:53:45
オブジェクト指向プログラミングを大きく分けてみたんですが、
カプセル化、抽象化、階層化で合ってますか?
484デフォルトの名無しさん:2007/10/26(金) 10:16:05
質問ですが、フォルダをウィンドウから開きたい場合はどうしたらよいのでしょうか?
例えばですが、
 ウィンドウにマイコンピュータの画像を貼り付け、そこをクリックしたらマイコンのフォルダが開く。と
と、したいのですが、色々調べていてやり方がさっぱり分かりません。

分かるかた是非教えて下さい。また、参考サイト等ありましたら合わせて教えて下さい。お願いします。
485デフォルトの名無しさん:2007/10/26(金) 10:34:18
system("explorer.exe C:\\");
486デフォルトの名無しさん:2007/10/26(金) 10:41:15
>>485
レスありがとうございます。
書いて頂いたのは、プロンプトが一回開いてしまうんですが、そのまま直にフォルダを開く事はできませんか?

私が今まで書いていたものは、
 ShellExecute(hWnd, "oepn", "パス", NULL, NULL, SW_SHOWNORMAL);
なんですが、この方法ではうまくいきませんでした。無理なのであればsystem()でやろうかと思います。

また、マイコンピュータを開く場合、ファイルパスがうまく指定できないのですが、何故でしょうか・・
C:\Documents and Settings\ユーザ名\Favorites\My Computerではフォルダがないと言われるんですが、違うのでしょうか。

度々ですが、宜しくお願いします。
487デフォルトの名無しさん:2007/10/26(金) 10:44:12
質問小出し野郎はスルーするのが吉
488デフォルトの名無しさん:2007/10/26(金) 11:01:22
"oepn"ではフォルダはオープンしないと思う。せいぜいできるとしてもオエプンくらいかな。
489デフォルトの名無しさん:2007/10/26(金) 11:14:04
ShellExecute(hWnd, "open", "explorer.exe", "パス", NULL, SW_SHOWNORMAL);
でいいのかな。

参考サイト:http://www.google.co.jp
つかいかた:テキストボックスに [ShellExecute explorer.exe] と入れて [google検索]ボタンを押す
490デフォルトの名無しさん:2007/10/26(金) 11:20:18
ホームラン級の馬鹿ですね
491デフォルトの名無しさん:2007/10/26(金) 11:26:08
つか、ここに書いてあるやん。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpshell/html/_win32_shellexecute.asp

main()
{
ShellExecute(NULL, "open", "C:\\Documents and Settings\\NEC-PCuser\\Favorites"
, NULL, NULL, SW_SHOWNORMAL);
}
492デフォルトの名無しさん:2007/10/26(金) 11:30:25
>>489
ShellExecute(hWnd, "explore", "パス", NULL, NULL, SW_SHOWNORMAL);
だね
493デフォルトの名無しさん:2007/10/26(金) 12:17:05
で、マイコンピュータのパスの調べた方も教えてやれよ
494デフォルトの名無しさん:2007/10/26(金) 12:19:47
「教えてやれよ」 とは何だよ。
人にモノを尋ねるときは、「教えてください」 だろ
495デフォルトの名無しさん:2007/10/26(金) 12:40:10
なんとなく教えてくれてるっぽい人どうも

全部自分でなんとかなりました。
496デフォルトの名無しさん:2007/10/26(金) 14:30:27
マイコンピュータをユーザー名だけで決めうちはどうかと
497デフォルトの名無しさん:2007/10/26(金) 14:39:24
気になるから便乗するけどマイコンピュータのパス(?)は環境変数
USERPROFILEでいいんですか?
498デフォルトの名無しさん:2007/10/26(金) 15:59:07
調べたけど、マイコン他特殊フォルダはパスじゃない。
レジストリのIDみたいなの
499デフォルトの名無しさん:2007/10/26(金) 17:52:11
おまいら降参か?ホレ

ShellExecute(NULL, "explore", "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}", NULL
, NULL, SW_SHOWNORMAL);
500デフォルトの名無しさん:2007/10/26(金) 18:40:24
降参も何も、ほぼ答え出た時点で終ってるのに
501デフォルトの名無しさん:2007/10/26(金) 18:43:59
「おまいら降参か?ホレ」 とは何だよ。
「ググりました。これで合っていますか?」 だろ
502デフォルトの名無しさん:2007/10/26(金) 18:54:41
その長ったらしいのいちいち憶えてるわけにいかないから
特殊フォルダ id でぐぐったら出てくることだけ知ってれば十分
503デフォルトの名無しさん:2007/10/26(金) 19:03:58
clsidの前の::もいるんですか?
504デフォルトの名無しさん:2007/10/26(金) 19:06:35
「ググれ」で済むならこのスレいらんだろ。
505デフォルトの名無しさん:2007/10/26(金) 19:09:29
ググれで済むよ。ググる能力もない奴はプログラムやる資格ない
506デフォルトの名無しさん:2007/10/26(金) 19:10:58
答え丸写ししなきゃできないならプログラミングは無理だから土方でもやったほうがいい
507デフォルトの名無しさん:2007/10/26(金) 19:11:53
「ググれ」で済む程度の問題でこのスレに来るな
508デフォルトの名無しさん:2007/10/26(金) 19:13:14
>>504
子供かよ
509デフォルトの名無しさん:2007/10/26(金) 19:13:46
ありがとうございます
510デフォルトの名無しさん:2007/10/26(金) 19:20:59
>>500-502
おまいら、何も泣く事は無いだろ。
ここは初心者スレなんだから、知らなくても恥にはならないぞ。
511デフォルトの名無しさん:2007/10/26(金) 19:24:00
>510は >498に答え書いてあるのに気がつかない初心者
512デフォルトの名無しさん:2007/10/26(金) 19:25:48
>>510
ここは初心者スレだけど初心者のお前が威張れる場所じゃない。
513デフォルトの名無しさん:2007/10/26(金) 19:27:53
>>509
どういたしまして^^
514デフォルトの名無しさん:2007/10/26(金) 19:43:06
>>511
ば〜か、>>498 は無視されてるのに気づかないの?
515デフォルトの名無しさん:2007/10/26(金) 20:14:44
とりあえずage厨の子供が一人いたということでFA?
516デフォルトの名無しさん:2007/10/26(金) 23:25:56
なんでいつまでたってもSHGetSpecialFolderPathとか出てこないの
517デフォルトの名無しさん:2007/10/26(金) 23:28:58
既に解決済みだから
518デフォルトの名無しさん:2007/10/26(金) 23:32:14
>487
519デフォルトの名無しさん:2007/10/26(金) 23:34:19
まだやってるのかよ、しつこいな。
520デフォルトの名無しさん:2007/10/26(金) 23:38:56
>487
521デフォルトの名無しさん:2007/10/26(金) 23:42:58
clsid直書きで解決ってどんだけー
522デフォルトの名無しさん:2007/10/26(金) 23:45:47
馬鹿は心の隅で笑うのが鉄則
下手に指摘しても知恵を付けさすだけ
523デフォルトの名無しさん:2007/10/28(日) 23:35:34
VS2005 Pro.を使用しています。
プロジェクトにクラスの追加を行う方法について困ったことがあります。
あるヘッダファイルに書かれているクラスをProjectに追加するにはどうすればいいでしょうか?普通はどのように追加するものでしょうか?
以下のようにするとコンパイルエラーになります。
1. ソリューションの作成
2. ソリューションにProject Aをクラスライブラリとして追加
3. Project Aにあるheader ”Common.hとします” を#includeで追加
4. ソリューションにProject Bをクラスライブラリとして追加し、同じようにCommon.hを#include
5. Main ProjectにProject AとProject Bを「プロジェクト」
-「参照の追加」で追加 ビルド
→Common.hで定義された型が再定義されました。というエラー。
524デフォルトの名無しさん:2007/10/29(月) 02:33:01
ソリューションエクスプローラを開いて
「ヘッダー ファイル」 フォルダ を右クリックして「追加」->「既存の項目」でヘッダーを入れて
「ソース ファイル」 フォルダ を右クリックして「追加」->「既存の項目」でソースを入れて
クラスが必要なソースからヘッダーを include すればいい
525デフォルトの名無しさん:2007/10/29(月) 02:36:03
アイタタタタタ・・・
526523:2007/10/30(火) 00:39:16
返事が遅くなってすいません。調べてみると、public, privateが決まってくる
ような気がしました。
Main, ClassLibA, ClassLibBでヘッダファイルに書かれたClassZを
includeしたいと思います。ClassLibA, ClassLibB, ClassZはPublic ref
のクラスです。
ClassLibA, ClassLibBはクラスライブラリとして追加したものです。

Main Class・・・ClassLibA, ClassLibB
ClassLibA・・・ClassZ(includeで追加)
ClassLibB・・・ClassZ(includeで追加)

Main Class, ClassLibA, ClassLibBそれぞれでClassZで定義された
メンバを使いたいと思ってます。
ただし、上記でコンパイルすると、再定義警告となってしまいます。
ClassZをprivateにして、Main, ClassLibA, ClassLibBのClassで
includeするしかないでしょうか?
ClassZはClassLibA, ClassLibBを参照した場合にしか使わないので、
なるべくincludeという形で別includeにしたくないと思っております。

上記のように2つのdllから共通のクラスを使い、その2つのdllを使う
クラスがある場合はどのようなクラス構成、設定にするべきでしょうか?
長々と書いてしまってすいません。
527デフォルトの名無しさん:2007/10/30(火) 01:00:03
.net かよ...
528デフォルトの名無しさん:2007/10/30(火) 01:58:49
>>526
C++/CLIはスレ違いだよね
ClassZもdllにしたら?

とりあえず.netについて分かってない気が
529デフォルトの名無しさん:2007/10/30(火) 19:38:00
VS2005でファイル操作をするためにfstream.hをインクルードしたいのですが、
ファイルを開けないと出るのですが、fstream.h以外に何かありますでしょうか?
530デフォルトの名無しさん:2007/10/30(火) 19:44:11
fstream
531デフォルトの名無しさん:2007/10/30(火) 19:58:49
#include <iostream>
#include <fstream>

void main(){
char buf[512];

// ifstreamのインスタンスを作る
// C言語のfopenと同じ
ifstream ifs("input.txt") ;

// ofstreamのインスタンスを作る
// C言語のfopenと同じ
ofstream ofs("output.txt") ;

// ifstreamのインスタンス(ifs)から1行読み込みbufに入れる。
while( ifs.getline( buf, sizeof(buf) ))
// ofstreamのインスタンス(ofs)を利用して読み込んだ内容を書き込む
ofs << buf << endl;
}
コンパイルエラーになるんですが、なぜですか?
532デフォルトの名無しさん:2007/10/30(火) 20:20:16
バカじゃねぇの
using namespace std;
533デフォルトの名無しさん:2007/10/30(火) 20:24:42
#include <iostream>
#include <fstream>
using namespace std;

void main(){
char buf[512];

// ifstreamのインスタンスを作る
// C言語のfopenと同じ
fstream ifs("input.txt" ,ios::in) ;

// ofstreamのインスタンスを作る
// C言語のfopenと同じ
fstream ofs("output.txt",ios::out) ;

// ifstreamのインスタンス(ifs)から1行読み込みbufに入れる。
while( ifs.getline( buf, sizeof(buf) ))
// ofstreamのインスタンス(ofs)を利用して読み込んだ内容を書き込む
ofs << buf << endl;
}
534デフォルトの名無しさん:2007/10/30(火) 20:35:10
ありがとうございます。
535デフォルトの名無しさん:2007/10/30(火) 20:50:33
>>532は無知の知を知らぬ無知
536デフォルトの名無しさん:2007/10/30(火) 20:54:45
ググれば分かるレベルだろ
答えもしてない分際で答えた者をバカにするな
537デフォルトの名無しさん:2007/10/30(火) 20:58:57
( ´,_ゝ`)プッ
たかが2chで簡単な答えを書いただけの癖に随分と偉そうですなあ
538デフォルトの名無しさん:2007/10/30(火) 21:05:22
( ´,_ゝ`)プッ
たかが2chで簡単な質問を書いただけの癖に随分と偉そうですなあ
539デフォルトの名無しさん:2007/10/30(火) 21:54:39
>>536
先に答えが出たので答えなかっただけ。
たまたま自分が答えを知っていたというだけで質問者を愚弄する者こそ愚者と知るべし。
540デフォルトの名無しさん:2007/10/30(火) 22:06:49
たまたまってレベルじゃねぇぞ
お前どんだけレベル低いんだ
541デフォルトの名無しさん:2007/10/30(火) 22:08:39
>>539
>答えもしてない分際で答えた者をバカにするな
日本語読める?
542デフォルトの名無しさん:2007/10/30(火) 22:40:20
Q&A系スレッドを勝負に例えるなら
答えた者が勝ち。
答えられなかった者は負け。

答えられなかったのに捨てゼリフ吐くのはみっともない。
亀田3兄弟よりみっともない。
543デフォルトの名無しさん:2007/10/30(火) 22:52:30
ここC++スレじゃないし
544デフォルトの名無しさん:2007/10/30(火) 23:00:49

亀田3兄弟よりみっともない男
545デフォルトの名無しさん:2007/10/30(火) 23:20:50
スレ違いは犯則負け
546535:2007/10/31(水) 00:10:22
>>540
>質問者を愚弄する者こそ愚者と知るべし
 ~~~~~~
勝ち負けの問題じゃない。君こそ日本語を読め。
しかも、俺じゃない奴(>>543)すら攻撃するし。
自分以外は全員敵かよw
547デフォルトの名無しさん:2007/10/31(水) 00:17:30
レス番間違ってるし
同一人物だと思ってるし
自分以外は全員敵かよw
548デフォルトの名無しさん:2007/10/31(水) 00:27:48
( ´,_ゝ`)プッ
なら口ださなきゃいいのに>>547
549デフォルトの名無しさん:2007/10/31(水) 02:53:50
picutureBox1とpicutureBox2があって、
picutureBox1 Clickの処理をpicutureBox2 Clickにも同じくさせたいんですが、
どうのようにすればいいでしょうか?
550デフォルトの名無しさん:2007/10/31(水) 08:01:23
自分の使ってる物も分からんのか
スレ違いだ馬鹿野郎
551デフォルトの名無しさん:2007/10/31(水) 08:39:39
C++/CLIはOKだろ。

>>549
PictureBoxの派生クラスを書けばいい。
追加 - クラス - C++クラス で作成、
ビルドした時点でツールボックスに追加されるので、
後は普通のPictureBoxと同じように配置すればいい。
552デフォルトの名無しさん:2007/10/31(水) 08:43:14
専用スレがあるのにもったいない
553デフォルトの名無しさん:2007/10/31(水) 09:28:52
VisualC++6.0ではMSDN入れないと型情報自動表示機能は使えないのでしょうか?
554デフォルトの名無しさん:2007/10/31(水) 09:39:26
MSDNなんか参照しないよ
555デフォルトの名無しさん:2007/10/31(水) 11:58:43
LRESULT から intに正しく変換する方法を教えてください
556デフォルトの名無しさん:2007/10/31(水) 12:28:14
intでキャスト
557デフォルトの名無しさん:2007/10/31(水) 16:25:21
Windows XP sp2
Visual C++ 6.0

フォームの中のボタンを押すとWindowsキーを押したようにしたいと思っています。
フックして仮想キーコードを取得するところまででき,Windowsキーのコードは確認できたのですが,
そこからWindowsキーを押したように見せる方法がわかりません。
どうすれば,Windowsキーを発行することができるんのでしょうか。
558デフォルトの名無しさん:2007/10/31(水) 16:36:42
WM_LBUTTONDOWNでも送りつけてみたら?
559デフォルトの名無しさん:2007/10/31(水) 17:00:16
>>558さん
お返事ありがとうございます。

>WM_LBUTTONDOWNでも送りつけてみたら?
実際にはどのような関数を使えばいいのでしょうか。
560558じゃない人:2007/10/31(水) 17:14:36
うーん。PostMessage()で、WM_KEYDOWN(WM_SYSKEYDOWN?)を送るというアイデアぐらいしか
思いつかない。
561デフォルトの名無しさん:2007/10/31(水) 17:20:40
>>559
>実際にはどのような関数を使えばいいのでしょうか。
PostMessage()
562557:2007/10/31(水) 17:29:05
>>560さん,>>561さん
ありがとうございます。
WM_KEYDOWN(WM_SYSKEYDOWN?)とPostMessage()
の使い方がわからないので探してみます。

名前さえもわからない状態だったので,とてもうれしいです。
うまくできたら,ご報告させて頂きます。

563デフォルトの名無しさん:2007/11/01(木) 08:43:17
文字コードがバラバラのファイルを
同じ文字コードに統一したいのですが、
どのように処理したらいいのでしょうか?

ちなみに、VC2005です。
564デフォルトの名無しさん:2007/11/01(木) 08:50:42
文字コード判別→変換
565563:2007/11/01(木) 08:53:17
>>564 すばやい回答ありがとうございます。
文字コード判別になにを使えばいいでしょうか?
566デフォルトの名無しさん:2007/11/01(木) 08:57:40
Windows的にはMLang。
だけどnkf使った方が楽。
567563:2007/11/01(木) 09:05:27
.NET の方にはなにかないですか?
568デフォルトの名無しさん:2007/11/01(木) 10:39:24
スレ違い
569デフォルトの名無しさん:2007/11/01(木) 11:13:48
>>567
死ね
570デフォルトの名無しさん:2007/11/01(木) 13:32:02
>>567
死ね
571デフォルトの名無しさん:2007/11/01(木) 14:09:14
>>567
死ね
572デフォルトの名無しさん:2007/11/01(木) 14:38:35
>>567
生きろ
573デフォルトの名無しさん:2007/11/01(木) 18:31:21
>>567
C++なんだから、そこだけネイティブで>>566とすればいいじゃない。
574デフォルトの名無しさん:2007/11/02(金) 09:24:11
WM_CREATEの中でBeginPaintって出来ませんか?
WM_PAINTじゃなく、CREATEの中でLineToとか一度だけの表示をしてしまいたいんですが・・
575デフォルトの名無しさん:2007/11/02(金) 10:27:48
いちいち聞かなくても好きなところで書けばいいよ
自分でやってみればわかるから
576デフォルトの名無しさん:2007/11/02(金) 16:09:17
ウィンドウを常に画面の右上に固定や左下に固定で表示させるのはどうしたらいいでしょうか?
CreateWindow内で座標を指定するのではなく、どのPCで開いてもちゃんと画面左上などの位置にぴったり表示させたいんです。
分かる方お願いします。
577デフォルトの名無しさん:2007/11/02(金) 16:13:46
座標を指定する
578デフォルトの名無しさん:2007/11/02(金) 16:20:15
その座標を指定するというのはディスプレイサイズが分かる関数があるんでしょうか?
579デフォルトの名無しさん:2007/11/02(金) 16:53:56
VC++って何?ってところから勉強したいんですけど、オススメの書籍ありますか?
C#は1年くらいやったんですが、VC++は初めてで・・・
580デフォルトの名無しさん:2007/11/02(金) 19:25:33
VC++って何?という状況だと勧められるものはない
581デフォルトの名無しさん:2007/11/02(金) 21:40:14
>>574-575
これくらいは、実験するよりも仕様を確認するほうがいいと思う。
http://msdn2.microsoft.com/en-us/library/ms534894.aspx
582デフォルトの名無しさん:2007/11/02(金) 21:45:32
>>578
GetMonitorInfoとかそこら辺を使う
583デフォルトの名無しさん:2007/11/02(金) 22:47:14
GetWindowRect で十分な気がする
584デフォルトの名無しさん:2007/11/02(金) 23:18:39
初心者スレでいきなり敷居の高い話をし始める>>582
585デフォルトの名無しさん:2007/11/03(土) 07:52:54
MonitorFromWindowで自分のいるモニタのハンドルとって、
GetMonitorInfoでそのモニタの作業領域を取得するだけ。
簡単だろ。
586デフォルトの名無しさん:2007/11/03(土) 09:20:02
GetWindowRect一回呼ぶだけ
587デフォルトの名無しさん:2007/11/03(土) 12:32:56
GetWindowRectのウィンドウハンドルには、何を指定すればいいのですか?
588デフォルトの名無しさん:2007/11/03(土) 13:54:10
RECT rect;
GetWindowRect(GetDesktopWindow(), &rect);
589デフォルトの名無しさん:2007/11/04(日) 02:31:20
Visual C++6.0でSTL(mapやset)を使ったコードをデバッグ情報を生成する
オプションを指定してコンパイルすると、鬼のように長くてたくさんの
警告が出ます。警告の内容は、"デバッグ情報で識別子が255 文字に切り
捨てられました(warning C4786)"というものです。

この問題を回避するには次の選択肢の中から選ぶしかないのでしょうか?

(1) 警告を表示しないようにする → 他の便利な警告を受け取ることができない。
(2) デバッグ情報を生成しない。→ デバッガが使えない。
(3) 死ぬほどたくさんの警告メッセージを我慢。→ 非常につらい。
(4) STLを使わない。→ それは無理。
590デフォルトの名無しさん:2007/11/04(日) 02:36:06
#pragma warning (disable: 4786)

が常套手段
591589:2007/11/04(日) 03:54:29
>>590
うまくいきました。感謝します。
592デフォルトの名無しさん :2007/11/05(月) 16:44:09
http://tserve01.aid.design.kyushu-u.ac.jp/~fujiki/vc_lecture/c_6.htm
のお絵かきソフトを作るページを参考にしてるんですが
「ToolBar」の「IDR_MAINFRAME」のボタンとIDを書き換えても
ページに書かれているようなIDに対応するような関数が作られず
ボタンも描いたように表示されず灰色の使用不可のような状態
になってしまいます。
VS2005stdです。
どなたか、わかるかた、VS2005ではどうしたらよいか教えていただけないでしょうか。
お願いします。
593デフォルトの名無しさん:2007/11/05(月) 16:50:01
>>592
マルチ死ね
594592:2007/11/05(月) 16:56:38
マルチしてすみません。
ただ「くだすれVisualC++(超初心者用)」のほうが1000レスいったので
こちらでも質問ささしてもらいました。
すいませんが教えてください。
595デフォルトの名無しさん:2007/11/05(月) 17:34:30
ツールバーにハンドラ追加する方法なら少し前に誰かに教えたから過去ログ見ればいい
ウイザードから追加する方法は知らん
596デフォルトの名無しさん:2007/11/05(月) 19:09:58
メモ帳で[F5]を押すと日付と時刻がペーストされますが、
Visual C++のエディタでも同じことができるでしょうか?
できるなら方法を教えてください。
597デフォルトの名無しさん:2007/11/05(月) 19:32:57
自分で[F5]を押せば分かるだろ?
598デフォルトの名無しさん:2007/11/05(月) 19:59:39
Std以上のVCならマクロで簡単に出来るよ。もちろんキーボード割り当ても可能。
599デフォルトの名無しさん:2007/11/05(月) 20:40:23
unicodeにすると
char→CStringをどうやって渡すのかわからないです。
ヒントでいいから教えていただければ、、つД`)
600デフォルトの名無しさん:2007/11/05(月) 20:46:28
CStringのコンストラクタ
601デフォルトの名無しさん:2007/11/05(月) 21:21:27
CString は TCHAR データ型をもとにしています。
プログラムでシンボル _UNICODE が定義されたときは、
TCHAR 型は 16 ビット文字型の wchar_t 型として定義されます。
それ以外は、通常の 8 ビット文字型 char で定義されます。
Unicode 環境下では、CString オブジェクトは 16 ビットの文字で構成されます。
Unicode 環境以外では、CString オブジェクトは 8 ビットの文字で構成されます
602599:2007/11/05(月) 22:46:31
>600
>601
ありがとう。
ちょいとそれを頭に入れてググル先生に聞いてみます。
603デフォルトの名無しさん:2007/11/05(月) 23:04:43
初心者は黙ってVC++でMFCでウィザードでサクサクやるのがいいですよね?
604デフォルトの名無しさん:2007/11/06(火) 00:14:49
いい
というのは何を根拠として良いと判断するんですか?>>603
605デフォルトの名無しさん:2007/11/06(火) 00:17:45
VC++がどーだ、MFCはあーだこーだ言ってないで、
サクサク作れるんだから作った方が勉強になるという意味で、
いいと思いますが。
606デフォルトの名無しさん:2007/11/06(火) 00:26:12
サクサク作れない
607デフォルトの名無しさん:2007/11/06(火) 00:32:03
MFCウイザードでさくさく作れる香具師は、
MFCウイザードがなくたってサクサク作れる。
608デフォルトの名無しさん:2007/11/06(火) 07:54:50
MFCキライなヤツが増えたな。
609デフォルトの名無しさん:2007/11/06(火) 18:13:37
ダメ!
MFCで人生を棒に振った悲しいプログラマが、いったい何人いることやら。
MFC犠牲者慰霊の塔の下に眠っている幾千幾万のプログラマたちが
成仏できずに毎晩、悲痛なうめき声をあげて助けを求めているというのに。
マイクロソフト社さえ見放した禁断の果実MFCを、なぜ今更?
もうこれ以上、犠牲者が増えるのを善良な市民として見ていられない。
忘れなさい。MFCの事は忘れなさい。記憶の底から消し去るのです。
MFCなんて見なかった。聞かなかった。この世に存在しなかった。
いいですね?わかりましたね?
610デフォルトの名無しさん:2007/11/06(火) 21:54:51
ダメ! 
.NET で人生を棒に振った悲しいプログラマが、いったい何人いることやら。
(ry
611デフォルトの名無しさん:2007/11/06(火) 22:13:12
VC++でWin32アプリならいい?
612デフォルトの名無しさん:2007/11/06(火) 23:47:36
VisualC++6 と VisualC++.NET の差がわかりません
差はないのでしょうか?
今から始めるならVC.netでいいんでしょうか?
VCに興味を持っている理由は .NET Frameworkとかの
ランタイムのインストールをしなくても動くEXEが作れるらしいから、と
DirectXでゲーム作ろうとしてもC++の参考書しかないから、なのですが
VC.NETで作ったEXEは .NET Frameworkがないと動かないものになるのですか?
613デフォルトの名無しさん:2007/11/06(火) 23:56:01
Visual C++ .NET 2002はVisual C++ 7.0、.NET 2003は7.1相当。
.NET抜きにして、C++コンパイラとしても開発環境としても機能は上がっている。

.NET Framework使うプロジェクトを作らなければ、
Visual C++ .NET 2002/2003でも.NETなしのネイティブプログラムが作れる。

ちなみに、現在の最新版は2005 (8.0)。ただ、上に書いたような事情は変わらず。
614デフォルトの名無しさん:2007/11/07(水) 00:11:39
>>613
ありなとうございまつ
早速VC++2005EEをインスコしますた

しかしネットだと.NET Framework使うプロジェクトか
HalloWorldみたいなウインドウすら出てこないのの解説ばかりでつなorz
猫でもわかるプログラミングでも観ることにするでつよ
615デフォルトの名無しさん:2007/11/07(水) 00:15:34
>HalloWorld
早くもオリジナルな要素を取り入れてるのか
616デフォルトの名無しさん :2007/11/07(水) 00:24:29
>>614
SDK入れなウィンドウの表示なんてできへんで〜
617デフォルトの名無しさん:2007/11/07(水) 00:59:03
すみませんが質問です。

大量のログをとれるようなDOSプロンプトというか、コンソールエミュレータと
いうようなものを作る場合、リッチエディットコントロールを使うのがよいので
しょうか?

それともwin32アプリにしてしまって、入出力をリダイレクトするのが良いので
しょうか?
618デフォルトの名無しさん:2007/11/07(水) 01:00:01
>>615
もまい、やさしいでつね

>>616
http://www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/
をやらないと.NET Frameworkなソフトしか作れないということですか?
619デフォルトの名無しさん:2007/11/07(水) 01:08:09
>>617
特に見栄えを気にしなくてもいいのなら、「コンソールアプリ」 にするのがいちばん簡単だよ。
ログを取るだけで、画面にスクロール表示する必要がないのなら、ふつーにウインドウアプリ
でもいいし。ログだけファイルに落とせればじゅうぶんだろ?
620デフォルトの名無しさん:2007/11/07(水) 07:29:29
>>619 レスサンクス

スクロールは使いたいですね。ログは軽く64kb以上になるので、リッチ
エディットコントロールしかないかな、と。
イベントのことはよく分かりませんけど、CLIを真似する以上はEnterキーを
見張らないとダメそうで、どうしたもんだかと悩みますね。

teratermのログ機能と、DOSプロンプトが合体したような感じが望ましいの
です。
621デフォルトの名無しさん:2007/11/07(水) 08:39:00
ログ取るのにリッチエディットコントロールが出てくるのが意味不明だったけど
それぐらいの容量なら普通のエディットコントロールでも余裕でいける
622デフォルトの名無しさん:2007/11/07(水) 21:47:52
>>621 CREATEしたときにEM_SETTEXTLIMITを投げればいい、って言ってくれればいいのに。
623デフォルトの名無しさん:2007/11/07(水) 23:12:57
AllocConsole
624デフォルトの名無しさん:2007/11/07(水) 23:19:28
上のGetWindowRect(GetDesktopWindow(), &rect);について質問です。

この関数でrect.leftをはじめ、ディスプレイサイズの取得が出来るのは分かるのですが、
それによってウィンドウの表示位置を変えていくのであれば、WinMainの中のCreateWindowの水平、垂直位置の更新をしなければいけませんよね?
その方法ってのはどうやるんですか?一応ウィンドウの雛形やCreateWindowの再描画などで調べたんですが、さっぱりでして。
625デフォルトの名無しさん:2007/11/07(水) 23:50:41
起動時に位置を設定したいならCreateWindowに好きな位置を渡すだけだし
後で変えたいならMoveWindowとかSetWindowPlacement()など。
626デフォルトの名無しさん:2007/11/07(水) 23:56:40
>>625
取り敢えずMoveWindowについて調べてぱっと記述してみたらできました。
SetWindowPlacementについてもまた調べてみたいと思います。
ありがとうございました。
627デフォルトの名無しさん:2007/11/08(木) 00:43:31
うは、Win32プロジェクトがないw
イラネw
628デフォルトの名無しさん:2007/11/08(木) 00:55:37
Windows SDKでも入れて、
あとは適当なプロジェクトを作って、適当にオプションいじっておけ。
629デフォルトの名無しさん:2007/11/08(木) 07:17:34
MUIに対応したものを作りたいのですが、
.rcconfigファイルの中身をどう書いたら良いかご存知の方はいませんか?
サンプルアプリケーションを見てみたのですが、
<resourceType typeNameId="#4"/>
の4が何を意味しているのかがわかりません。。

630デフォルトの名無しさん:2007/11/08(木) 07:30:10
C#やっている人がC++やってもわからないよね?
631デフォルトの名無しさん:2007/11/08(木) 11:09:42
>>627
貧乏人乙w
632デフォルトの名無しさん:2007/11/08(木) 20:44:10
スタンダード以上だと別途PSDK入れなくても
Win32プロジェクトが最初から選べるのに気づいた
ところでWin32プロジェクトってインテリセンスが
使えないんだが設定が悪いのか?それとも仕様?
633デフォルトの名無しさん:2007/11/08(木) 23:06:47
LNK2001: 外部シンボル ""public: virtual void __thiscall CWnd::DoDataExchange(class CDataExchange *)" (?DoDataExchange@CWnd@@UAEXPAVCDataExchange@@@Z)" は未解決です。

Visual Studio 2005でMFCのアプリケーションをコンパイルすると
上のようなエラーがいっぱいでるのです。

これはどうやって回避すればいいのでしょうか?
634デフォルトの名無しさん:2007/11/08(木) 23:12:48
ダメ!
MFCで人生を棒に振った悲しいプログラマが、いったい何人いることやら。
MFC犠牲者慰霊の塔の下に眠っている幾千幾万のプログラマたちが
成仏できずに毎晩、悲痛なうめき声をあげて助けを求めているというのに。
マイクロソフト社さえ見放した禁断の果実MFCを、なぜ今更?
もうこれ以上、犠牲者が増えるのを善良な市民として見ていられない。
忘れなさい。MFCの事は忘れなさい。記憶の底から消し去るのです。
MFCなんて見なかった。聞かなかった。この世に存在しなかった。
いいですね?わかりましたね?
635デフォルトの名無しさん:2007/11/08(木) 23:18:21
マイクロソフトは、.NETの成功に関わらず
C++の開発を進めています。
次に発売するVisual StudioのMFCには、Vista用のWindowsメッセージの追加。
XmlLiteなどなど、お楽しみがいっぱいです。
636デフォルトの名無しさん:2007/11/08(木) 23:22:34
そんなことよりもATLのopen source化をだな
637デフォルトの名無しさん :2007/11/09(金) 00:06:25
>>633
VS2005の修復で直らなければ再インスコ
638デフォルトの名無しさん:2007/11/09(金) 00:11:36
マイドキュメントのVisual Studio 2005のフォルダをまるまるノートにコピーして
プロジェクトを開いたところ,作成していたプログラムの中のラベルが全て
黒塗りに表示されてしまいました。
ビルドして実行しても黒塗りは変わりません。

直す方法はありますか?
639デフォルトの名無しさん:2007/11/09(金) 00:45:40
PSRTとかLPSTRってString型みたいなもんですか?
640デフォルトの名無しさん :2007/11/09(金) 01:22:46
>>639
ちゃうよ
641デフォルトの名無しさん:2007/11/09(金) 05:46:56
全くの無知なんですが、C・C++を覚えたいと思います。
まず何をするべきでしょうか?
642デフォルトの名無しさん:2007/11/09(金) 06:24:21
C/C++のコンパイラをインストール
このスレに来たからにはVisualC++だな
643デフォルトの名無しさん:2007/11/09(金) 06:31:52
>>642
把握d
とりあえずいろいろ調べながらいじってみます!
スレチに気付いたら黙って消えますw
644デフォルトの名無しさん:2007/11/09(金) 14:10:53
VisualC++のwindowsフォームアプリケーションで
スクリーンキーボードを作ってるんですが
初期のウィンドウを非アクティブ化することができません。
どうしたらいいでしょうか?
645デフォルトの名無しさん:2007/11/09(金) 16:13:31
>>644
初期のウィンドウってなに? キーボード?
646デフォルトの名無しさん:2007/11/09(金) 17:33:59
systemやgetchといった関数が「認識されません」というふうにエラーが出ます。
#include<windows.h>や#include<conio.h>のヘッダが登録できてないのでしょうか。
またそうであれば、やり方を教えてください。
よろしくお願いします。
647デフォルトの名無しさん:2007/11/09(金) 17:43:48
windows.hとconio.hをインクルードしてもsystemやgetchは使えない。
systemを選択してF1押すべし。
648デフォルトの名無しさん:2007/11/09(金) 17:53:24
>>647
選択とはドラッグでいいんでしょうか。
F1押すとヘルプが出るんですが、どの時点で押せばいいんでしょうか・・・
649デフォルトの名無しさん:2007/11/09(金) 18:00:11
・まず、画面に出たエラーメッセージをよく読んでみてごらん。
 読んでも分からないなら、省略せずにそっくりそのまま掲示板に貼り付けて質問しよう。
・system関数を使うのに必要なヘッダファイルは何かな?
 (あえて正解は書かないよ。自分で調べる練習しなさい。宿題です)
・getchも同様。

Visual CコンパイラはIDE統合開発環境と、コマンドラインの2種類がある。
・IDEはIDEの使い方を覚えなきゃいけないという障害は立ちふさがる。
・コマンドラインのコンパイラは環境変数の設定とかなんとかメンドクサイ。
どちらも超初心者には敷居が高い。独学はかなりの覚悟が必要。
だれか先生になってもらってくれる人がいればいいんだけどね。
650デフォルトの名無しさん:2007/11/09(金) 18:13:30
>>649
エラーメッセージは
'getch': 識別子が見つかりませんでした
'system': 識別子が見つかりませんでした
です。
ヘッダファイルは
<windows.h>
<conio.h>
だと思います。
違っていたら、調べ直すので指摘だけお願いします
651デフォルトの名無しさん:2007/11/09(金) 18:25:31
違ってます。
選択の説明しようと思ったけど指摘だけとのことなので省略。
まーがんばれ
652デフォルトの名無しさん:2007/11/09(金) 18:53:40
windowsがどっからくるのよ
stdlib
653デフォルトの名無しさん:2007/11/09(金) 19:40:50
::CreateProcessかなんかと勘違いしてるんだな
俺にはわかる
654デフォルトの名無しさん:2007/11/09(金) 20:34:42
コンパイル通りました。ありがとうございました。
実はttp://fatalita.sakura.ne.jp/TubeRPG/のサイトのlesson1を
実行したかったのですが、コンパイルは通っても画面がすぐに消え
"ハンドルされていないwin32の例外が発生しました"
と出て実行できません。
何がおかしいのでしょうか。
655デフォルトの名無しさん:2007/11/09(金) 21:36:28
そんな糞サイトの後始末頼まれても迷惑
書いた本人に直接聞けよ
656デフォルトの名無しさん:2007/11/10(土) 00:33:26
うは、声がきもい。
インデントが変態。
空白の明け方がへぼい。
思考の流れが行き当たりばったり。
657デフォルトの名無しさん:2007/11/10(土) 01:27:18
面白そうなのでオレも見てみた。
インデントが変???ぜんぜん変じゃないんだけど・・・

っつう事で、>>656 がどんな立派なコードを書いてるのか、期待age
658デフォルトの名無しさん:2007/11/10(土) 01:27:26
http://www.wisdomsoft.jp/dev/api/windows/004

#include <windows.h>

int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance ,
PSTR lpCmdLine , int nCmdShow ) {
CHAR chStr[128];

wsprintf(chStr , "インスタンスハンドル : %d" , hInstance);
MessageBox(NULL , chStr , TEXT("Kitty on your lap") , MB_OK);

return 0;
}

エラー 1 error C2664: 'wsprintfW' : 1 番目の引数を 'CHAR [128]' から 'LPWSTR' に変換できません。(新しい機能 ; ヘルプを参照) c:\documents and settings\gald.pc-p4gald\デスクトップ\sdaf4e\sdaf4e\asdf.cpp 7
エラー 2 error C2664: 'MessageBoxW' : 2 番目の引数を 'CHAR [128]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照) c:\documents and settings\gald.pc-p4gald\デスクトップ\sdaf4e\sdaf4e\asdf.cpp 8
というエラーで実行できないんだけど
なぜでございましょう?

つか、VBやらC#の型はわかりやすいのに
WCHARとかTCHERとかLPSTRとか理解しにくい型が多くて苦しい
659デフォルトの名無しさん:2007/11/10(土) 01:31:08
>>658
エラー通りだな
CHAR chStr[128];

TCHAR chStr[128];
に変更すればいいんでない?
それでエラーが出るなら、<tchar.h>をインクルードすればOK
660デフォルトの名無しさん:2007/11/10(土) 01:32:52
プロジェクトがユニコードになってるからだよ。
ANSIに変更しよう。
初心者がかならずつまづく超FAQだね。
661デフォルトの名無しさん:2007/11/10(土) 01:42:19
何回も同じ質問を見てるな
テンプレにでも入れた方がいい気がする
662若者は馬鹿者 ◆KorX0HCHGU :2007/11/10(土) 01:43:24
>>659

#include <windows.h>
#include <tchar.h>

int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance ,
PSTR lpCmdLine , int nCmdShow ) {
TCHAR chStr[128];

wsprintf(chStr , "インスタンスハンドル : %d" , hInstance);
MessageBox(NULL , chStr , TEXT("Kitty on your lap") , MB_OK);

return 0;
}

エラー 1 error C2664: 'wsprintfW' : 2 番目の引数を 'const char [26]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照)

だそうでつ

>>660
プロジェクトのプロパティ-構成プロパティ-全般 の
文字セットを「Unicode文字セットを使用する」から「設定なし」にしたら
上記のコードが動いたわけですが、
これはソースコードそのものがUnicodeだったからダメだったってことでつか?
理由がよくわからんです
663デフォルトの名無しさん:2007/11/10(土) 02:01:46
>>662
ユニコードじゃ無いアプリケーションを、ユニコードアプリケーションとしてコンパイルしようとした。

http://www.wisdomsoft.jp/dev/api/windows/003
ここには「将来性を考えて、これから文字コードは Unicode を用いるべきです。 」とか書いてあるけど・・・
初心者はユニコードアプリには手を出さんほうがいいよ。もうすこし慣れてからがいい。
よっぽど注意深くコーディングしないと、ワケワカランことになるよ。
664デフォルトの名無しさん:2007/11/10(土) 02:03:43
>>662
_T("インスタンスハンドル : %d")
とすれば、いいよ

TCHARってのは、コンパイル時に自動で、マルチバイト文字セットとUNICODE文字セットを切り替えてくれます
文字リテラル("文字列"とか'a'とか)については、_Tもしくは、TEXTマクロで、マルチバイト文字セットとUNICODE文字セットの変更を自動でしてくるようになります

ソースコードがUNICODEとか言うんじゃなく、現在扱っている文字が何なのかをコンパイラに教えてやる必要があるって事です
それを省略したら、勝手に、ANSIとかOEMとか言う文字セットとして扱われるって事です
665デフォルトの名無しさん:2007/11/10(土) 03:09:35
非ユニコードアプリとユニコードアプリの差をまず理解しないとだめってことでつね
666デフォルトの名無しさん:2007/11/10(土) 10:46:55
今、ゲーム作ってるんですけど教えてください。(ゲ製作で聞くべき?)

ゲームの画面を(ウィンドウが隠れたりしても)表示させるために
WM_PAINTで

BitBlt(hDC2,0,0,200,200,GetDC(hWnd),0,0,SRCCOPY);

てな感じでhDC2に退避させて、ウィンドウが隠れたりして再表示する時に
hDC2から持ってくる・・・という風にしたいんですが、

1.WM_PAINTの部分で画面を退避させるという事は変でしょうか?
  「普通はこうやる」っていうのがあれば教えて頂きたい。

2.退避させた画面はどの部分(ハンドラ)で戻すべきですか?
  今のところ、WM_TIMERで一定時間ごとに戻してるのですが・・・
667デフォルトの名無しさん:2007/11/10(土) 10:56:55
予めメモリDCを作っておいて、描画は全てそこへ行う。
WM_PAINTでは、そのメモリDCからウィンドウDCへのBitBltに限る。
ってのが普通。
668デフォルトの名無しさん:2007/11/10(土) 11:32:26
>>667
いまどきそんな原始的な方法なんかw
669デフォルトの名無しさん:2007/11/10(土) 11:38:55
でも666はありえないだろ。
話はそれるがReleaseDCしていないのも目に付くし。
670デフォルトの名無しさん:2007/11/10(土) 18:42:02
>>657
void main() {
671デフォルトの名無しさん:2007/11/10(土) 18:43:53
夫失敬。

>>657
void main(){
 while (1)
 {
  DrawMap();
 }
}
--
変態かどうかは兎も角、不思議なコーディングスタイルだとは思う。
672デフォルトの名無しさん:2007/11/11(日) 00:32:33
めんどくせー > VC++
Formねーじゃん

どうやってGUIつくんだよ
673デフォルトの名無しさん:2007/11/11(日) 00:46:10
珍しいVC++だね。ウチのにはForm付いてるよ。
674デフォルトの名無しさん:2007/11/11(日) 00:56:55
うちのはintも付いてない
675デフォルトの名無しさん:2007/11/11(日) 01:03:24
それVirtualConsoleだろ
676デフォルトの名無しさん:2007/11/11(日) 01:40:15
VC6.0でプログラムしています。
MFCは使わず、APIのみ。

ダイアログボックスにコンボボックスを貼り付けて
内容(数字)をリストから選択するような動作をさせたいと思っています。
ワードでフォントを変更するときのコンボボックスのようなイメージです。

VC上でダイアログボックスにコンボボックスを貼り付け、
コンボボックスのプロパティのデータ にある”リストボックス項目の入力(N)”に
選択したい数字のリストを並べれば良いかと思ったのですが
実際に動かしてみると コンボボックスの▼を押してもキーボードの↓を押しても
リストが現れません。
やり方が間違っているでしょうか?


関係ないかもしれませんが手元の参考書ではリストボックスを使用する場合の方法が書いてあり
リストボックスを初期化するにはSendDlgItemMessage()関数を使用するとのことだったので
試しにやってみましたがリストボックスではリストに文字列を追加できましたがコンボボックスでは追加されませんでした。

内容に不足などありましたらご指摘をお願いします。
677デフォルトの名無しさん:2007/11/11(日) 05:28:25
>コンボボックスの▼を押してもキーボードの↓を押しても
>リストが現れません。

ああこれね
678676:2007/11/11(日) 07:36:53
>>677
おはようございます。
良くある質問でしょうか?

申し訳ないですが質問内容が間違ってました。
▼ボタンを押すとドロップダウンリストは出ます。
しかし、中が空っぽです。
リソースエディタで入力した内容を反映させたいのですが。
679デフォルトの名無しさん:2007/11/11(日) 08:28:15
早まって答えなくてよかった
>リストボックスではリストに文字列を追加できましたがコンボボックスでは追加されませんでした

問題はこれか
68096:2007/11/11(日) 09:14:14
リソースエディタのコンボボックスまわりの内容はこんな感じです
// Dialog
//

IDD_CONFIG DIALOG DISCARDABLE 125, 110, 194, 95
STYLE DS_SYSMODAL | DS_SETFOREGROUND | DS_3DLOOK | WS_POPUP | WS_VISIBLE |
WS_CAPTION
CAPTION "CONFIG"
FONT 9, "MS Pゴシック"
BEGIN
LTEXT "コンボボックスで値を選択してください",IDC_STATIC,7,19,77,8
PUSHBUTTON "OK",IDC_CONFIG_OK,133,14,26,15
COMBOBOX IDC_COMBO2,86,16,46,71,CBS_DROPDOWNLIST |
CBS_NOINTEGRALHEIGHT | WS_TABSTOP
END

// Dialog Info
//

IDD_CONFIG DLGINIT
BEGIN                  ←コンボボックスのリストに表示したい値(1〜20の数字)
IDC_COMBO2, 0x403, 2, 0
0x0031,
IDC_COMBO2, 0x403, 2, 0
〜〜〜〜省略〜〜〜〜〜〜〜〜
IDC_COMBO2, 0x403, 3, 0
0x3931, "\000"
IDC_COMBO2, 0x403, 3, 0
0x3032, "\000"
0
END
681676=680:2007/11/11(日) 09:15:52
名前欄ミスしました。
682デフォルトの名無しさん:2007/11/11(日) 09:31:42
リソースレベルでコンボボックスのデータを定義できるのはMFCの独自機能。
リソースビューの*.rcを選んでプロパティを見てもらえば分かるが、
'Mfc Mode'という項目が用意されている。
これをFalseにすると、コンボボックスのプロパティでData部分が無効になる。
683676:2007/11/11(日) 13:38:36
>>682
なるほどそういうことでしたか。
ありがとうございます。

リストの値をSendDlgItemMessage()関数で追加できないと書きましたが
参考書で引数に LB_ADDSTRING を指定しているところで
CB_ADDSTRING を指定するようにしたところリストに追加できました。
ありがとうございました。
684デフォルトの名無しさん:2007/11/11(日) 15:40:55
質問させてください。
Visual C++ .net 2005で開発を行っています。

フォーム(Form1)やピクチャボックス(pictureBox1)に簡単なグラフを表示させたいのですが、
button1_Click等で描画すると、一度非表示になった部分の線が消えてしまいます。

Form1_Paintイベント内で描画すれば解決するのですが、毎回データを読み込んだり計算するのが
無駄に感じます。

Form1で非表示になった部分を消さないための方法はあるのでしょうか?


または、なんらかのバッファに描画して、それをForm1_Paint内で毎回読み出すという方法のほうがいいのでしょうか?
そのための方法等があれば教えてください。

よろしくお願いします。
685684:2007/11/11(日) 15:44:04
補足

線は、
 Graphics^ gr = pictureBox1->CreateGraphics();
 Pen^ pen1 = gcnew Pen(Color::Black,2);
 gr->DrawLine(pen1,10,10,200,200);
こんな感じで書いています。
686デフォルトの名無しさん:2007/11/11(日) 22:25:30
>>684
Imageに描いて、Paintイベントでgr->DrawImage
687648:2007/11/12(月) 00:13:47
>686
なるほど、ありがとうございます。

Bitmapをバッファとして使い、Graphics::FromImageで取り込んだイメージに対して、
描画を行いました。おかげでうまくいきました。


↓みたいな感じでよろしいでしょうか? 何か改善点があればご指摘お願いします。

Bitmap^ bmap1;
private: System::Void mnDraw_Click(System::Object^ sender, System::EventArgs^ e) {
Pen^ pen1 = gcnew Pen(Color::Black,2);
        Graphics^ gr1 = Graphics::FromImage(bmap1);
gr1->DrawLine(pen1,10,10,100,100);
// gr1->Dispose(); //なぜかエラーになる
Form1::Refresh();
}
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
bmap1 = gcnew Bitmap(200,200);
}
private: System::Void Form1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) {
e->Graphics->DrawImage(bmap1,100,100,200,200);
}
688デフォルトの名無しさん:2007/11/12(月) 00:15:57
>>687
Bitmap^ の 「^ 」 ってどういう意味?
689若者は馬鹿者 ◆KorX0HCHGU :2007/11/12(月) 00:16:21
Win32アプリ開発で
VSの出力の部分にウインドウメッセージを表示したいのですが
.netでいうSystem.Diagnostics.Debug.Printに相当する機能はないですか?
690デフォルトの名無しさん:2007/11/12(月) 00:18:17
>>689
ドットネットの質問は他所でやれ馬鹿者!
691デフォルトの名無しさん:2007/11/12(月) 00:24:38
>>690には>>689が”ドットネットの質問”に見えるらしいw
692684:2007/11/12(月) 01:09:01
>688
自動でガーベージコレクションをやってくれるようです。ようは、使い終わったら勝手にメモリを開放してくれるらしい。

693デフォルトの名無しさん:2007/11/12(月) 03:14:25
>>692
なるほどー 2005からの機能ですね
694デフォルトの名無しさん:2007/11/12(月) 08:44:30
win32APIで虫眼鏡のプログラムを作ってます。
メモリデバイスコンテキストでマウスカーソル周辺を拡大したものを
ディスプレイのデバイスコンテキストに転送してるんですが、
マウスを移動させたときに先ほど拡大した部分を元に戻して
移動先のマウスカーソル周辺をまた拡大という風にしたいんです。

ですが、毎回GetDC(0)をしたとしても拡大した後のディスプレイでは初期化できないし、
hdc2という二つ目のデバイスコンテキストに拡大前の状態を退避させて
hdc1に復活させようと思ったのですがうまくいきません。
さらに、メニューを開いたり新たにソフトを起動させたりと、
刻々と変化するディスプレイの状態を追いかけつつ拡大できるようにしたいのです。

探し方が悪いのかもしれませんが、
いろいろ検索しましたが良い解決法が見つかりませんでした。
それに虫眼鏡のプログラミングを解説してるサイトもなさげだし・・・。

このような場合、どのような方法を用いればいいのでしょうか?
よろしくお願いします。
695デフォルトの名無しさん:2007/11/12(月) 09:49:55
MSDNのサンプルじゃダメなの?

/****************************** Module Header *******************************
* Module Name: zoomin.c
*
* Microsoft ZoomIn utility. This tool magnifies a portion of the screen,
* allowing you to see things at a pixel level.
*
* History:
* 01/01/88 Created.
* 01/01/92 Ported to NT.
* 03/06/92 Cleanup.
*
****************************************************************************/
696デフォルトの名無しさん:2007/11/12(月) 10:35:31
一応
.netを使ったC++/CLI は、普通のC++とは全く別物
.net使いたいならC#がいいと思う
697デフォルトの名無しさん:2007/11/12(月) 12:45:26
argcとargvについて教えてください。
698694:2007/11/12(月) 13:27:05
>>695
そのページってどこを探したらありますかね?
MSDNのサイト調べても見あたらなかったんですが…。
教えて君で申し訳ありません。
699デフォルトの名無しさん:2007/11/12(月) 16:26:41
>>698
Platform SDKはインストールしてる?
700デフォルトの名無しさん:2007/11/12(月) 17:51:17
Visual Studio 2005を使って、DirectXプログラムを作ろうとしてます。
ちなみにOSはWindowsXP Home Editionです。

ネット上の解説サイトで、Visual C++ Express Editionを使って
Windowsアプリケーションを作成する場合にはPlatform SDKが必要と書いてあるんですが、
Visual Studio 2005を使う際にもPlatform SDKをインストールしておいたほうが良いでしょうか?
701デフォルトの名無しさん:2007/11/12(月) 17:58:14
今ならPlatform SDKよりWindows SDKお勧め。
DirectXには、DirectX SDKが必要。
ただし、DirectShowには上2つの内どちらかが必要。
702デフォルトの名無しさん:2007/11/12(月) 18:04:12
>>701
ありがとうございます。

DirectShowが何かよくわかりませんが、
解説本がPlatform SDKで進めているので、
これとDirectX SDKでやってみます。
703デフォルトの名無しさん:2007/11/12(月) 18:20:49
VisualC++ Expressでプログラム製作をしています。
プログラム実行中にコードを書き換えてAlt+F9を押すと、動的にプログラム
の内容を変えてくれますが、ボタンを押しても出来ない時があります。
これは何が原因なのでしょうか?
704700:2007/11/12(月) 20:24:35
度々すみません。
DirectXのテストをしようと、
D:\Program Files\Microsoft DirectX SDK (November 2007)\Samples\C++\Direct3D\Tutorials\Tut01_CreateDevice\CreateDevice.cpp
を自分のプロジェクトフォルダにコピー、既存の項目を追加して、
ソリューションのビルドをしてみると以下のエラーが出ました。

CreateDevice.obj : error LNK2019: 未解決の外部シンボル _Direct3DCreate9@4 が関数 "long __cdecl InitD3D(struct HWND__ *)" (?InitD3D@@YAJPAUHWND__@@@Z) で参照されました。
C:\Documents and Settings\(ユーザ名)\My Documents\Visual Studio 2005\Projects\d3dtest01\Debug\d3dtest01.exe : fatal error LNK1120: 外部参照 1 が未解決です。

そこで、Direct3DCreate9を含む「d3d9.lib」をプロジェクト名→プロパティ→リンカ→入力の「既存の依存ファイル」に追加したのですが、
まだ同じエラーが起こります。
D:\Program Files\Microsoft Platform SDK\Bin/Lib/Includeのパスは追加したのですが、
他に何が原因なんでしょうか?
705デフォルトの名無しさん:2007/11/13(火) 05:16:16
> DirectXには、DirectX SDKが必要。 
706700:2007/11/13(火) 09:42:22
色々と試行錯誤してるうちに上手くいったようです。
ご迷惑かけました。

>>705
もうインストールしてます。
D:\Program Files\Microsoft DirectX SDK (November 2007)\Samples\C++\Direct3D\Tutorials\Tut01_CreateDevice\CreateDevice.cpp
があるんですから。
707デフォルトの名無しさん:2007/11/13(火) 09:53:11
色々と書いて、具体的に何が効いたのか書けないようでは
また同じことやるな。
708デフォルトの名無しさん:2007/11/13(火) 12:40:32
break文がきかないことがたまにあるんですが
どういった場合があげられるのでしょうか
例だとこんな感じです
tesはワーカースレッド等でTRUEにします

tes=FALSE
while(1){
while(1){
if(tes!=FALSE){
break;
}
}
tes=FALSE;
break;
}
709デフォルトの名無しさん:2007/11/13(火) 12:43:16
別のスレッドがこのループ内tesをFALSEに書き換えた時
710708:2007/11/13(火) 12:44:07
リアルタイムでログを吐き出してみたのですが
tesはTRUEでした
711デフォルトの名無しさん:2007/11/13(火) 13:32:44
くだらないこと気にするとハゲる
712デフォルトの名無しさん:2007/11/13(火) 14:17:44
tesの読み込みが最適化で消えている可能性は?
713デフォルトの名無しさん:2007/11/13(火) 14:19:46
文盲か?
たまにあるんですがと書いてるだろうが
714デフォルトの名無しさん:2007/11/13(火) 14:41:30
気のせい
715デフォルトの名無しさん:2007/11/13(火) 20:16:53
volatile付けとけ
716デフォルトの名無しさん:2007/11/13(火) 21:14:07
リソースビューでツリーに表示されるリソースのIDを " で囲っておかないとコンパイル時に読み込めない(?)みたいなのですが
どういう理由でしょうか?回避方法はあるでしょうか?
717デフォルトの名無しさん:2007/11/13(火) 21:25:28
囲んでも囲まなくてもどっちでも可能
718716:2007/11/13(火) 21:56:32
>>717
そのはずだと思うのですが
” で囲まない場合、ビルド時にエラーは出ませんが実行しても
そのリソースが表示されません。
ビルド時に読み込めていないのではないかと思っているのですがどうでしょうか?
リソースビューのツリーには表示されないリソース、例えばダイアログの中のエディットボックスなどは " で囲まなくても
ちゃんとビルドされています。
719デフォルトの名無しさん:2007/11/13(火) 22:23:10
>>717の説明は間違ってはいないが、
ソース側もそれに合わせて直さないと動かないぞ。

// 囲まずに宣言(リソースはresource.hで宣言されたIDで識別される)
IDB_BITMAP
LoadBitmap(hinst, MAKEINTRESOURCE(IDB_BITMAP));

// 囲んで宣言(リソースは文字列で識別される)
"IDB_BITMAP"
LoadBitmap(hinst, _T("IDB_BITMAP"));

こんな感じで。
720デフォルトの名無しさん:2007/11/14(水) 01:00:36
>>719
うまくいきました。
ありがとうございました。
721694:2007/11/14(水) 01:37:06
>>695さんのサンプル探して見てみたんですが
複雑で何がなんだかさっぱりって感じで・・・。
どなたか>>694の質問なんですが
アドバイスいただけないでしょうか?
ヒントだけでもいいので・・・。
722デフォルトの名無しさん:2007/11/14(水) 11:25:14
マイクロソフトの公式から
iso版 Visual C++ 2005 ExpressをCDに焼いてから
インターネットつないでいないパソコンにインストールして

その後 インターネットにつながっているパソコンから登録して
ライセンスキーもらってそのコードでライセンス登録いけるのかな
723デフォルトの名無しさん:2007/11/14(水) 12:06:14
>>722
ライセンスキーはない。ネットでの登録は任意。
プロジェクトを1つ作ってセーブすると登録うんぬんのメッセージは出なくなる。
724デフォルトの名無しさん:2007/11/14(水) 14:20:38
30日とかうんぬんかいてたけど30日後使えるのかな
725デフォルトの名無しさん:2007/11/14(水) 15:04:13
>>721
どの辺がうまくいかないの?
技術的にはそんなに難しいところは無いと思うけど。
726デフォルトの名無しさん:2007/11/14(水) 18:26:33
CDialogを派生したダイアログにて
エディットボックスをダイアログ表示時の
フォーカス初期位置にしたいのですが
どうすればいいのでしょうか?
727デフォルトの名無しさん:2007/11/14(水) 20:19:21
VisualStudio6.0上でC++を使って組んでいるのですが、
デバッガで変数の中身を覗く際std::vectorの中身が覗けなくて困っています
First。つまり最初の要素だけは見えるのですが…

固定長配列の時のように、vectorの中身を気軽に覗く方法はないでしょうか?
728デフォルトの名無しさん:2007/11/14(水) 20:32:54
2005なら普通に見れるよ^^
729デフォルトの名無しさん:2007/11/14(水) 20:43:37
自分で作ったコンテナクラスをデバッガで、中身を気軽に覗く方法はないでしょうか?
730デフォルトの名無しさん:2007/11/14(水) 20:47:01
autoexp.datで調べてみるといいよ^^
731デフォルトの名無しさん:2007/11/14(水) 20:50:08
質問させてください。
Visual C++ 9.0(日本語版)使ってるのですが、
コンパイル時のエラーメッセージが英語で出ます。
日本語で表示するようにしたいのですが、
可能であれば、やり方教えてください。。

例)'a' : undeclared identifier
732デフォルトの名無しさん:2007/11/14(水) 23:05:31
β使っててそんなこと聞くなよ
733721:2007/11/14(水) 23:53:33
>>725
カーソルを移動させたときに以前の座標で拡大していた部分を元に戻したいんです。
元に戻すために、拡大していない画面をどのように保存したらいいのかわからないんです。
それとももっとほかに良い方法あるんでしょうか?

734デフォルトの名無しさん:2007/11/15(木) 02:58:15
275じゃないけど、元に戻したら駄目なんじゃないの?古い情報になるし。
>>694の仕様を見る限り、拡大された領域にある個々のアプリを無効化して
再描画して貰うしかないんじゃないかな。相手が自分で再描画を繰り返す
場合は綺麗に動かないと思うけど。

仕様に無理がある気がする。
735デフォルトの名無しさん:2007/11/15(木) 08:59:35
>>726
タブオーダーの設定じゃ、行かないんだっけ?

姑息な方法だと、WM_PAINTのハンドラで
最初の一回だけCDialog::GotoDlgCtrl(xxx)
736デフォルトの名無しさん:2007/11/15(木) 14:04:37
WM_INITDIALOG で設定して0を返せばいいんじゃなかったっけ。
737デフォルトの名無しさん:2007/11/15(木) 14:05:08
ってCDialogってことはMFCか
OnInitDialog()ね
738デフォルトの名無しさん:2007/11/15(木) 19:39:41
XPでVC++2005使っています
どうすれば彼女ができますか?
739デフォルトの名無しさん:2007/11/15(木) 20:05:23
XPもVCも窓から投げ捨てろ
パソコンから一切手を引け
2chにも来るな
740デフォルトの名無しさん:2007/11/15(木) 21:15:55
COMオブジェクトのDLLを#importすればtlhが作られて関数のシグネチャとかがわかりますが、
一々#importするのは面倒なのでDLLにどんな関数やクラスが含まれているかを閲覧するソフトを知りたいんですが
どなたかご存知ありませんかね?
741デフォルトの名無しさん:2007/11/15(木) 21:37:57
OLE-COM Object Viewerはどう?
VC++に付いてきた気もするが、
なければPlatform SDKやWindows SDKを入れれば付いてくる。

あとは.NET 2002以上なら参照設定してみるとか、
オートメーションならExcelほかVBAのオブジェクトビューアなんて手もある。
742デフォルトの名無しさん:2007/11/15(木) 22:26:15
>>741
どうもありがとうございます
一応目的は達成できました。この手のdllはType Libraryというのですね…
参照は.NET専用だからnative C++では使えないっぽいですね
743デフォルトの名無しさん:2007/11/16(金) 05:18:20
 バーチャルC++2005エクスプレッソをインストロールしたら
レジスターが書き換えられてディスクトップがぐちゃぐちゃになって、
エキスプローラでホルダーをクィックしても動かなく
なってしまいました。どうすればレジスターを修復で
きますか? ソフトはWindous95で機種はBMWの
アクティバです。接続環境はフレッシュISBNです。
 ヤッホーやゴーグルなどの検索で調べても解らないので
ツーチャンネルの皆様、ご指導よろしくお願いします
744デフォルトの名無しさん:2007/11/16(金) 09:21:47
>>739

#include <stdio.h>
void main(){

while(1){
printf ("大好き! \n");
}

}
745デフォルトの名無しさん:2007/11/16(金) 09:21:56
sage
746デフォルトの名無しさん:2007/11/16(金) 09:22:21
>>739 ×
>>738
747デフォルトの名無しさん:2007/11/16(金) 10:42:02
>>746
?
748デフォルトの名無しさん:2007/11/16(金) 12:07:39
>>747
!
749デフォルトの名無しさん:2007/11/16(金) 12:36:11
>>748
750デフォルトの名無しさん:2007/11/16(金) 17:16:02
>>749
( ゚д゚ )
751デフォルトの名無しさん:2007/11/16(金) 17:21:09
>>750
"-"
752デフォルトの名無しさん:2007/11/16(金) 17:35:14
>>753
753デフォルトの名無しさん:2007/11/16(金) 18:09:23
>>752
754デフォルトの名無しさん:2007/11/16(金) 20:52:29
えろすぎるぞ
755デフォルトの名無しさん:2007/11/17(土) 11:33:12
XP,VC++2005でSDKでのウィンドウ作りで
グループボックスを作りそれにボタンやリストを貼り付けたのだが
メニューやボタンなどのアクションをしても
普通の動きをせず、ウィンドウが再描写?されません。

どうしたら回避できるでしょうか?
756デフォルトの名無しさん:2007/11/17(土) 12:03:55
意味不明。ソースupしる。
757デフォルトの名無しさん:2007/11/17(土) 12:59:13
自重しろ
758デフォルトの名無しさん:2007/11/17(土) 18:05:30
デバッグで変数の最大値をウォッチすることはできるのでしょうか?
とりあえず値を出力に出しているのですが
何千ループもするので大量の数字が出てきます.
最大値だけチェックしたいのでたくさん数字が出てもあまり必要ないのです.

ソース内にmax関数を入れてそれで最大値をとればいいのですが
あまりソースには書きたくないのでデバッガで何とかウォッチする方法が知りたいです.
759755:2007/11/17(土) 18:06:58
初心者なので何が因果してるかわからないのですが
作成部とアクション部を載せると
swich(message) {
case WM_CREATE :
 // 要素作成
 Create();
 break;
  ・
  ・
void Create() {
HWND hButton, HWND hGroup;
// ウィンドウに貼り付ける
hGroup = CreateWindow("BUTTON", TEXT("testgroup"),
WS_CHILD | WS_VISIBLE | BS_GROUPBOX,
20, 20, 170, 170, hWnd, (HMENU)ID_BUTTON, hInst ,NULL);
// グループボックスに貼り付ける
hButton = CreateWindow("BUTTON", "test",
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
90, 80, 40, 30, hGroup, (HMENU)ID_BUTTON, hInst ,NULL);
CreateList(hGroup);
}
続く・・・
760755:2007/11/17(土) 18:10:30
void CreateList(HWND hGroup) {
LV_COLUMN lvcol;
LV_ITEM item;
// グループボックスに貼り付ける
g_hList = CreateWindowEx(0, WC_LISTVIEW, TEXT(""),
WS_CHILD | WS_VISIBLE | LVS_REPORT,
20, 20, 100, 50, hGroup, (HMENU)ID_LISTVIEW, hInst, NULL);
// リストヘッダ1に名前挿入
lvcol.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
lvcol.fmt = LVCFMT_LEFT;
lvcol.cx = 50;
lvcol.pszText = TEXT("名前");
lvcol.iSubItem = 0;
ListView_InsertColumn(g_hList, 0, &lvcol);
// リストヘッダ2に名前挿入
lvcol.cx = 50;
lvcol.pszText = TEXT("住所");
lvcol.iSubItem = 1;
ListView_InsertColumn(g_hList, 1, &lvcol);
}
続く・・・
761755:2007/11/17(土) 18:12:16
ウィンドウ作成後、アクションを受ける
case WM_COMMAND:
 switch(LOWORD(wParam)) {
  case IDM_status: // リソーススクリプトで作成したメニューID
  ・
   ・
   break;
  case ID_BUTTON:
   SetList();    // リストにアイテムを追加する関数
   break;
 }
break;
メニューアイテムやボタン等でアクションを起こすと
結果が適応されずメニューアイテムが消えずに残ったり
ボタンのアクションをしてくれません。

その後、ウィンドウを移動させると
ウィンドウが再描写され?結果が表示されます。
(メニューアイテムからリストにアイテムを追加するというのを
作ったので、それは再描写後表示されます。
ボタンの結果は表示しれくれませんが)

グループボックスは後からつけたもので、
これをつける前、リスト等は直接ウィンドウに貼り付け
期待した動作をしてくれていました。

グループボックスをつけても上の動作をするためには
どうしたらいいでしょうか。

長くなってしまいましたがよろしくお願いします
762デフォルトの名無しさん:2007/11/17(土) 19:38:14
グループボックスはコンテナでは無い。
ラベルと同じようなものだと考えればいい。
グループボックスは必要な部分しか描画しないので、
中に他のコントロールがあっても問題無く描画される。

何故ボタンの一スタイルなのかは永遠の謎だけどな。
763755:2007/11/17(土) 20:14:41
返信ありがとうございます。

つまり全てウィンドウに直接貼り付ければいいと
いうことですね。

なにぶん自宅に環境がないため確認できないですが。。。

確かにボタンというのは謎ですね。
グループボックスを作る際、調べるときに
ボタンはさすがに思いつきませんでしたよ・・・
764デフォルトの名無しさん:2007/11/18(日) 20:07:55
Win32のほうを教えてくれるのでしょうか?
それともMFCでつか?
765デフォルトの名無しさん:2007/11/18(日) 20:57:01
>>3 を嫁
766OPENCV:2007/11/19(月) 00:07:56
はじめまして。

IplImage *img = cvLoadImage("hello.jpg");
int wid = (*img).width;
int hei = (*img).height;
int sirokuro[wid][hei];

というコードが通りません。
「error C2057: 定数式が必要です。
サイズが 0 の配列を割り当てまたは宣言しようとしました。
'sirokuro' : 添字がありません。」
と言われてしまいます。

IplImageとは
typedef struct _IplImage
{
  途中省略
int width; /* image width in pixels */
int height; /* image height in pixels */
}
IplImage;
と宣言されているものです。

一番上のコードの3行目の後でcoutによりwidやheiの値を確認すると、
思い通りに画像のwidth,heightが出力されます。

しかし4行目の配列宣言が通りません。

分かる方、教えてください。よろしくお願いします。
767デフォルトの名無しさん:2007/11/19(月) 00:50:03
new したら?
768デフォルトの名無しさん:2007/11/19(月) 01:01:53
int *sirokuro = new int[wid*hei];

sirokuro[x+y*wid] = なんとか
769OPENCV:2007/11/19(月) 01:50:47
>>767
>>768
ありがとうございます。newで解決できそうです。

newはC言語でいうmallocだと思っています。
動的にメモリを確保するためのものだと。

しかし今回、sirokuroというint型二次元配列はずっと使うため、
解放しなくてもいいと考えています。

なぜnewが必要になるのか、分かる方がいらっしゃいましたら
教えてください。よろしくお願いします。
770デフォルトの名無しさん:2007/11/19(月) 01:57:39
コンパイル時には配列の要素数が分からないから。
771OPENCV:2007/11/19(月) 02:17:31
>>770
わかりやすく簡潔な回答、ありがとうございます。

すべて疑問が解決しました。みなさまありがとうございました。
772デフォルトの名無しさん:2007/11/19(月) 10:09:48
どうでもいいけど、
(*img).width;

img->width;
じゃいかんのか?
773デフォルトの名無しさん:2007/11/19(月) 10:15:58
ポインタ経由でoperator()を呼び出すときに、短くなるように(*hoge)()みたいにすることはあるが
それ以外は単に冗長になるだけだと思うなぁ
774デフォルトの名無しさん:2007/11/19(月) 13:49:19
演算子のオーバーロードとかいらなくない?
話がややこしくなるだけだろ、これ。
775デフォルトの名無しさん:2007/11/19(月) 14:07:05
演算子のオーバーロードはいる
簡単になるからな
複素数や行列や文字列をオーバーロードで同じ書き方が出来る
776デフォルトの名無しさん:2007/11/19(月) 15:32:03
演算子のオーバーロードって何ですか?
777デフォルトの名無しさん:2007/11/19(月) 15:53:38
>>776
A、Bを行列のデータ(class)とするとき 行列の積を A*Bで出来るようにするやつ
778デフォルトの名無しさん:2007/11/19(月) 16:28:11
いい加減スレ違い
779デフォルトの名無しさん:2007/11/19(月) 16:43:11
VC++でWin32apiのプログラムを書くのですが

通常のwin32プロジェクトとダイアログベースでは
プロシージャなどの書き方等、色々と変わるようですが
ダイアログベースでは出来ないこと、不都合な点というのはあるのでしょうか?

780デフォルトの名無しさん:2007/11/19(月) 16:56:21
両方まぜて使えるからどうでもいい
781デフォルトの名無しさん:2007/11/19(月) 22:07:06
>>771
あと、スタックに画像みたいなでかいものを確保したら、
スタックオーバーフローする場合があるから。

C99だとint sirokuro[wid][hei];ができるし、
固定値で多めにとっておくとかした場合にね。
782デフォルトの名無しさん:2007/11/19(月) 23:38:06
VC++2005で作成したプログラムが、他のVC++2005をインストールしていないPCで起動しません。

「このアプリケーションの構成が正しくないため、アプリケーションを開始できませんでした」
というエラーメッセージが返ってきてしまいます。

ググってみたところ、プロパティ→C/C++→コード生成→ランタイムライブラリを、「マルチスレッド(/MT)」
にすればいいと書いてあったので、変更してビルドしてみたところ、今度は

「MSVCR80.dll」が見つからなかったため、このアプリケーションを開始できませんでした」
というエラーメッセージが返ってきてしまいました。

ググってみても、やはりマルチスレッド(/MT)にしろといった解決法しか見つかりませんでした。

MSVCR80.dllに依存しない.exeを作成するにはどうすればよいでしょうか。
783782:2007/11/20(火) 00:00:35
追記です。

msvcr80.dllを
C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_0de06acd
からコピーして

C:\WINDOWS\system32
にコピーしてみたところ

「アプリケーションを正しく初期化できませんでした(0x80000003)。」
というエラーメッセージが出てしまいました。

msvcr80.dllを参照できるようにしても起動出来ないということでしょうか…。
784デフォルトの名無しさん:2007/11/20(火) 00:09:51
さすがに>>782なら超初心者の俺でも分かるぜ
それはデバックビルドをしてるからだ。2005ならメニューバーのとこにdebugって書いてあるのを、
releaseに直して、ちゃんと文字セットも直してビルドして、releaseフォルダに出来た*.exeを配布すればおkだぜ
785デフォルトの名無しさん:2007/11/20(火) 00:55:15
教えてください。

VC6で単精度な浮動小数点の
正規化数・非正規化数を区別したいんですけど
専用の関数ってあるんでしょうか?
やっぱり自前でビットをマスクした方が早いんでしょうか?
786デフォルトの名無しさん:2007/11/20(火) 01:45:11
>>782
そんな設定変えなくとも、ランタイムをインストールすればいい。msvcr80.dllがインストールされる。
SP1が当たっているかどうかで別ファイルになっていることに要注意。
SP1 ttp://www.microsoft.com/downloads/details.aspx?FamilyID=200b2fd9-ae1a-4a14-984d-389c36f85647&DisplayLang=ja
無印 ttp://www.microsoft.com/downloads/details.aspx?FamilyID=32bc1bee-a3f9-4c13-9c99-220b62a191ee&DisplayLang=ja

>>783
http://msdn2.microsoft.com/ja-jp/library/ms235624(VS.80).aspx
VC++ 2005のランタイムからはmanifestを書かないと使えなくなった。
msvcr80.dllなどはガードが固く、そうやって無理に読み込ませようとすると、そういう風にエラーになる。

manifestに対応しているWindowsはXP/2003以降なので、
それ以前のなら今までどおりのSystem32のようなパスの通った所に置くだけで使える。
787デフォルトの名無しさん:2007/11/20(火) 11:11:02
質問があります。環境はVS2003.NETです。

ずっとC#漬けの毎日だったんですがC++もやる必要があり、久しぶりに新規ソリューション作って
テストプログラムを作りました。
内容は、環境変数の内容をリストボックスに表示するというものです。

private: System::Void button1_Click(System::Object * sender, System::EventArgs * e)
{
  string  s = getenv(textBox1->Text);
  listBox1->Items->Add(textBox1->Text + " = " + s);
}

これをコンパイルすると
error C2065: 's' : 定義されていない識別子です。
error C2065: 'string' : 定義されていない識別子です。
って出ます。
こんな初歩的なところでつまづくとは思わんかった…。
何がいけないんでしょうか?
788デフォルトの名無しさん:2007/11/20(火) 11:20:43
stringが何なのかわからないと言っている。

C#ではstringはSystem.Stringのエイリアスのようだが
C++/CLIではそうなってない。
789デフォルトの名無しさん:2007/11/20(火) 11:24:43
#include <iostream>
using namespace std;

class Rocket
{
int f; // 燃料
int v; // 速度
int h; // 高度
public:
Rocket()

{
f=100;
v= 0;
h= 0;
}

790デフォルトの名無しさん:2007/11/20(火) 11:25:33
void Accel(int b)
{
f = f - b ; //fのあたいを十減らす
v = v + b ; //vの値を十増やす
h = h + v ; //hの値をvだけ増やす
}
int GetF() const
{
return f;
}
};

int main()
{
Rocket x;
x.Report ();
int a;
// 燃料がなくなるまで以下の4行を繰り返す。
while (x.GetF() > 0)
{
cout << "どれだけ加速する";
cin >> a;
x.Accel (a) ;
x.Report ();
}
}
791787:2007/11/20(火) 11:28:02
>>788-790
ありがとうございます。
#include <iostream>
using namespace std;
この定義が必要なんですね。
なんとめんどくさい…。
792デフォルトの名無しさん:2007/11/20(火) 11:31:51
>>790
何がしたいの?
# どうでもいいけど、燃料を消費した分丸々速度を増やせるって無茶苦茶過ぎると思うぞ。

>>787
つ[include]
# 790は関係ないぞw
793 ◆ftmQ4YNapU :2007/11/20(火) 13:03:24
ダブルバッファリングがうまくいかないんですが何故でしょうか。


case WM_CREATE:

 hDC = GetDC(hWnd);
 hBackDC = CreateCompatibleDC(hDC);
 hBitmap1 = CreateCompatibleBitmap(hDC, 450,396);
 SelectObject(hBackDC, hBitmap1);
 SetTimer(hWnd, 1, 1000, NULL);
 return TRUE;


case WM_TIMER:
 InvalidateRect(hWnd,NULL,FALSE);
 return TRUE;


WM_PAINT
 hDC = BeginPaint(hWnd,&ps);
 BitBlt(hDC,0,0,450,396,hBackDC,0,0,SRCCOPY);
 EndPaint(hWnd,&ps);
 return 0;
794 ◆ftmQ4YNapU :2007/11/20(火) 13:04:11
ソースはおおまかにこんな感じです。
SetTimerで1秒毎に画面の再描画をしているので、画面がちらついてしまいそれを抑えようと思ってダブルバッファリングを加えようと思ったんですが、
WM_PAINT内に
 hDC = GetDC(hWnd);
 hBackDC = CreateCompatibleDC(hDC);
 hBitmap1 = CreateCompatibleBitmap(hDC, 450,396);
 SelectObject(hBackDC, hBitmap1);
を記述すれば普通に画面が表示されるんですが、それでは時間経過と共にページファイルが凄い事になってしまいます・・
調べていくと元々ダブルバッファリングはWM_CREATEでやるようで、
WM_PAINTではBitBltをするだけのようですが、それがうまくいきません。
Run-Time Check Failure #3 - The Variable 'hBackDC' is being used without being defined.とエラーダイアログが出ます。
WM_PAINT内を消すと空ウィンドウですがエラーはでなくなります。
長くなりましたが、是非お願いします。
795超初心者:2007/11/20(火) 13:21:43
アプリケーションの外観をダイアログではなく画像などを使ってデザインしたいのですがどうやれば良いのでしょうか?
的外れな質問かもしれませんがヒントだけでもください
796デフォルトの名無しさん:2007/11/20(火) 13:32:31
ヒント:スレ違い
797デフォルトの名無しさん:2007/11/20(火) 13:32:53
>>795
マウスとキーボード使えばできるよ
798デフォルトの名無しさん:2007/11/20(火) 13:34:58
>>794
WinAPI知らんからよく判らんが、
・CreateDCしたオブジェクトはどっかで解放するべきではないの?
・hBackDCが有効かどうかテストしてからBitBltすればいいんでないの?
とは思った。
799超初心者:2007/11/20(火) 13:35:43
スレ違いなんですか?ということは他の言語でも共通してやる方法があるってことですか?
800デフォルトの名無しさん:2007/11/20(火) 13:38:16
>>799
まずは日本語から勉強したほうがいいみたいだな

それに回答者はエスパーじゃない
「具体的に」どうしたいのか?が無いと答えられない
801デフォルトの名無しさん:2007/11/20(火) 13:39:56
>>799
>1を見れば判るように、ここはプログラミング以前の質問をする場所ではありません。
802デフォルトの名無しさん:2007/11/20(火) 14:07:32
>>793
hBackDCはどこでどんなふうに宣言してる?
803超初心者:2007/11/20(火) 14:13:07
普通出来上がったアプリケーションはダイアログベースのものだと思うのですが
スキンでデザインをカスタマイズしたようにしたいんです
804デフォルトの名無しさん:2007/11/20(火) 14:15:28
>>798
開放ってのはreleaseDCですか?

>>802
LRESULT CALLBACK WndProc(HWND hWnd,
UINT message,
WPARAM wParam,
LPARAM lParam)
{
HDC hDC,hMemDC,hBackDC,memDC;
PAINTSTRUCT ps;

上記の位置でまとめて宣言してます。
805デフォルトの名無しさん:2007/11/20(火) 14:17:26
>>804
そりゃ無理でしょ。
CREATE時のDCとPAINT時のDCは別物じゃん。
そのプロシージャ使うウィンドウが1つしかないなら、とりあえずstaticつけて試してみ。
806デフォルトの名無しさん:2007/11/20(火) 14:23:00
>>803
グラフィカルな画面を作りたいってことなら、DotNetMagicなどのライブラリを使えばいいんじゃないか。
もしくはコンポーネントごとにオーナードロー使って自分で描画するとか。
807デフォルトの名無しさん:2007/11/20(火) 14:27:34
>>805
できました!
WndProcの中で使うのでstaticはいらないのかと思ってたんですが、必要だったんですね^^;
それと、ついでの質問になってしまうんですが、今ダブルバッファが出来たんですが、時計の表示が動かなくなってしまいました。
case WM_TIMER:で InvalidateRect(hWnd,NULL,FALSE);を書いてるんですが、WM_PAINTに時間表示がないからですよね?
ウィンドウの塗りつぶしをしているんですが、WM_PAINTでBitBlt以降に表示を追加すると、塗りつぶしが消えてしまうんです;
これはどう回避したらいいでしょうか?
808デフォルトの名無しさん:2007/11/20(火) 14:37:24
塗りつぶしが消えるというのがよくわからん。
SetTextModeで TRANSPARENT 指定するとか?
809デフォルトの名無しさん:2007/11/20(火) 15:10:33
あと>>798の言うように、WM_PAINT内でCreateしたなら、そこでDeleteもやっとけば
ページファイルがどうのってのはなくなると思うよ。
GetしたらRelease、CreateしたらDelete。
WM_CREATEで作ったのならWM_DESTROYあたりで
810デフォルトの名無しさん:2007/11/20(火) 15:10:34
塗りつぶしじゃなく、WM_PAINT内に時計描画がないので、時計が動かなくなります。
Rectangle()などを使って、背景に色を塗ってから文字表示などしているんですが、BitBlt以降に文字表示をしてしまうと、
文字の周りが白くなってしまうんです。
811デフォルトの名無しさん:2007/11/20(火) 15:14:41
>>810
>808
812808:2007/11/20(火) 15:31:45
ああごめん、SetBkMode()だな。
SetBkMode(hDC, TRANSPARENT);
813デフォルトの名無しさん:2007/11/20(火) 15:31:59
>>811
そのSetTextModeですが、識別子が見つからないといわれるのは何故でしょう?
814デフォルトの名無しさん:2007/11/20(火) 15:33:21
SetTextColorとSetBkModeが混ざっただけだ。
TRANSPARENTで探せば見つかったと思うが・・・
815デフォルトの名無しさん:2007/11/20(火) 15:43:01
レスずれちゃいましたね。
SetBkならできました。教えて頂いてかなり進歩できました。
ありがとうございました。
816デフォルトの名無しさん:2007/11/20(火) 17:20:43
質問させてください。
環境は VS2003 C++ です。

環境変数を取得してリストボックスに表示する処理を作っています。

listBox1->Items->Add( getenv(textBox1->Text) );

としたい所なのですが、キャストがらみのエラーが出るので

CString  cs(textBox1->Text);
std::string  s = cs + " = " + getenv(cs);
System::String*  s2 = s1.c_str();
listBox1->Items->Add(s);

としました。
一応、動くからいいのですが、C#であれば1行ですむような処理です。
なんでC++だと4行もかかってしまうのか…。
もっと良い方法あるでしょうか?
817816:2007/11/20(火) 17:23:58
すいません、ソースのところ記入ミスしてました。訂正します。

CString  cs(textBox1->Text);
string  s1 = cs + " = " + getenv(cs);
System::String*  s2 = s1.c_str();
listBox1->Items->Add(s2);
818デフォルトの名無しさん:2007/11/20(火) 17:29:28
getenvなんてCRT関数を混ぜるから面倒なことになる。.NETクラスライブラリで揃えろ。

using System::Environment;
using System::String;

String* cs = textBox1->Text;
listBox1->Items->Add(cs + " = " + Environment::GetEnvironmentVariable(cs));
819デフォルトの名無しさん:2007/11/20(火) 17:46:45
>>817
なんでわざわざstd::stringやSystem::Stringに入れ直しているの?
それやめるだけで2行で済むと思うけど。
つーか、C#だとどう1行で済むのよ。普通に書けば2行でしょうが。
820教えてください:2007/11/20(火) 18:15:15
すいません、分かる方がいれば教えてください。
C言語初心者です。
環境windwos98でvisualスタジオ6.0を使ってます。
ファイルの保存先を別のフォルダに保存する時にどのようにすればよろしい
でしょうか?
例えば、subというフォルダはあるのですが、その中に保存したいです。
821デフォルトの名無しさん:2007/11/20(火) 18:24:02
>>820
ファイルに保存するロジックは既にあると言う前堤で、
ファイル名をフルパス名か相対パス名にするだけ。
822816:2007/11/20(火) 18:24:31
>>818
ありがとうございます。
ただ、
listBox1->Items->Add(cs + " = " + Environment::GetEnvironmentVariable(cs));
ですと、
error C2845: '+' : __gc ポインタ 'System::String __gc *' に対してポインタ演算ができません。
というエラーがでます。

listBox1->Items->Add(Environment::GetEnvironmentVariable(cs));
ですとエラーはでませんでした。
System::String* 型には + 演算子はサポートされていないようですね。

>>819
回答ありがとうございます。
>なんでわざわざstd::stringやSystem::Stringに入れ直しているの?
>それやめるだけで2行で済むと思うけど。
error C2845: '+' : __gc ポインタ 'System::String __gc *' に対してポインタ演算ができません。
などのエラーが出るからです。

>つーか、C#だとどう1行で済むのよ。普通に書けば2行でしょうが。
C#の場合、文字列と言えばSystem.String型だけなので、試してはいませんが、
listBox1.Items.Add(cs + " = " + GetEnvironmentVariable(textBox1->Text));
このように1行にできると思いまして…。
823デフォルトの名無しさん:2007/11/20(火) 18:31:39
>>822
馬鹿?
>listBox1.Items.Add(cs + " = " + GetEnvironmentVariable(textBox1->Text));
それじゃ、csを作るのに結局もう1行消費するじゃん。
System::Stringが足し算できないなら使わなければいい。
CString cs(textBox1->Text);
listBox1->Items->Add(cs + " = " + getenv(cs));
でダメかね。
824教えてください:2007/11/20(火) 18:34:46
>>821
すんません
sprintf(OPENNAME,"..\sub\%s.txt",GRP);
だとまずいですか?
825デフォルトの名無しさん:2007/11/20(火) 18:37:23
>>824
私には、OPENNAMEが何物かもそのロジックの後に何が行なわれているのかも判じ得ませんので、
まずいかどうかなど答ようも御座いませんが。
826816:2007/11/20(火) 18:40:24
>>823
回答ありがとうございます。

やってみたところ、
error C2664: 'System::Windows::Forms::ListBox::ObjectCollection::Add' : 1 番目の引数を 'ATL::CStringT<BaseType,StringTraits>' から 'System::Object __gc *' に変換できません。
with[BaseType=char, StringTraits=ATL::StrTraitATL<char,ATL::ChTraitsCRT<char>>]
というエラーが出てしまいます。

てか、馬鹿って…・゚・(´Д⊂)。・゚・
827教えてください:2007/11/20(火) 18:41:30
>>825
たびたびすいません。
ファイル名を"..\sub\sample.txt"にするとエラーが出るんです
828816:2007/11/20(火) 18:47:41
>>827
"..\\sub\\sample.txt"
こうでなくて?
829816:2007/11/20(火) 18:49:19
ちなみに"."はカレントフォルダで、".."は1つ前のフォルダだから、
".\\sub\\sample.txt"
だったり
830教えてください:2007/11/20(火) 18:52:21
>>829

本当にありがとうございました。
解決しました
831デフォルトの名無しさん:2007/11/20(火) 18:54:13
>>826
「馬鹿」は>822が結局1行になってないことに対してだからね。
でだ。
>823でもダメなら結局System::Stringに入れ直す必要はあるということだけど、
std::stringが要らないことが判ったわけだから3行でいいということだね。
結論:
System::StringはC++では使い難い。
832818:2007/11/20(火) 19:11:27
>>822
マネージドC++だとSystem::Stringの+演算子での連結ができないことをすっかり忘れていた。
#VC++ 2005からのC++/CLIだとできる。
これでどうだ。
listBox1->Items->Add(String::Concat(cs, S" = ", Environment::GetEnvironmentVariable(cs)));

どうしてもCString使いたいなら、たぶんこんな感じ。
System.Stringがワイド文字使うから、CStringW/_wgetenvのほうがいいと思うけど。
CString newItem = static_cast<CString>(textBox1->Text) + TEXT(" = ") + _tgetenv(cs));
listBox1->Items->Add(new String(newItem, 0, newItem.GetLength());
833816:2007/11/20(火) 19:13:08
はふぅ…。
皆さんの回答のお陰で自分なりにまとめられたので報告しておきます。

VS2003 C++ で環境変数を取得してリストボックスに表示する方法。

[C++]
String* s(textBox1->Text);
listBox1->Items->Add(String::Format("{0} = {1}", s, Environment::GetEnvironmentVariable(s)));

[C#]
string s = textBox1.Text;
istBox1.Items.Add(s + " = " + GetEnvironmentVariable(s));

回答くれたみなさんありがとうございます。
834816:2007/11/20(火) 19:16:18
>>832
あぁぁぁすれ違い。
すいません。そしてありがとうございます。
そちらも参考にさせてもらおうと思います。
835デフォルトの名無しさん:2007/11/21(水) 00:24:04

DirectX SDK のサンプル DXUT.cpp で僕には全く理解できない箇所があるので教えてください。

1: #ifndef ARRAYSIZE
2: extern "C++" // templates cannot be declared to have 'C' linkage
3: template <typename T, size_t N>
4: char (*RtlpNumberOf( UNALIGNED T (&)[N] ))[N];
5:
6: #define RTL_NUMBER_OF_V2(A) (sizeof(*RtlpNumberOf(A)))
7: #define ARRAYSIZE(A) RTL_NUMBER_OF_V2(A)
8: #endif

ARRAYSIZEを使っている箇所を見ると配列の要素数を求めているようなんですけど…それなら
 #define ARRAYSIZE(A) ( sizeof(A)/sizeof(A[0]) )
でもいいですよね? 違うのかな・・・
ああ考えれば考えるほどこんがらがってわからなくなってしまいます。

4〜6行目で何をしているのか全くわからなくて・・・
サンプルなのであまり困っているわけではないんですけど気持ち悪いです。
よろしくお願いします。
836デフォルトの名無しさん:2007/11/21(水) 00:38:18
深く考えるな。
人それぞれ、己のプログラミングスタイルを貫き通せばいいではないか。
837デフォルトの名無しさん:2007/11/21(水) 00:39:53
まあ確かにマクロでいいんだけどね。こういう使い方では、C++のお遊びに過ぎない。

RtlpNumberOfは、要素数NのT型の配列への参照を引数に取り、
要素数Nのchar型の配列へのポインタを返す関数として宣言されている。

つまり、*RtlpNumberOf(A)という式は、Aから、
要素の型をcharへ差し替えた配列型(要素数同じ)という型を生み出している。
sizeof (char) ==1だから、それをsizeofすれば要素数になるというわけ。
838デフォルトの名無しさん:2007/11/21(水) 00:55:20
Visual C++まじかっこいい
839デフォルトの名無しさん:2007/11/21(水) 02:03:27
うっかりポインタを渡してしまう愚を避けられるんじゃね。
840デフォルトの名無しさん:2007/11/21(水) 02:05:20
externされたような配列は ( sizeof(A)/sizeof(A[0]) )できない
841デフォルトの名無しさん:2007/11/21(水) 02:17:17
アレコレ重箱の隅をつついて、やれ欠陥だ、やれセキュリティホールだと
もう、鬼の首を取ったように嬉々として騒ぐバカどもが世界中にいるからな。
一分の隙も見せないように巧妙なコーディングしなきゃなんない。
その結果が、一見して意味不明な複雑なコードになってしまう。
人に読んでもらって勉強してもらうためのコードなんかじゃ無いんだよ。
キチガイどもを黙らせるためのコードなんだよ。
842デフォルトの名無しさん:2007/11/21(水) 12:08:35
VC++2005で、タブ文字や空白文字だけの背景色変更したいんですけど、できますか?
843デフォルトの名無しさん:2007/11/21(水) 14:28:21
意味がわからん、プログラムの話か開発環境でも話か。
編集メニューの詳細-スペースの表示、とは違う?
844デフォルトの名無しさん:2007/11/21(水) 18:07:52
>>842
テキストボックスやリストボックスでの話なら、オーナードローしかないと思う
845835:2007/11/21(水) 21:52:58
みなさんレスありがとうございます

完全に理解できないまでも >>837 さんの解説で何をしているのかを掴むことができました。

サンプルとか見てて意味のわからない箇所があると、もしかしてそこには理解しておかなければならない
秘密が隠されていて、理解しないまま先を追っても後々困るんじゃないか・・・
という不安でなんとなく先に進むのが怖くなってくるんです。性格的にプログラムに向いてないのかな(汗

こんな方法があるなんて驚きでした。
846デフォルトの名無しさん:2007/11/21(水) 22:53:06
>>845
そういった細かいテクニックだとかノウハウはいつか役に立つ日が来るかもしれない。
壁にぶち当たった時に、その壁の大きさに驚きそこから動けなくなるより、
とりあえず回避して自分が大きくなった時にまた壁を壊しに来ればいい。
別にプログラムに限った話じゃないと思うから悲観することはないと思うよ。
がんばれ。
847デフォルトの名無しさん:2007/11/21(水) 23:02:28
String^ text;
String^ text2;

text="";
text2=text->Substring(0,1);


この書き方をやると、text->Substring(0,1)がインデックスの境界外と出るのですが、これを回避する術はありませんか?
848デフォルトの名無しさん:2007/11/21(水) 23:34:37
ifstreamを使ってファイルからデータを読み込む場合に

ifstream ifs;
int a;

ifs.open("a.txt");

ifs >> a;

ifs.close();

という感じで読み込むと、2バイト以上で表示されるの文字(12や123など)を数値へと変換できない場合があるようなのですが
どういった理由があるのでしょうか
実際にはもっとたくさんのデータを読み込んでいるのですが、1や2などの1バイトだと問題ないようなのですが・・・
宜しければご回答宜しくお願い致します
849デフォルトの名無しさん:2007/11/22(木) 00:57:54
>>847
予めifか何かで引数が範囲外でないかどうか調べればいいだろ。
850デフォルトの名無しさん:2007/11/22(木) 01:03:57
>>848
理由はifstreamのoperator >> を見ればわかる。
851848:2007/11/22(木) 12:28:41
>>>850
ご回答ありがとうございます。
いろいろ調べてみたのですが、なるほど!と思うような答えに行き着くことができませんでした・・・。
お手数ですが、簡単にでもいいので解説していただけませんでしょうか。
よろしければお願い致します。
852デフォルトの名無しさん:2007/11/22(木) 13:49:41
>>851
そのa.txtのファイルエンコーディングは?
853デフォルトの名無しさん:2007/11/22(木) 14:22:54
特になにも指定せず、同じようにファイルストリームをつかって保存しているので
Shift-JISで保存されているみたいです。
854デフォルトの名無しさん:2007/11/22(木) 16:17:56
ダイアログボックスでエディットボックスに入力されたものを読み込んだ後、
エディットボックスを空にするにはどうしたらいいのでしょうか?

前に入力したものがずっと残ったままになってしまって・・
それから入力読み込みをした後、ダイアログボックスの再描画をしたいんですがそれも分かりません;
是非お願いします
855デフォルトの名無しさん:2007/11/22(木) 16:25:27
>>854
EDITから読むときどうやってる?
まあ最終的にはSetWindowTextで空文字列入れてやればいいんだけど、
FormとかMFC使ってるならそれなりのやりかたあるし。
856デフォルトの名無しさん:2007/11/22(木) 18:36:47
MFCのCEditだったら
CEdit edit(GetDlgItem(IDC_EDIT1));
edit.SetFocus();
edit.SetFont(_font, TRUE);
int cnt = edit.GetLineCount();
int n = edit.GetLine(0, _buffer, _buffer.size());
とかがある。

テキストの変更は
CString cs("abc");
edit.SetWindowText(cs);
とか。
857デフォルトの名無しさん:2007/11/22(木) 22:51:57
>>855-856
遅くなりましたが、教えて頂いた記述で出来ました。ありがとうございました。
858デフォルトの名無しさん:2007/11/22(木) 23:39:47
ダイアログ繋がりで質問します。
エディットボックスにデフォルトで常にカーソルが合わさっている状態にするにはどうしたらいいのでしょうか?
859デフォルトの名無しさん:2007/11/23(金) 01:18:58
質問です。例えばchar str[10][100];と宣言して、
このstrに何も入力されなかった場合に操作したい時はifでどう条件を指定したらよいのでしょうか?
動作の背景としては、何も入力されずにスキップされたら、配列に特定の文字を入れるという操作をしたいんですが。
if(str == NULL)や\0としてもうまく動かないですし。
860デフォルトの名無しさん:2007/11/23(金) 01:38:35
>>859
char str[10][100] = {{0}};
// 適当な入力処理
if (str[0][0] == 0) {
// 未入力
}
861デフォルトの名無しさん:2007/11/23(金) 01:54:45
>> 858
WM_INITDIALOG をよく調べろ
862デフォルトの名無しさん:2007/11/23(金) 04:56:38
VS2005の使い方で質問なんだけど、DLLにスタティックリンクさせるlibファイルを参照させるにはどうすればいいの?

MSDN分かり辛いよ。
863デフォルトの名無しさん:2007/11/23(金) 11:26:05
これは MSDN 見るよりか
プロジェクトのプロパティを見回した方が早いだろう。

「リンカ」 以下に存在する項目をチェックしていってごらん。
864デフォルトの名無しさん:2007/11/23(金) 11:40:05
エクセルみたいな表を作りたいんですけど、VC++で簡単に出来るもんなんでしょうか?
865デフォルトの名無しさん:2007/11/23(金) 11:53:33
>>864
エクセルみたいな表ではありませんが、(OCXに頑張って貰ってですが)エクセルの表を作ることはそう難しくはありません。
866デフォルトの名無しさん:2007/11/23(金) 14:20:58
すいません。
配列に全角スペースと改行だけを挿入したい場合はどうすればいいんでしょう?

str[i][j] = ' \n';
wsprintf(str[i][j]," \n",4);
sprintf(str[i][j," \n");

上記では出来なかったんですが・・・
867デフォルトの名無しさん:2007/11/23(金) 14:36:21
C言語からやり直せ

C言語なら俺に聞け(入門篇) Part 21
http://pc11.2ch.net/test/read.cgi/tech/1194384258/l50
868デフォルトの名無しさん:2007/11/23(金) 14:52:19
GetDlgItemTextでエディットボックスに何も入力せずにGetDlgItemTextが実行された時って変数の中には何が入るんでしょうか?
何も入力せずにGetDlgItemTextされた時、ifで分岐したいんです。
869デフォルトの名無しさん:2007/11/23(金) 14:55:18
>GetDlgItemTextが実行された時って変数の中には何が入るんでしょうか
その段階では、あなたの管理下にある変数には特に何も入ってはいないと思います。
870862:2007/11/23(金) 14:59:03
>>683
分かった見回してみる。
普段はjava使いでC/C++のコンパイルが必要なときは
bccをコマンドラインから使ってた俺にはVSはごちゃごちゃしてて分かり辛い。
とくにMSDNが・・・。

thx!
871デフォルトの名無しさん:2007/11/23(金) 15:45:53
>>868
戻り値をよく見れ
872デフォルトの名無しさん:2007/11/23(金) 16:03:03
>>865
そのOCXさんはどこをどうやったら出てくるのでしょうか?
873デフォルトの名無しさん:2007/11/23(金) 17:14:32
CoCreateInstance
874デフォルトの名無しさん:2007/11/23(金) 18:45:41
むしろExcelさんを直接呼び出して、Excelみたいな、ではなくExcelそのもので表を使ってしまえ。
875デフォルトの名無しさん:2007/11/23(金) 19:40:48
>>874
>865はそういっているようだが。
876デフォルトの名無しさん:2007/11/23(金) 19:52:20
>>866
str[i][j] = " \n";
877デフォルトの名無しさん:2007/11/23(金) 20:17:50
>>875
他社のグリッド系OCXを指しているようにも見える
878デフォルトの名無しさん:2007/11/23(金) 20:52:39
すみません超初心者ですが質問です。
VisualC++2005EEを使って以下の初歩的なソースをコンパイルしました。
#include<iostream.h>
void main()
{ cout<<"Hello World!";}
とcppファイルを作ってビルドしました。
すると、includeファイルを開けません、iostream.hが無いとかなんとか出てきます。
いろいろ調べて、SDKとかインストールしたのですが、直りません。

どうすれば、上のコンソールベースのアプリをコンパイルできるようになるんでしょうか?
879デフォルトの名無しさん:2007/11/23(金) 20:59:03
#include<iostream>
void main()
{ cout<<"Hello World!";}
880デフォルトの名無しさん:2007/11/23(金) 21:01:46
>>879
そうすると、coutが定義されてない識別子とでます。
881デフォルトの名無しさん:2007/11/23(金) 21:04:57
>>880
std::cout
C/C++スレで聞け。
882デフォルトの名無しさん:2007/11/23(金) 21:05:15
>>880
ネームスペースを宣言
std::cout<<"Hello World!"
883デフォルトの名無しさん:2007/11/23(金) 21:07:15
#include<iostream>
using namespace std;
void main()
{ cout<<"Hello World!";}
884878:2007/11/23(金) 21:09:02
VC++2005EEでネームスペースを使わずに、上の初歩のソースコードを実行できませんか?
久しぶりにC++を最初から勉強しなおそうとしてるのですが、
いきなりネームスペースが出てきても意味がわからんです。
VC++2005EEって勉強するのには向いてないのでしょうか?
885878:2007/11/23(金) 21:13:18
>>883
初心者に戻ったのでネームスペースは忘れてしまいました。
VC++2005ではそういう構文でないと、coutは実行できないのでしょうか?
ネームスペースなしでやる方法があればご伝授ください。
それとも、namespaceは決まりごととしてあまり考えずにコードに入れておいて、
そのまま勉強を進めた方がいいのでしょうか?
886デフォルトの名無しさん:2007/11/23(金) 21:13:59
しばらくは決まり事として進めて問題ない。
887デフォルトの名無しさん:2007/11/23(金) 21:16:12
主要なヘッダファイルに
using namespace std;
を書き込んでおけば次からは入らなくなる
888878:2007/11/23(金) 21:18:06
>>886
そうですか。最初のころはあまり考えずに決まりごととして入れておけば
エラーにならんのですね。
ありがとうございました。
889デフォルトの名無しさん:2007/11/23(金) 21:18:43
>>878
>VC++2005EEでネームスペースを使わずに、上の初歩のソースコードを実行できませんか?
そもそもnamespace使わずに実行できるのは古い規格。
最初から勉強しなおそうとするのであればそれくらいは知っておくといい。
890889:2007/11/23(金) 21:19:48
言葉足らずを修正w
×そもそもnamespace使わずに実行できるのは古い規格。
○そもそもiostreamのincludeでstdのnamespaceを使わずに実行できるのは古い規格。

891デフォルトの名無しさん:2007/11/23(金) 21:37:33
>>887
ヘッダファイルに using を書くのはオススメできない
892デフォルトの名無しさん:2007/11/23(金) 21:38:49
VisualC++2005ExpressEditionで
PlatformSDK+
DirectXSDK使用のプログラムを
プログラム雑誌のサイトからソースを使用してビルドをかけたところ、

1>Main.obj : error LNK2019: 未解決の外部シンボル __imp__PostQuitMessage@4 が関数 "long __stdcall WndFunc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndFunc@@YGJPAUHWND__@@IIJ@Z) で参照されました。
1>Main.obj : error LNK2019: 未解決の外部シンボル __imp__DefWindowProcA@16 が関数 "long __stdcall WndFunc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndFunc@@YGJPAUHWND__@@IIJ@Z) で参照されました。
1>Main.obj : error LNK2019: 未解決の外部シンボル __imp__GetAsyncKeyState@4 が関数 "void __cdecl UpdateProc(void)" (?UpdateProc@@YAXXZ) で参照されました。

他同じエラーが十数個でました。
リンクエラーと思われますが、設定はしているつもりです
Platform SDKとDirectX SDK
includeパスおよびライブラリパスは設定しています

他にどういった原因が考えられるでしょうか。よろしくお願いいたします。
893878:2007/11/23(金) 21:39:29
>>890
もしかしたら、今持ってるC++のテキストは古すぎるんですかね?
1996年初版発行の本なんですが。
解説がすばらしいのでこの本で勉強してから、新しい本で勉強しなおした方が
いいのでしょうか?
もうひとつお聞きしたいのですが、どんなC++を勉強するのにどんな本がお勧めですか?
894デフォルトの名無しさん:2007/11/23(金) 21:42:03
最近新しいのが出たな。
895デフォルトの名無しさん:2007/11/23(金) 21:44:37
>>892
ライブラリパスの指定を Debug か Release かのどちらかしかしてなくて、
指定してない方でリンクしようとしているとか
896デフォルトの名無しさん:2007/11/23(金) 22:18:39
今からはじめるならVisualStudio2008を待ったほうがいいですか?
いつでますか?
897デフォルトの名無しさん:2007/11/23(金) 22:26:31
今月中
898デフォルトの名無しさん:2007/11/23(金) 22:27:52
って英語版は出てた
899デフォルトの名無しさん:2007/11/23(金) 22:28:38
日本語版は今年中の予定らしい
900700:2007/11/23(金) 22:38:03
>>892
プロジェクトのプロパティの
構成プロパティ→C/C++→コード生成で、
ランタイムライブラリをMTかMTdにしたほうがいいんじゃない?
901デフォルトの名無しさん:2007/11/23(金) 22:47:50
それ892の問題とは全然関係ない。

>>892
http://www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/
ここの手順4はやったか?
それをやるか、あるいは「プロジェクトのプロパティ→リンカ→(どっか)→追加の依存ファイル」に
user32.libを書き加えろ。
902デフォルトの名無しさん:2007/11/23(金) 22:59:51
>>901
確かに、書き換えたつもりだったのですが
書き換わっていませんでした
再度書き換えましたら動作いたしました。

ありがとうございます。
903デフォルトの名無しさん:2007/11/24(土) 01:09:53
ダイアログが閉じた時に、ウィンドウを再描画するのってどうすればいいんでしょう?
904デフォルトの名無しさん:2007/11/24(土) 12:50:52

>903
勉強しろよ・・・・・!!

//-------------------------
//ダイアログの呼び出し
CDlgMoj IPDlg;
IPDlg.DoModal();
//再描画-------------------
CMainFrame* pMainFrame = static_cast< CMainFrame* > (AfxGetApp()->m_pMainWnd);
//MDIのVIEWの取得
CWnd *pwnd= static_cast<CFrameWnd*>(pMainFrame)->GetActiveFrame()->GetActiveView();
if(pwnd!=NULL){ViEWが有れば
pwnd->Invalidate(TRUE);
}
//フレームの更新
pMainFrame->Invalidate(TRUE);
//---------------------------
905デフォルトの名無しさん:2007/11/24(土) 14:23:37
Visual Studio 2005 Express Edition 日本語版が入っている環境に
Visual Studio 2008 Express Edition 英語版をインストールすることは可能ですか?
906デフォルトの名無しさん:2007/11/24(土) 16:35:11
インストールすることは可能
907デフォルトの名無しさん:2007/11/25(日) 00:44:24
質問です
ダブルバッファリングをしていて、DrawText使っていて、InvalidateRectを使ってDrawTextの箇所を再描画したいんですが、出来ません。
WM_CREATEで一度DrawTextを使っていて、再描画でWM_PAINT内でBeginPaintの間でDrawTextを書いてるんですが、出来ないんです。
理由としてはどんな事が考えられるでしょうか?

ちなみに、WM_PAINT内のDrawText前後にMassageBoxを挟むとそれはちゃんと出てきます。
WM_CREATEはhmDC、WM_PAINTはhDCでちゃんとあってるはずなんですが・・
908デフォルトの名無しさん:2007/11/25(日) 01:26:15
>>907
お前の考えているダブルバッファリングとはどういうものなのか、簡単に説明せよ。
あと、hmDCとかいきなり書かれても通じないから。hDCは分からなくもないが。
909デフォルトの名無しさん:2007/11/25(日) 02:06:25
C++を覚えようと思って「Microsoft Visual C++ 2005 Express Edition」を入れたんだが
さて何を学べばいいのやら。
>>3のリンク先を一通り覗いてからカキコすべき?
910デフォルトの名無しさん:2007/11/25(日) 06:15:04
C++初心者のスレはないんだっけ?
911デフォルトの名無しさん:2007/11/25(日) 09:09:48
>909
Microsoft Visual C++ 2005 Express Editionは.netの開発ツール
一応C/C++のコンパイラとしても使えないこともないけど、
使い方知らない人が持っててもどうしようないと思う。
912デフォルトの名無しさん:2007/11/25(日) 09:50:05
何か本でも1つ買って勉強すれば?
913デフォルトの名無しさん:2007/11/25(日) 09:54:48
その前にPSDKインストールしないとC++でフォームアプリ作れないじゃん。
914デフォルトの名無しさん:2007/11/25(日) 09:55:46
そもそもリソースエディタがないし・・・
915デフォルトの名無しさん:2007/11/25(日) 10:02:13
コンソールなネイティブアプリはつくれるから
C++の学習ってだけなら十分なんじゃないかな。
916デフォルトの名無しさん:2007/11/25(日) 10:12:18
PSDKインストールしないとフォームアプリ作れないというのは初耳
俺の持ってるのとは違うんだろうか?
917デフォルトの名無しさん:2007/11/25(日) 10:21:17
PSDKはフォームじゃなくてWin32用じゃないか?
918デフォルトの名無しさん:2007/11/25(日) 10:23:54
フォームデザイナついてなかったか?
919デフォルトの名無しさん:2007/11/25(日) 10:30:44
ごめん、PSDKはwin32用だわ。
920デフォルトの名無しさん:2007/11/25(日) 10:32:35
子供に紙と鉛筆渡しても落書きして終りだろ
紙と鉛筆だけで勉強できるか?
921907:2007/11/25(日) 12:56:22
>>908こんな感じです

case WM_CREATE:
GetClientRect(hWnd, &rt);

hDC = GetDC(hWnd);
hmemDC = CreateCompatibleDC(hDC);
hBitmap = CreateCompatibleBitmap(hDC, x,y);
SetTimer(hWnd, 1, 1000, NULL);
DrawText()
省略

case WM_TIMER:
省略
InvalidateRect(hWnd,NULL,FALSE);

case WM_LBUTTONDOWN:
省略
InvalidateRect(hWnd,NULL,FALSE);

case WM_PAINT:
hDC = BeginPaint(hWnd,&ps);
BitBlt(hDC,0,0,450,396,hmemDC,0,0,SRCCOPY);
SetBkMode(hDC,TRANSPARENT);
TextOut(時計の表示)
DrawText()
EndPaint(hWnd,&ps);
922デフォルトの名無しさん:2007/11/25(日) 13:27:38
>>921
hmemDCにhBitmapを選択し忘れている、かな?
その下のDrawTextはhmemDCに対してだろうし。
923デフォルトの名無しさん:2007/11/25(日) 13:47:25
>>922
それは必要なんですか?

DrawText(hDC・・だけ、再描画されないんです。
TextOutの時計表示の方はTextOut(hDC・・の方は普通に1秒ごとに再描画されていました。

書かなくても分かるかも知れないですけど、ちょっと情報が少なかったです。
最初のDrawTextは(hmemDC・・・で
後のDrawTextは(hDC・・・です。
924デフォルトの名無しさん:2007/11/25(日) 15:43:32
TextOutの次行にあるDrawTextが描画されない、と。
>>907 の説明だけでそう解釈できる奴は上級エスパーだな。
だが、引数を省略して表記されては判断のしようが無いと思うのだが?
フラグ指定が間違っていても判らないし。
現時点では、lpString,nCount,lpRectの中身をデバッグ出力して確認しろ、位しか書けん。
925デフォルトの名無しさん:2007/11/25(日) 16:00:39
 TextOut(hDC,270,370,clock,lstrlen(clock));

 for(int j=0;j<5;j++){
  for(int k=0;k<5;k++){
   fscanf(fp1,"%s",classes[j][k]);
   rt.top = pos1+(31+60*k);
   rt.bottom = pos2-(66+60*(4-k));
   rt.right = pos3-(45+(75*(4-j)));
   rt.left = pos4+(31+(75*j));
   DrawText(hcDC,str[j][k], -1, &rt, DT_WORDBREAK);
  }
 }
こんな感じで場所をずらしながら配列の表示
で、さっきまでは表示されなかったのが、今は再描画されるようになりました。
が。
最初の表示が消える事なく元の表示にかぶって新しく表示されます。。
再描画すればするだけ、文字が重なってグチャグチャにorz
926デフォルトの名無しさん:2007/11/25(日) 16:01:45
変なのがはさまった。
   fscanf(fp1,"%s",classes[j][k]);
はなかった事にしてください
927デフォルトの名無しさん:2007/11/25(日) 18:11:31
VC++2005でプログラムを書いているんですが、
RFIDをUSBでPCにつないでタグのIDを読み込ませたい
のですがRFIDを使えるようにするにはどんなプログラムが必要なのか
ちょっとわからず困っています。誰か分かる方がいましたらよろしくお願いします。
 
928デフォルトの名無しさん:2007/11/25(日) 19:04:41
>>925
背景ブラシによる消去が行われないのは、
InvalidateRectのbEraseをFALSEにしているから。
929デフォルトの名無しさん:2007/11/26(月) 16:50:24
ちょっとスレ違いで申し訳ないのですが、
下記のVC++の掲示板が最近アクセスできません。
どこかに移転したのでしょうか? ご存じの方がいたら教えてください。

ttp://forums.belution.com/ja/vc/
930デフォルトの名無しさん:2007/11/26(月) 17:43:00
>>929
ググれ
931デフォルトの名無しさん:2007/11/26(月) 18:41:45
>>927 産業用機材は一般的な取り決めがないので、メーカーに聞くしかない。
ドライバーがどうなってるかはウチらは全くわからんわけだし。
932デフォルトの名無しさん:2007/11/26(月) 19:07:33
雑談ラウンジ
タイトル, : belution.comの話. 投稿日, : 2007/09/27(Thu) 09:22. 投稿者, : PATIO ... ここ数日、
belution.comに全く繋がらなくなってます。 あのコミュニティにはかなりの情報蓄積があるのでアク
セスできないとかなり困ったりするんですが、 ...
キャッシュ - 関連ページ
933デフォルトの名無しさん:2007/11/27(火) 01:32:44
UTF-8をShift-JISに変換って簡単にできます?
934デフォルトの名無しさん:2007/11/27(火) 01:40:20
935デフォルトの名無しさん:2007/11/27(火) 14:40:11
警告が出ずに'POSITION' から 'int' へ切り詰める方法を教えてください
936デフォルトの名無しさん:2007/11/27(火) 15:45:20
reinterpret_cast
937デフォルトの名無しさん:2007/11/27(火) 16:46:55
>>936
警告でますよ
938デフォルトの名無しさん:2007/11/27(火) 16:51:53
警告レベル0にすればいいんじゃね
939デフォルトの名無しさん:2007/11/27(火) 16:52:43
そうだな。
940デフォルトの名無しさん:2007/11/28(水) 01:22:36
VC 2005 express editionで作ったプログラムがDebugフォルダに入ってるんだけど
このアイコンの絵がなんの変哲もないExeファイルのアイコン絵
このアイコンの絵を他の絵に変えれますか?
941デフォルトの名無しさん:2007/11/28(水) 06:08:20
かえれる
942デフォルトの名無しさん:2007/11/28(水) 14:42:21
関数内ででかい配列を確保しようとすると、実行時エラーが出るんですけど、
エラーが出る/出ないの境界ってどれくらいなんでしょうか?

また、mallocでは確保出来るのに、自動変数の配列だと確保出来ないというのが
なんとも腑に落ちません。なにか理由がるのでしょうか?
943デフォルトの名無しさん:2007/11/28(水) 14:45:05
自動変数はスタック上
malloc はヒープ上
944デフォルトの名無しさん:2007/11/28(水) 14:47:08
なるほど、確保される場所が、そもそも違うのですね。
945デフォルトの名無しさん:2007/11/28(水) 14:54:20
mallocの上限は環境依存だから、戻り値を調べるしかない
946デフォルトの名無しさん:2007/11/28(水) 14:57:46
Linuxみたいに、戻り値はそれっぽいのに実際に使おうとすると填まる環境も在る。
従って、戻り値だけでは判断できない。
947デフォルトの名無しさん:2007/11/28(水) 14:58:45
と思ったけどこのスレ的には関係ないか。
948デフォルトの名無しさん:2007/11/28(水) 15:03:14
>>942
デフォルトのスタックサイズは1MBになってる。
リンカのオプションで変更できる。
949デフォルトの名無しさん:2007/11/28(水) 15:08:55
奥が深すぎておっぱお
950デフォルトの名無しさん:2007/11/28(水) 15:09:28
>>948
ありがとうございます。
951デフォルトの名無しさん:2007/11/28(水) 21:41:22
VC++2005で質問です。

engine.cpp
 +device.cpp
 +buffer.cpp
main.cpp

のような構成で コンパイルすると
main.cpp、engine.cpp、device.cpp、buffer.cppと順番にコンパイルします。
しかし、 希望は device、buffer、engine、mainの順でコンパイルしたいです。
このコンパイル順序は変えられないのでしょうか?

現在は xxx.vcproj ファイルを毎回編集してコンパイルしています。
952デフォルトの名無しさん:2007/11/28(水) 21:47:16
>>951
+が何を意味してるのかわからんけど、コンパイルの順番で何か問題起きる?
953デフォルトの名無しさん:2007/11/28(水) 21:51:51
すみません、Visual C++ 6(または.net 2002 、2003)でしかできないことをやりたいと思ってまして、
ネットオークションで落札しようと考えているのですが(もはやそれしか入手方法がありません)、
この場合、ライセンス認証とかは大丈夫なんでしょうか?
アカデミック版か否かで注意すべき点が違う等、注意事項をご教示ください。
954デフォルトの名無しさん:2007/11/28(水) 21:54:21
ゲームエンジンみたいなの作ってて
main.cpp で必要な機能が engine.cppに書いてるので
バラバラなコンパイルだと機能が呼べない問題がおきちゃってます。

それとも、こゆー設計がいけないのかな・・・

+は上のファイルとの親子関係みたいなものです。

main.cpp
 +engine.cpp
  +device.cpp
  +buffer.cpp
955デフォルトの名無しさん:2007/11/28(水) 21:54:27
956デフォルトの名無しさん:2007/11/28(水) 21:54:45
VS2005EEじゃ無理なのか?
957デフォルトの名無しさん:2007/11/28(水) 22:01:11
>>954
おそらく分割コンパイルを勘違いしている。
>main.cpp で必要な機能が engine.cppに書いてるので
engine.cppに書かれている機能の中身はmain.cppのコンパイルには必要ない。
その機能の使用方法(プロトタイプ宣言等)さえ分かればいい。
958デフォルトの名無しさん:2007/11/28(水) 22:09:20
>>957
わかりますた 調べて試してみます。
プロトタイプ宣言ですね。
959953:2007/11/28(水) 22:15:26
>>956
VS2005は持ってるんですが、DirectX9のアプリケーションウィザードが扱えないようなんです。
>>953で挙げたバージョンだと扱ってる事例があったので。
960デフォルトの名無しさん:2007/11/29(木) 07:28:29
TCHAR で書いてるんですが、
GetProcAddress() とか IPersistFile::ParseDisplayName() とかは ANSI/UNICODE 版がないんで WideCharToMultiByte() とか MultiByteToWideChar() が必要になるんですが、
ここの周辺は自分で UNICODE かどうかで条件分岐させたコードを書かなきゃならないんでしょうか?
961デフォルトの名無しさん:2007/11/29(木) 07:28:47
MSDN Subscription買えばnet2003は落とせるでそ?
962デフォルトの名無しさん:2007/11/29(木) 07:30:25
ATL・MFCあたりにA2WとかT2Aとかその辺りのマクロがあったとおもたけど。
963953:2007/11/29(木) 07:50:53
>>961
すみません、さすがに十何万円も出せません・・・。

ネットオークションで中古品を入手した場合のライセンス可否の可能性についてご教示ください。
964デフォルトの名無しさん:2007/11/29(木) 09:00:18
ライセンスなんか気にしたことないな
会社ぐるみ学校ぐるみで不正やってたら誰かが密告するかもしれないけど、
ひとりで使ってる場合は自分が黙ってたらばれるわけがないし
965デフォルトの名無しさん:2007/11/29(木) 09:32:11
スタートページって必ず表示されちゃうんでしょうか?
起動が遅くていらつくんですけど、消せるのであれば教えてください。
966デフォルトの名無しさん:2007/11/29(木) 10:10:43
>>965
ツール-オプション-環境-スタートアップ
気にしたこと無かったけど、たぶんこの辺だろうと見に行ったらその設定あった。
967デフォルトの名無しさん:2007/11/29(木) 10:37:09
>>963
MSに訊け
968953:2007/11/29(木) 14:09:05
>>967
分かりました。
969デフォルトの名無しさん:2007/11/29(木) 14:20:58
963は俺だが。
誤爆乙
970デフォルトの名無しさん:2007/11/29(木) 14:24:11
971デフォルトの名無しさん:2007/11/29(木) 14:40:02
ストアドプロシージャからの戻り値を取りたくて
CString strSQL = "{CALL abc}";
CRecordset rs(DBポインタ);
rs.Open(CDatabase::snapshot, strSQL);

をすると
カーソルの状態が正しくありません
というエラーがきます
解決方法を教えてください
972デフォルトの名無しさん:2007/11/29(木) 15:38:04
↑は
rs.Open(CRecordset::snapshot, strSQL);
の書き間違いです
まだ解決できません
データベースをみるとストアドプロシージャは動いているようです
973デフォルトの名無しさん:2007/11/29(木) 19:21:40
Visual C++ 2005 Express EditionとDirectXで普通にゲームは作れるのでしょうか?
974デフォルトの名無しさん:2007/11/29(木) 19:33:30
>>973
何が普通かわかりませんが、gccでだってゲームは作れます。
975デフォルトの名無しさん:2007/11/29(木) 20:02:18
そんな事を言うんだったら、バッチファイルでもゲームは作れるよ。
976デフォルトの名無しさん:2007/11/29(木) 20:10:05
そんなことを言うんだったら、紙と鉛筆でもゲームは作れるよ。
977デフォルトの名無しさん:2007/11/29(木) 20:54:18
>>973
974-976みたいな冷たいやつは置いておて
プラットフォームSDKも別途入手しないとだめかもしれんとだけ答える
978デフォルトの名無しさん:2007/11/29(木) 20:57:48
他人の事冷たいとか言っておきながら中途半端に答えるなよ
979デフォルトの名無しさん:2007/11/29(木) 21:21:35
マジレスすると、ググれば親切に分かりやすい図入りで解説したサイトが
たくさんたくさん見つかる。
980デフォルトの名無しさん:2007/11/29(木) 21:25:37
>>978
冷たいから生ぬるいになったんだから
いくらかましだとおもわんかね?

>>979は一見暖かくみえるが
中身はググレカスとかわらないと思う

とりあえず973は
15歳からはじめるDirextX9というのを立ち読みするといいと思われ
タダ環境のセットアップのしかたが一通り書いてある
しかし、最後の最後で肝心な設定について書いてないことろがあるので買ってはいけない
981デフォルトの名無しさん:2007/11/29(木) 21:50:27
最新の環境でDirectX9が使えないことはないと思うけど
DirectX9のアプリケーションウィザードが扱えないと言ってるからな
982デフォルトの名無しさん:2007/11/29(木) 21:53:27
ああ、>959のあとに>973が登場したのか
983デフォルトの名無しさん:2007/11/30(金) 01:20:44
>>974-982
レスありがとうございます

>>977
プラットフォームSDK入れてみます

>>980
あいにくプログラム本を豊富に扱ってる書店が近場にないので購入するしかありません・・・
情報ありがとうございました
984デフォルトの名無しさん:2007/11/30(金) 01:50:11
>>983
無駄本は買わなくてもネットで探せばいい。
どうせ買うならお勧めされてるものにしときな
985デフォルトの名無しさん:2007/11/30(金) 07:09:50
Visual C++ Express Edition 2005のヘッダファイルのパスって、何ですか?
どうやったら分かるんでしょうか・・
初心者すぎてすいません
986デフォルトの名無しさん:2007/11/30(金) 08:47:14
たぶんインクルードのパスのこと
987デフォルトの名無しさん:2007/11/30(金) 10:08:19
その疑問がどの状況で出てきたのか説明してくれれば
わかりやすい答えが出るかもしれん
988デフォルトの名無しさん:2007/11/30(金) 12:12:36
MFCです
ODBCでストアドプロシージャの戻り値を取得する方法を教えてください
989デフォルトの名無しさん:2007/11/30(金) 12:18:32
なんかどっかで見かけた質問だな
990デフォルトの名無しさん:2007/11/30(金) 13:33:22
VC++ 2005でコンソールアプリケーション(数値計算)
のプログラムを作っています.
質問なんですが,コンソールアプリケーションで扱えるメモリの量は
決まっていますか?
int main(){

hogehoge(*p,x,t);
return 0;

}

例えばhogehogeの中で巨大な構造体を宣言してるのですが,
デバッグしていると,この構造体の宣言でstack over flowが
出ているようなのです.この関数hogehogeはmain関数の中で
roopはさせません.
991デフォルトの名無しさん:2007/11/30(金) 13:47:55
スタックにそんな巨大なものを構築しないで下さい
malloc使って
992デフォルトの名無しさん:2007/11/30(金) 14:14:58
コンソールだろうとGUIだろうと、違いは無い。
スタックサイズはリンク時に決まる。(デフォルト1MB)
自動変数はスタックに配置される。
993デフォルトの名無しさん:2007/11/30(金) 14:16:41
>>990
malloc()なんか使わないでstd::vectorでも使ってください。
ところで、roopってなんですか?
994デフォルトの名無しさん:2007/11/30(金) 14:36:56
>malloc()なんか使わないでstd::vectorでも使ってください。
995988:2007/11/30(金) 14:50:52
無視すんなよ
996デフォルトの名無しさん:2007/11/30(金) 14:53:05
短気なやつだな
どこが原因で値が取れないのか
自分がやったことを書けよ。
997988:2007/11/30(金) 15:06:28
>>996
>>971-972

ちなみにADOならいけました
ODBCでのやりかたを教えてください
998デフォルトの名無しさん:2007/11/30(金) 15:08:31
終了
999988:2007/11/30(金) 15:08:46
無視してよ
1000デフォルトの名無しさん:2007/11/30(金) 15:09:01
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。