5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :デフォルトの名無しさん:2009/02/22(日) 17:44:23
Visual C++入門者・初心者からの質問を、
お兄ちゃんお姉ちゃん達が優しく、時には厳しく回答してくれるスレッドです。

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

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

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

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

2 :デフォルトの名無しさん:2009/02/22(日) 17:45:47
Part32 ttp://pc11.2ch.net/test/read.cgi/tech/1225422971/
Part31 ttp://pc11.2ch.net/test/read.cgi/tech/1217494948/
Part30 ttp://pc11.2ch.net/test/read.cgi/tech/1210170833/
Part29 ttp://pc11.2ch.net/test/read.cgi/tech/1203007556/
Part28 ttp://pc11.2ch.net/test/read.cgi/tech/1196430042/
Part27 ttp://pc11.2ch.net/test/read.cgi/tech/1189394427/
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/


3 :デフォルトの名無しさん:2009/02/22(日) 17:46:17
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

4 :デフォルトの名無しさん:2009/02/22(日) 17:47:42
【関連スレ】
■MFC相談室 mfc20d.dll■
http://pc11.2ch.net/test/read.cgi/tech/1230219816/
Win32API質問箱 Build76
http://pc11.2ch.net/test/read.cgi/tech/1233622578/
【C++】 DirectX初心者質問スレ Part21 【C】
http://pc11.2ch.net/test/read.cgi/tech/1229078397/
C言語なら俺に聞け(入門篇) Part 45
http://pc11.2ch.net/test/read.cgi/tech/1235044065/
【初心者お断り】ガチ規格準拠C専用スレ Part133
http://pc11.2ch.net/test/read.cgi/tech/1201153965/
C++相談室 part66
http://pc11.2ch.net/test/read.cgi/tech/1234420483/
C/C++の宿題片付けます 122代目
http://pc11.2ch.net/test/read.cgi/tech/1232029287/
【初心者歓迎】C/C++室 Ver.64【環境依存OK】
http://pc11.2ch.net/test/read.cgi/tech/1234193151/


【関連サイト】
猫でもわかるプログラミング
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/

5 :デフォルトの名無しさん:2009/02/22(日) 17:48:57
【このスレの前身 VisualC++相談室 過去スレ】
part 1 ttp://piza.2ch.net/tech/kako/970/970607517.html
part 2 ttp://piza.2ch.net/tech/kako/981/981630730.html
part 3 ttp://piza2.2ch.net/tech/kako/993/993186053.html
part 4 ttp://pc.2ch.net/tech/kako/1002/10021/1002165477.html
part 5 ttp://pc.2ch.net/tech/kako/1006/10068/1006834463.html
part 6 ttp://pc.2ch.net/tech/kako/1011/10116/1011615035.html
part 7 ttp://pc.2ch.net/tech/kako/1017/10178/1017843192.html
part 8 ttp://pc.2ch.net/tech/kako/1022/10224/1022499000.html
part 9 ttp://pc5.2ch.net/tech/kako/1036/10368/1036897197.html


6 :デフォルトの名無しさん:2009/02/22(日) 17:49:23
Platform SDKの中で一番新しいのはこっち
Microsoft Windows Server 2003 R2 Platform SDK Web Install
http://www.microsoft.com/downloads/details.aspx?FamilyID=0baf2b35-c656-4969-ace8-e4c0c0716adb&DisplayLang=en
(ISO版などあり)

これ以降、Platform SDK + .NET Framework SDKとして
Windows SDKが公開されていて、その中で一番新しいのはこれ。
Windows SDK for Windows Server 2008 and .NET Framework 3.5
http://www.microsoft.com/downloads/details.aspx?FamilyID=f26b1aa4-741a-433a-9be5-fa919850bdbf&DisplayLang=en
少し前のバージョン(Vista + .NET 3.0の初期版)には日本語版もあったけど、
日本語化されているのは専ら.NET Framework部分だけ。

VC6対応の、最後のPSDKはここ。
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm



テンプレ終わり。

7 :デフォルトの名無しさん:2009/02/22(日) 17:57:18
はじめまして。
CRLのwindowsフォームアプリケーションで、
年号を入れると西暦で表示されるプログラムを作るのに
int heisei;
heisei=int::Parse(textBox->Text);
int seireki;
seireki=heisei+1988;
label1->Text=L"平成"+heisei+L"年は、西暦"+seireki()+L"年です。";
とやって成功しました。しかし、模範解答は
int heisei;
heisei=int::Parse(textBox->Text);
int seireki;
seireki=heisei+1988;
label1->Text=L"平成"+heisei.ToString()+L"年は、西暦"+seireki.ToString()+L"年です。";
となっていました。
なぜ前者でも成功したのでしょうか。ToString()は何の意味があるのでしょうか?必要なんでしょうか?


8 :デフォルトの名無しさん:2009/02/22(日) 19:23:01
1乙

これも追加で、本当の最新、もちろんβだけど。
Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1: BETA
http://www.microsoft.com/downloadS/details.aspx?familyid=A91DC12A-FC94-4027-B67E-46BAB7C5226C&displaylang=en

9 :デフォルトの名無しさん:2009/02/22(日) 19:29:16
>>7
文字列連結は、String同士だけでなく、StringとObjectでも可能。

前者だと+の中に挟まれたint型の変数は
Object型にボックス化されてから連結されるというわけ。

だから、前者でもうまくいくけど、ボックス化は高コストなので
それを避けている後者のほうが望ましい。

10 :デフォルトの名無しさん:2009/02/22(日) 22:14:39
>7
VBをお勧めする

11 :デフォルトの名無しさん:2009/02/22(日) 22:46:54
ファイルのプロパティで表示される情報を取り込む方法を教えてくれよ。

12 :デフォルトの名無しさん:2009/02/22(日) 23:25:36
api使う

13 :デフォルトの名無しさん:2009/02/23(月) 05:25:52
ひまわりの方がいいんじゃね?

14 :デフォルトの名無しさん:2009/02/23(月) 09:15:44
VC++2008です。

プロジェクトディレクトリをそのまま、別のPCにコピーして作業を再開したら、
「ファイルが移動された」というコンパイルエラーが出て、リリース(デバッグは出来る)
出来なくなってしまいました。

ファイルの位置の再定義はどこで出来ますか?

15 :デフォルトの名無しさん:2009/02/23(月) 11:02:24
普通は他人が作ったサンプルだってそのままビルドすれば動くし、
プロジェクトなしでソースのみの場合は新しくプロジェクト作ってそこへソース突っ込むだけだし。
自分が書いた?ソースさえビルドできない状況が全く理解できない。

16 :デフォルトの名無しさん:2009/02/23(月) 12:34:39
>>15
でも・・でも・・(´;ω;`)ブワッ

stdfxだっけか、が移動したとか出て。
確かに、前のPCのディレクトリの名前が参照されてるのですよ

17 :デフォルトの名無しさん:2009/02/23(月) 12:38:46
一度クリーンしてリビルドしてみ

18 :デフォルトの名無しさん:2009/02/23(月) 13:31:06
なるほど、クリーンで・・・。
ありがとうございます!

19 :デフォルトの名無しさん:2009/02/23(月) 17:31:19
フォームアプリケーションで作ったフォームを
印刷する方法が分かりません><
教えてください。

20 :デフォルトの名無しさん:2009/02/23(月) 17:55:20
どんなフォームよ。
ボタンが並んでるウィンドウを印刷したいのか?

21 :デフォルトの名無しさん:2009/02/23(月) 18:21:16
そうです。ボタンと、テキストボックスに文字が入っています。
MFCでこういうことが出来るんだと思ったら、CFormViewにすると
なぜか、印刷機能が付けられなかったんです。

22 :デフォルトの名無しさん:2009/02/23(月) 21:32:06
>CFormViewにすると
>なぜか、印刷機能が付けられなかったんです。
仕様。

23 :デフォルトの名無しさん:2009/02/24(火) 09:11:47
フォームアプリの場合、計算結果を(参考書がやってるみたいに)
textBoxとかの中身を抽出して、フォントとか指定して、印刷に出力
するのが一般的?

24 :デフォルトの名無しさん:2009/02/25(水) 01:40:33
VC++ 6.0でFLASHを再生するソフトウエアを作る場合、
shockwaveflashのocxコンポーネントを追加しますが、
そのときにコントロールに対してInvokeHelper関数で、
swfファイルのオリジナルの幅や高さって取得できるでしょうか?

25 :デフォルトの名無しさん:2009/02/25(水) 17:39:49
visualC#の参考書って、visualC++用に購入してもおk?

26 :デフォルトの名無しさん:2009/02/25(水) 17:45:26
一つだけというのならやめとけ

27 :デフォルトの名無しさん:2009/02/25(水) 18:04:35
超入門書はc++の持ってるんだけど、
パーフェクトマスターシリーズがC#しかないんよ。

「.」が、「::」とか「->」になるだけだよね。

28 :デフォルトの名無しさん:2009/02/25(水) 18:23:21
CLRアプリ作るつもりなら、役に立つと思う。

29 :デフォルトの名無しさん:2009/02/25(水) 18:25:18
>>27
「.」もあるんだが。

30 :デフォルトの名無しさん:2009/02/26(木) 11:14:35
visual studio2008 XPです。

印刷機能の実装が分からないです。

フォームのtextBox1に計算結果が返されるとして、
例えば、textBox1の中身を印刷するには、
最低限何をすればいいですか?

31 :デフォルトの名無しさん:2009/02/26(木) 11:23:16
環境によるけど、文字列をプリンターに出す程度なら
そこらのサンプルコード切り貼りだけでいけるぞ。

32 :デフォルトの名無しさん:2009/02/26(木) 11:27:32
C#しか無くないですか?

C++に変換しても、ビルドできません><

33 :デフォルトの名無しさん:2009/02/26(木) 12:07:04
付属のドキュメントのサンプル切り貼りでいけたが。
プロジェクト新規作成してtextBox1とprintDialog1を貼り付けて
↓を適当な位置に入れただけ。
using namespace System::Drawing::Printing;

System::Drawing::Printing::PrintDocument^ docToPrint;

Form1(void)
{
InitializeComponent();
docToPrint = gcnew PrintDocument;
docToPrint->PrintPage += gcnew
System::Drawing::Printing::PrintPageEventHandler
(this, &Form1::document_PrintPage);
}

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
System::Windows::Forms::DialogResult result;
printDialog1->Document = docToPrint;
result = printDialog1->ShowDialog();
if (result == ::System::Windows::Forms::DialogResult::OK)
{
docToPrint->Print();
}
}

void document_PrintPage( Object^ /*sender*/, System::Drawing::Printing::PrintPageEventArgs^ e )
{
String^ text = textBox1->Text;
System::Drawing::Font^ printFont = gcnew System::Drawing::Font( "Arial",35,System::Drawing::FontStyle::Regular );
e->Graphics->DrawString( text, printFont, System::Drawing::Brushes::Black, 10, 10 );
}

34 :デフォルトの名無しさん:2009/02/26(木) 12:46:38
ウホッ。ありがとうございます。ただ・・

(this, &Form1::document_PrintPage);
↑の部分で


error C2039: 'document_PrintPage' : '印刷2ch::Form1' のメンバではありません。

と、出てしまうんですが・・。

35 :デフォルトの名無しさん:2009/02/26(木) 12:52:40
それは
void document_PrintPage( Object^ /*sender*/, System::Drawing::Printing::PrintPageEventArgs^ e )
この関数だから、それに合わせればいい。

36 :デフォルトの名無しさん:2009/02/26(木) 12:53:27
じゃぁ、こうですね(・∀・)

(this, &Form1::printDocument1_PrintPage);

37 :デフォルトの名無しさん:2009/02/26(木) 12:53:53
あ、サンプル通りクラス定義内に書いたからクラス名省略されてるけど
メンバー関数だよ、どれも

38 :デフォルトの名無しさん:2009/02/26(木) 13:09:12
なぜか、ファイルに出力されるんですが・・。

39 :デフォルトの名無しさん:2009/02/26(木) 13:21:27
あ、いけました。でかいフォントですな。

ありがとうございます!!

40 :デフォルトの名無しさん:2009/03/02(月) 00:32:15
初めてVisual C++を使ってみました。
int main(array<System::String ^> ^args)
いきなり ^ という単項演算子らしき物が出来たのですが、コレはなんですか??
とりあえずarray以下無視しても問題なく動いたのですが。

41 :デフォルトの名無しさん:2009/03/02(月) 00:35:04
C++をやりたいのかC++/CLIをやりたいのかで返答は変わる

42 :デフォルトの名無しさん:2009/03/02(月) 00:36:05
>>41
標準のC++です。


43 :デフォルトの名無しさん:2009/03/02(月) 00:39:19
VC++2008EEで
#include <iostream.h>

int main()
{
cout << "やぁ、こんちは。" << endl;
return 0;
}
はどこでプログラミングすればいいんですか? 普通に新規作成から何か設定するんですか?warning C4627: '#include <"stdafx.h>': プリコンパイル済みヘッダーの使用を検索中にスキップされました
1> ディレクティブを 'stdafx.h' に追加するか、プリコンパイル済みヘッダーをビルドし直します
が出てきます。

44 :デフォルトの名無しさん:2009/03/02(月) 01:28:36
>>42
なら作ったプロジェクトが間違ってる。
>>40はC++/CLIのプロジェクト。

45 :デフォルトの名無しさん:2009/03/02(月) 01:37:36
>>43
Win32 コンソールアプリケーションのプロジェクトを作れ。
プリコンパイル済みヘッダーを使いたくなければプロジェクトの設定から無効にしろ。
あと、iostream.hは古いヘッダで今のVC++には無い。

46 :デフォルトの名無しさん:2009/03/02(月) 04:20:56
VC++2008でフォームアプリケーションを作成しています。
自動生成されるフォームの中に動的にラベルを複数作成しているのですが、
作成されたラベルのクリック時のイベントハンドラが全て同じイベントを呼び出す場合、
クリックしたボタンを判別し、その名前や座標などを表示させたいのですが、
以下のクリックイベントにどのようなプログラムを入れたら良いでしょうか?
もしよろしければ教えて下さい、お願いします。
private: System::Void node_Click(System::Object^ sender, System::EventArgs^ e)
{
}
また、もし他の方法で良いものがありましたら、教えて下さい。m(__)m

47 :デフォルトの名無しさん:2009/03/02(月) 06:37:22
>>45わかりました。ありがとうございます。

48 :デフォルトの名無しさん:2009/03/02(月) 06:55:04
Senderみつおに聞けば教えてくれる

49 :デフォルトの名無しさん:2009/03/02(月) 10:35:58
ナハナハ

50 :40:2009/03/02(月) 20:13:26
>>44
ありがとうございます。
では標準C++でコンソールアプリケーションを作りたいときは
プロジェクトの種類
をWin32にして
Win32 コンソール アプリケーション
にすれば良いですか?


51 :デフォルトの名無しさん:2009/03/02(月) 21:01:10
訊く前にマニュアル読むなり試すなりしなさい

52 :40:2009/03/02(月) 22:09:19
>>50
とりあえずそれでやってみて問題無いようです。
おそらくコレで良いということですね。

53 :40:2009/03/02(月) 22:10:02
安価間違えました。
>>51


54 :デフォルトの名無しさん:2009/03/05(木) 00:00:52
>>46
>クリックしたボタンを判別し、その名前や座標などを表示させたいのですが、

仮引数のsenderにそのクリックされたボタンが参照されてる

55 :デフォルトの名無しさん:2009/03/06(金) 03:12:17
C++スレで質問したら環境依存だと教えてもらったのでこっちで質問させてください

以下コピペになりますがよろしくお願いします。

ぐぐってもドキュメント見てもわからなかったんで
助言頂けると非常に助かります。
VC++2008ExpressEditionを使用しているので、どこかを変更しなければいけないのか…


質問の内容は…
猫でもわかるプログラミングSDK第123章
ttp://www.kumei.ne.jp/c_lang/sdk2/sdk_123.htm

これと同じプログラムを組んでも、WndProc内でcase IDM_READの
hMapFile2 = OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, "Kumei's Object");
のOpenFileMappingがNULLを返してくるんだけど
原因がまったくわかりませんorz


56 :デフォルトの名無しさん:2009/03/06(金) 10:37:12
CreateFileMappingが失敗してるか確かめろ

57 :デフォルトの名無しさん:2009/03/06(金) 14:00:07
>>56
CreateFileMappingは成功してると思います。
if (!hMapFile1)の部分にも引っかからず、GetLastErrorでも0を返してきましたので…

58 :デフォルトの名無しさん:2009/03/06(金) 14:39:40
>>57
OpenFileMappingの後のGetLastErrorは何を返す?

59 :デフォルトの名無しさん:2009/03/06(金) 14:48:29
それが…
CreateFileMappingは0を返して正常だといってるのに
OpenFileMappingの後のGetLastErrorは2を返してきて…
指定されたファイルが見つかりませんと。

60 :55:2009/03/06(金) 15:25:36
55です。長時間悩み、調べ
自分のタイプミスからマッピングオブジェクトの名前の不一致など疑い
試行錯誤した結果…

CloseHandle(hMapFile1)をコメント化し、無効にすると
OpenFileMappingが成功しました。
たぶん解決の糸口になるのでCloseHandleなどのタイミングなどを
調べていけばいいかなという結果に。。。

アドバイスをくれた>>56,>>58さん、サンクスでした


61 :デフォルトの名無しさん:2009/03/06(金) 22:54:18
VC++2008EEでcout<<" "<<endlはどうやって使うのでしょうか?


62 :デフォルトの名無しさん:2009/03/06(金) 23:00:27
普通はそんなの使わない

63 :デフォルトの名無しさん:2009/03/06(金) 23:03:23
>>62
普通はどんなものを使うのですか?
手元の本はそれを使った説明ばかりなもので・・・

64 :デフォルトの名無しさん:2009/03/06(金) 23:15:40
>手元の本はそれを使った説明ばかりなもので・・・
使い方は、その本の最初のほうに書いてある。
書いていなかったら、そんな本は参考にならんから捨てろ。

65 :デフォルトの名無しさん:2009/03/06(金) 23:53:50
>>64ありがとうございました。
一応捨てずに残しておきたいと思います

66 :デフォルトの名無しさん:2009/03/06(金) 23:56:42
質問です。Visual C++ 6.0のSpy++に付いている
ウインドウファインダーコントロール
(ドラッグしてディスプレイ上の任意のウインドウを選択するヤツ)
はVC++6.0のActiveXコントロールにないのでしょうか。
またはそれに似たツールなどはどこかにありませんでしょうか

67 :デフォルトの名無しさん:2009/03/06(金) 23:59:10
http://www.codeguru.com/cpp/controls/controls/article.php/c2149#more
ありました、失礼しましたm(_ _)m

68 :デフォルトの名無しさん:2009/03/07(土) 00:24:52
>>65
もし、その本に#include <iostream.h>とか書いてあるんだったら捨てるべき。古本屋でもいいけど。
それは古代のものだからVisual C++ 2008には搭載されていないというだけのこと。

69 :デフォルトの名無しさん:2009/03/07(土) 07:04:19
マウスがのってるウインドウ選択するの意外に簡単だな
WindowFromPoint だけ知ってれば作れる

70 :デフォルトの名無しさん:2009/03/07(土) 19:49:30
>>66-67の者です。
Spy++と同等のウインドウ選択ツールもどきは無事使うことが出来ました。
しかし選択後(ウインドウ上でマウスを放した後も)
選択されたウインドウの周囲には枠の表示が残ってしまうので、
それをなんとか消したいと思っています。

選択されたウインドウハンドルが手にはいるので、
::SendMessage(選択されたハンドル,WM_PAINT,0,0); なり
::SendMessage(選択されたハンドル,WM_ERASEBKGND,0,0); なり
いろいろメッセージを送ってみたのですが、なぜか消えてくれません。
Spy++を利用して選択ウインドウにメッセージが送られていることは確認しているのですが・・・
この原因について見当の付く方教えてください。お願いします。

71 :デフォルトの名無しさん:2009/03/07(土) 21:04:17
表示ができたものを消せないわけがない

72 :デフォルトの名無しさん:2009/03/07(土) 21:10:44
>::SendMessage(選択されたハンドル,WM_PAINT,0,0);
>::SendMessage(選択されたハンドル,WM_ERASEBKGND,0,0):
どちらもトリガーになるものがないと働かないメッセージだと思うが。

::InvalidateRect() とかのね。



73 :デフォルトの名無しさん:2009/03/07(土) 21:42:36
InvalidateRect(ハンドゥル,NULL,TRUE);
で出来ました^^)
どうもありがとう!

74 :デフォルトの名無しさん:2009/03/07(土) 22:13:36
エディットに関連付けたスピンボタンについて。

pSpin->SetRange(-10, 10);
pSpin->SetPos(0);

とやっても、0が表示されないんだけど仕様??
SetPos(1)やSetPos(-1)は表示されるんだけど。。。

75 :デフォルトの名無しさん:2009/03/08(日) 18:20:59
C++勉強してみようと思うんですけど取り合えずは猫でも分かる〜を全部終わらせてみるってのが良いでしょうか?

76 :デフォルトの名無しさん:2009/03/08(日) 18:24:25
2Dシューティングゲームを作っているのですが、クラスの扱いに困っています。
敵の弾クラス(cBullet)を用意したのですが、それをうまく活かせません。
敵がそれぞれcBullet Bullet[100]といったように個別に弾を持ったのでは効率が悪い気がします。
一括して管理したいのですが、どういう構造にするとよいのでしょうか。

77 :デフォルトの名無しさん:2009/03/08(日) 18:32:16
>>75
自分がわかりやすいと思ったとこを参考にすればいい。
そこのやりかたが絶対唯一じゃないことさえ認識していればなんとかなるでしょ。

78 :デフォルトの名無しさん:2009/03/08(日) 18:36:00
>>76
自分の思った通りにやってみればいい。
画面上に存在できる弾の数だけグローバルで配列持ってもいいし。

79 :デフォルトの名無しさん:2009/03/08(日) 18:45:14
>>78
なるほど、まずはそれでやってみます。
ありがとうございました

80 :75:2009/03/08(日) 20:32:46
猫でも分かるー見てやってみたら最初っからつまづいた
VC++2008EEで説明してるサイト教えてもらえませんか・・・

81 :デフォルトの名無しさん:2009/03/08(日) 21:03:39
VCは初心者向けの情報は少ないし、あっても古い。
もしかしたらあるかもしれないが初心者用のサイトなんか興味ないから知らん

82 :デフォルトの名無しさん:2009/03/09(月) 00:30:43
>>75
自分が作りたいと思ったものを作ってみるのが一番の勉強法

83 :デフォルトの名無しさん:2009/03/09(月) 00:38:45
いや、それよりvc2008eeは入門サイトほとんど駄目だからつらいな
.netフレームワーク使うとこうなんのか?
スタンダード金出せば猫さん家も役に立つが
ソフトに金払う余裕ないだろうなぁ

84 :デフォルトの名無しさん:2009/03/09(月) 06:38:38
スタンダード金出さないと使えないのはMFCとリソースエディタ
win32なら無料で使えるから猫が全然使えないわけじゃない
ただあそこは古すぎるからコンパイルエラーぐらい自力で解決できないと無理

85 :デフォルトの名無しさん:2009/03/09(月) 10:04:00
ダイアログエディタが使えないのはちときついかな。
入門探すより、自分であれこれいじってみては。

86 :デフォルトの名無しさん:2009/03/09(月) 11:25:22
>>84
なあ古すぎる癖にシェアウェアとか猫はふざけてるよな

87 :デフォルトの名無しさん:2009/03/09(月) 13:16:02
VCEEで勉強するときは
#pragma warning(disable : 4996)

Unicode
あたりの情報は必須だな

そして、WinAPIでまた引っかかるとw

88 :デフォルトの名無しさん:2009/03/09(月) 14:09:59
VCEEって、セキュリティが強化された関数は使えないのか?

89 :デフォルトの名無しさん:2009/03/09(月) 14:11:19
使えるけどその関数を使った例題がほとんどないからでしょう

90 :デフォルトの名無しさん:2009/03/09(月) 18:33:00
すみません、どなたか教えてください

親クラスA、子クラスBともに仮想関数func()が実装されているとします

この時Aクラスのポインタ(A* pA)にBクラスのインスタンスのポインタを代入し
pA->func()
を呼び出した場合クラスAとBどちらのfunc()が呼ばれるのでしょうか

会社で実験しようと思ったんですが残業規制のせいで調べられなかったんでご存知の方ご教示くださいm(__)m

91 :デフォルトの名無しさん:2009/03/09(月) 18:36:29
C++の質問ならC++スレでした方がいい

92 :デフォルトの名無しさん:2009/03/09(月) 18:40:32
クラスA

93 :90:2009/03/09(月) 18:43:24
自己解決しました
クラスBですね

>>91
すみませんでした

94 :デフォルトの名無しさん:2009/03/09(月) 20:58:33
環境
VisualC++.NET(2003)

MFCを使ったアプリケーションを作っています。
フォームにエクセルのような格子で区切られた表のようなコントロールを貼り付けたいのですが
Webで調べてMicrosoft DataGrid Control 6.0とかMSFlexGridを使えばいい野ではないかというところまでは分かったのですが、

・MSFlexGridなんてものが.NET frameworkコンポーネントにもCOMコンポーネントにも存在しない。
・.NET frameworkコンポーネントにDataGridがあるが、そもそも初めからチェックが入っている。
 それなのにツールバーには表示されてない。
 一旦チェック外して再びチェックしなおすとツールバーにそれらしきものが追加されたが非アクティブになってて使えない。
・そもそも.NET frameworkコンポーネントの中はほぼ全部チェックが入っているのに
 ツールバーに一切無いのが理解出来ない。
・一度間違えてデフォルトの「ボタン」のコントロールをツールバーから削除してしまったので、
 COMコンポーネントから探したが同じものが無かった(プロパティが別物だった)
 アイテムの追加と削除ダイアログでリセットボタンを押して直す事が出来たが、
 デフォルトでツールバーにあるアイテムはCOMコンポーネントじゃないなら一体何者なのか?

行き詰っています。どなたか教えていただけないでしょうか?

95 :デフォルトの名無しさん:2009/03/09(月) 21:12:11
>>94
http://noribeat.s38.xrea.com/developer/03031501.html

96 :デフォルトの名無しさん:2009/03/09(月) 22:45:10
>>95
ありがとうございます。

ですがリンク先の指定どおりにActiveXの挿入を行っても、
Microsoft FlexGrid Control, version 6.0が選択肢の中にありません。


97 :デフォルトの名無しさん:2009/03/09(月) 22:56:19
>>94
そこらへんのVBランタイムを入れるとついてくることが多い。
MSFLXGRD.OCX入りのVB6ランタイムを探すんだ。

あとはこれで。
http://support.microsoft.com/kb/318597/ja

98 :94:2009/03/09(月) 23:10:50
自分のPCを検索して見ましたがMSFLXGRD.OCXは存在しないようです。
あと実行環境でレジストリへの登録が必要になるような面倒な作業をユーザーに強いたくない
(自分ですらめんどくさいのにもっと素人なら嫌気がさしてやめてしまうかもしれない)
のですが、そうなるともう自力でピクチャーボックスに描画するような形で作るしか無くなってしまうのでしょうか?


99 :デフォルトの名無しさん:2009/03/09(月) 23:40:09
ブラウザのActiveXコントロールと同じだからインストールは楽だよ

100 :デフォルトの名無しさん:2009/03/10(火) 01:45:05
>実行環境でレジストリへの登録が必要になるような面倒な作業をユーザーに強いたくない
ソフトのインストール時にREGファイルを食わせてやればいいだけ。
それをユーザに強いたら・・・そりゃダメだよな。

ま、Windowsの文字コード表程度の表なら、自前で作っても手間はそんなにかからないがね。

101 :デフォルトの名無しさん:2009/03/10(火) 17:07:09
VC++2005でMFCアプリに名前空間名に"interface"って使えない?
c2059というコンパイルエラーになる。
/clrオプションは使っていないし、
非MFCアプリやstdafx.hをincludeしないとコンパイル通るし
C++/CLIで予約語になってるeventとか他の単語は
使えるから単なるバグですかね?

102 :デフォルトの名無しさん:2009/03/10(火) 17:21:37
最近変なやつ多いな
同一人物?

103 :デフォルトの名無しさん:2009/03/10(火) 17:29:53
>>101
COM関係のヘッダのどれかで、#define interface structと定義されている。

104 :デフォルトの名無しさん:2009/03/10(火) 19:05:33
#include <stdio.h>
int main(void)
{
printf("Hello!\n");
return 0;
}

#include <iostream>
int main()
{
std::cout <<"Hello!" << std::endl;
return 0;
}

見るサイトによって書き方が違うけど結果は似たようなのがでるんですけど
これはどういう違いがあるんですか?

105 :デフォルトの名無しさん:2009/03/10(火) 19:15:37
C/C++

106 :デフォルトの名無しさん:2009/03/10(火) 19:26:37
>>105
どっちがCでどっちがC++?

107 :デフォルトの名無しさん:2009/03/10(火) 19:31:56
ggrks

108 :デフォルトの名無しさん:2009/03/10(火) 20:45:52
スレを勃てるまでもないC/C++の質問はここで 8
http://pc11.2ch.net/test/read.cgi/tech/1235921779/

109 :デフォルトの名無しさん:2009/03/12(木) 14:22:28
>>106
上がCで下がC++

110 :デフォルトの名無しさん:2009/03/12(木) 16:45:27
Visual Studio 2005 Vistaです。
6つのピクチャボックスに表示させた6枚の画像
(横3枚の2段)から1枚を選択(ダブルクリック)して、
選択した画像を左上のピクチャボックスの表示し、
選択した以外の画像は消去する、
といったことはどのようにして実現できますでしょうか。

111 :デフォルトの名無しさん:2009/03/12(木) 17:33:54
表示と消去ができるならクリックしたタイミングで好きなようにやればいい

112 :デフォルトの名無しさん:2009/03/12(木) 17:55:36
>>110
・6つのピクチャボックスに SS_NOTIFY スタイルを付加する。
・あとは STN_DBLCLK メッセージが通知されたときに、親ウィンドウに対して
 InvalidateRect( NULL) を投げればいい。

それが 「初期の描画なのか」 「ダブルクリック後の描画なのか」 「どれが選択されたのか」
を判断する仕組みは、当然必要だがね。

113 :110:2009/03/12(木) 18:40:15
>>111 >>112
アドバイスありがとうございます。
なんとかできました。

114 :デフォルトの名無しさん:2009/03/13(金) 20:10:04
VisualC++.NET(2003)を使ってます。

今まで作ってたソリューションをセカンドマシンでもいじるために

 メインマシンの共有フォルダにソリューションのフォルダごとコピー
 ↓
 セカンドマシンにブリーフケース作ってそのフォルダを持ってくる。

という風にしようとしたのですが、メインマシンのソリューションをコピーした段階で
元々正常にビルドできて実行できてたものが正常に動きません。

コピー先ソリューションの動作
@開始ボタンを押すと毎回「プロジェクトの構成が変更されています。ビルドしますか?」のダイアログが出る。
・@でいいえを選ぶと何事も無く動く
・@ではいを選ぶと元々出なかったエラー「ビルドエラーが発生しました。続行しますか?」というダイアログが出る。
・BuildLog.htmを見ると 'CDHtmlDialog' : 定義されていない基本クラスが宣言されています。などを筆頭に
 ずらずらとエラーが出ている。
 これは元のフォルダでは出ない。

初心者でソリューションの構成ファイルなどのどこかに絶対パスがあるのか、見当も付きません。
プログラム自体は絶対パスを指定するような部分は有りません。
どなたか、解決のヒントでも教えていただけないでしょうか?

また、個人で2PCでプログラム開発する場合VSSのような物(多分有料ソフトですよね?)
を使わずに同期とったりバージョン管理する良い方法があれば教えて頂けないでしょうか?


115 :114:2009/03/13(金) 20:48:02
もう一度やってみたら上手くいきました。

何故なのか分かりませんが一回目にやったコピーでファイルがおかしくなっていたのかもしれません。


116 :791 + 792:2009/03/13(金) 22:48:32
エラーUZEEEEEEな状態助けてくださいな。

#include "stdafx.h"
#include <iostream>

int main()
{
int a;
int b;
int r;

cout << "割られる数は?(整数)";
cin >> a; // ここで数値を読み取っている
cout << "割る数は?(整数)";
cin >> b; // ここで数値を読み取っている
r = a % b;
cout << "割った余りは" << r << "だよ" << endl;
}

エラーはrror C2065: 'cout' : 定義されていない識別子です。
こんなのが endlだったりcinだったり6個あった。
ソースおかしい?

117 :デフォルトの名無しさん:2009/03/13(金) 22:54:19
>>116
名前空間(namespace)について勉強しろ

118 :デフォルトの名無しさん:2009/03/13(金) 23:05:18
>>116
stdafx.h を開いて

using namespace std;

と書け。

119 :デフォルトの名無しさん:2009/03/13(金) 23:15:13
>>118
それやっちゃうと名前空間を定義してる意味がなくなるので
あまり人にすすめることではないかと…


120 :791 + 792:2009/03/14(土) 00:12:02
ますます訳が分からなくなった。
namespaceで何処を囲えば良いのかさっぱり。
どこかで名前が被ってるからnamespace使えってことで合ってるんだよね?
知らない間にエラーが102個に増えた。

何処が駄目で何でnamespaceが必要なのかまだ理解できてない俺・・・

121 :デフォルトの名無しさん:2009/03/14(土) 00:22:36
ttp://homepage2.nifty.com/well/FirstProgram.html

stdafx.hなんて捨ててしまえと思わなくもない

122 :デフォルトの名無しさん:2009/03/14(土) 00:39:30
>>120
要は、std という名前空間をどこで使いたいか、だ。
int main() のなかだけで使いたいなら int main() の中に書けばいい。
int main() の書かれている cpp ファイルの中で使いたいなら、#include <iostream> の下あたりに書く。
いつでもどこでも使いたいなら stdafx.h に書く。(このときの注意点は >>119

123 :デフォルトの名無しさん:2009/03/14(土) 05:28:15
バカみたいな質問で申し訳ありません。猫でもで勉強してて今まで、VC++2008でCの勉強をやってたんですが、C++をやり始め、

1>.\ex01.cpp(1) : fatal error C1083: include ファイルを開けません。'iostream.h': No such file or directory

というエラーが出ました。これはiostream.hが標準ライブラリにないという事ですよね。
色々、ググってみたんですが、標準ライブラリの宣言で躓くなんてバカな奴はいないのか、
どこでダウンロードするのかどうやって標準ライブラリに追加するのかさっぱりわかりません。
教えていただけると助かります<m(__)m>

124 :デフォルトの名無しさん:2009/03/14(土) 06:53:08
C++初心者用のスレへ行った方がいい

125 :デフォルトの名無しさん:2009/03/14(土) 07:21:13
>>123
<iostream.h>は昔の存在。だから最近のVisual C++には入っていない。
<iostream>をインクルードして、coutとかcinとかはstd::cout、std::cinなどのようにstd::を付けろ。
詳しくは最近の入門書を読め。

126 :デフォルトの名無しさん:2009/03/14(土) 07:57:31
拡張子を.cppにしたときから
インクルードファイルは全て.h抜きを覚悟すべきだな

127 :デフォルトの名無しさん:2009/03/14(土) 08:24:13
>>123
猫でも…(ryは、難点として、標準ライブラリのインクルードがおかしいってのがある。
あきらめて書籍買え。その方が実りあるよ。


128 :791 + 792:2009/03/14(土) 10:31:41
int main(){
using namespace std;にしたら下のエラーが出たけど、ググったら解決した。
コンソールアプリケーションでプロジェクトを作らないと下のエラーが出る見たいだから
プロジェクトを作り直してやったらすんなり。
MSVCRTD.lib(crtexew.obj) : error LNK2019: 未解決の外部シンボル _WinMain@16 が関数 ___tmainCRTStartup で参照されました。
C:\Documents and Settings\Nanashi\My Documents\Visual Studio 2008\Projects\null1\Debug\null1.exe : fatal error LNK1120: 外部参照 1 が未解決です。
まだnamespaceの意味プーだけど、>>121が教えてくれたサイトを見たりして
理解できるようにがんばる
>>122もありがとう,助かったよ。

129 :デフォルトの名無しさん:2009/03/14(土) 10:36:04
デフォルトエントリポイント
コンソールアプリケーション→main
Windowsアプリケーション→WinMain
※マルチバイト文字セットの場合

130 :791 + 792:2009/03/14(土) 10:58:01
>>129
ありがとう。
int WINAPI WinMain( HINSTANCE, HINSTANCE, LPSTR, int)
でやってみたけど、デバッグはエラーないけど
デバッグなしで開始しても何も出てこない・・・
これはもう少しC++が分かるようになれば出てくるんだよね?
ちゃんとしたウィンドウとかダイアログが出せるようになるのが楽しみだ

131 :デフォルトの名無しさん:2009/03/14(土) 11:13:00
>デバッグなしで開始しても何も出てこない・・・
Windowsアプリケーションなんだから、ウィンドウを作らないことには何も出てこない。


132 :デフォルトの名無しさん:2009/03/14(土) 15:19:49
ある環境をリンク中に、下記エラーが出るようになってしまいました。
>LIBCMTD.lib(dllcrt0.obj) : error LNK2019: 未解決の外部シンボル __imp__GetCurrentThreadId@0 が関数 __CRT_INIT@12 で参照されました。
PlatoformSDKの関数らしいですが、どのライブラリが足りないかご存じの方いませんか?

133 :デフォルトの名無しさん:2009/03/14(土) 15:48:20
CRT_INITで参照するものが不足するか?
環境の問題だろ

134 :デフォルトの名無しさん:2009/03/14(土) 18:04:29
>>130
C++ができるかどうかとWindowsプログラミングは全く関係ないぞ。
現に、猫でものWin32編は基本的にCだけでそういうことをやっている。

135 :791 + 792:2009/03/14(土) 18:38:52
>>131
確かにWindow作らなきゃ何も表示されなくて当たり前だった。

>>134
ごめん、まだC++否プログラミング始めて1日くらいしか過ぎてないんだ。すまない
Windowsプログラミングとは関係ないのか、猫でもにはWindowsSDKとかあったな。

if関数に少しだけ感動した,いろいろ応用が利きそうな関数だ。

136 :デフォルトの名無しさん:2009/03/14(土) 18:54:15
if関数は初めて聞いた

137 :デフォルトの名無しさん:2009/03/14(土) 19:01:40
VBAにiif関数があってそれのことかと思た

138 :132:2009/03/14(土) 19:54:13
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib
とパス指定すべきところを、
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib\x64
としてました。。。(笑

こんなんですごい時間かかった(汗

139 :123:2009/03/14(土) 22:21:55
ありがとうございますm(__)m

明日、本屋行って標準ライブラリ集でも買ってきて、猫で続きをやろうと思います。

140 :デフォルトの名無しさん:2009/03/16(月) 17:45:39
入力支援がちっとも支援してくれません。
たまに入力候補一覧のリストボックスが出てきたと思っても、
必要なものを探すのにエライ手間がかかります。
どうしたらいいですか。

141 :デフォルトの名無しさん:2009/03/16(月) 18:49:28
あれはMFCのためにある

142 :デフォルトの名無しさん:2009/03/17(火) 00:54:01
初歩的な質問ですが、

どこかの設定を無意識に変えてしまったせいなのか
構成の種類をDLLにした場合でも、自動でLIBを作成してくれなくなりました
どこの設定をかえればいいのか教えていただけるとありがたいです。

VC++2008EEを使用しています。

143 :デフォルトの名無しさん:2009/03/17(火) 01:40:35
自己解決しました

EXPORTを書き忘れてましたorz

144 :デフォルトの名無しさん:2009/03/18(水) 19:59:37
窓の杜にあるようなソフトもvc++で作れますか?

145 :デフォルトの名無しさん:2009/03/18(水) 20:46:28
>>144
作れます。初心者を脱出してC++とWinのAPIをめっちゃ勉強すれば。

146 :デフォルトの名無しさん:2009/03/20(金) 10:49:08
sdkddkver.hを見る限り、_WIN32_WINNTを適当な値に設定して、
その他WINVER等の定義は任せてしまった方が良いのでしょうか。

147 :デフォルトの名無しさん:2009/03/20(金) 11:07:49
ヘッダファイルの読み込み順序による。

148 :デフォルトの名無しさん:2009/03/20(金) 11:16:32
ありがとうございます。たしかにそうかもしれませんね。
いつもwindows.hからインクルードしてたので、順番のことは気にも留めてませんでした。

149 :デフォルトの名無しさん:2009/03/20(金) 12:22:34
始めようと思うんですが、公式ページの「Web インストール (ダウンロード)」をクリックしても
エラーページに飛ばされてダウンロードできません。
同じ症状の方いますか?

Firefoxのエラー文によると
>サイトアドレスは有効なようですが、接続を確立できませんでした。

150 :デフォルトの名無しさん:2009/03/20(金) 12:36:09
Visual Studio 2008 Part 15
http://pc11.2ch.net/test/read.cgi/tech/1233853864/

151 :デフォルトの名無しさん:2009/03/20(金) 12:57:54
download.microsoft.comに繋がらないようです。
自分だけ?

152 :デフォルトの名無しさん:2009/03/20(金) 13:08:15
と今日の日記に書いておこう

153 :デフォルトの名無しさん:2009/03/22(日) 12:56:07
コメントを関数の前に書くと
その前の関数のグループになってしまいます
コメントがグループの初めになるように任意に修正する方法はないでしょうか
ご存知の方お願いします

154 :デフォルトの名無しさん:2009/03/24(火) 21:57:11
Microsoft PressのVisual C++.NET実践講座 Vol.1基礎編の本には、
Console::WriteLine(S"Hello World");
のようにダブルクォートで囲った文字列の前にSが付いていて、それについて
何の説明も書いてないけど、このSって何。

155 :デフォルトの名無しさん:2009/03/24(火) 22:04:42
わかったSystem::String*だ

156 :デフォルトの名無しさん:2009/03/25(水) 02:18:26
visual cで作られたアプリケーションがあるのですが、
これを改造して自分のほしい機能を付け加えています。

自分で追加した変数やマクロなどとそうではない箇所とで、識別子(関数名、変数名、マクロ名)を明確に分けたいのですが、
新たに追加した部分にルールをつけるだけでなく、
改造元の識別子のすべてに対して、「kaizoumoto_」「KAIZOUMOTO_」のような接頭語をつけたいと考えました。
そのようなことを一括で行うことは可能でしょうか。
改造元から現在の状態までの間の追加は失われてかまいません。(改造元があって、それの識別子を一括で変更したいです。)

というか、Visual Cと全然関係ないですか。すみません。
ご存知でしたら、Helpをお願いします。

157 :デフォルトの名無しさん:2009/03/25(水) 10:34:11
VC++のエディタウィンドウの行間をひらげることってできますか?
フォントやエディタの設定項目を調べて見ましたが、うまくできませんので、お願いします。

45 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)