επιστημη(@episteme) の回答履歴
- 【VC++2005(CLR)】ラベルやテキストボックスの背景色を変化させたい
VC++初心者です。 現在、VC++2005 express edition、CLRプロジェクトで コーディングしております。 ラベルやテキストボックスの背景色を変えるには どうしたら宜しいでしょうか。 以下のようにコーディングしたのですが、色が変わってくれません。 他に何か設定が必要なのでしょうか。 label->ResetBackColor(); label->BackColor.Red;
- VC++ 2008で別classからFormがincludeできません
お世話になります。 タイトルの通り、別ソースで書いてあるクラスでForm1のincludeができません。includeすれば、そのclassの型が使用できるという認識なのですが、何か他にしなければならない事があるのでしょうか…。 環境はVisual C++ 2008 Express Editionです。 以下、ソースです。 [Form1.h] #pragma once #include "testclass.h" namespace testAppli { (略) private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { testclass *aaa = new testclass(); aaa->testfunc(this); } [testclass.h] #pragma once #include "stdafx.h" #include "Form1.h" class testclass { public: void testfunc(Form1^ aaa); }; [testclass.cpp] #include "stdafx.h" #include "testclass.h" void testclass::testfunc(Form1^ aaa) { return; } 以下のコンパイルエラーが出ています。 1>c:\documents and settings\in flames\my documents\visual studio 2008\projects\testappli\testappli\Form1.h(98) : error C2065: 'testclass' : 定義されていない識別子です。 1>c:\documents and settings\in flames\my documents\visual studio 2008\projects\testappli\testappli\Form1.h(98) : error C2065: 'aaa' : 定義されていない識別子です。 1>c:\documents and settings\in flames\my documents\visual studio 2008\projects\testappli\testappli\Form1.h(98) : error C2061: 構文エラー : 識別子 'testclass' 1>c:\documents and settings\in flames\my documents\visual studio 2008\projects\testappli\testappli\Form1.h(99) : error C2065: 'aaa' : 定義されていない識別子です。 1>c:\documents and settings\in flames\my documents\visual studio 2008\projects\testappli\testappli\Form1.h(99) : error C2227: '->testfunc' : 左側がクラス、構造体、共用体、ジェネリック型へのポインタではありません。 1> 型は ''unknown-type'' です。 1>c:\documents and settings\in flames\my documents\visual studio 2008\projects\testappli\testappli\testclass.h(8) : error C2061: 構文エラー : 識別子 'Form1' 1>.\testclass.cpp(4) : error C2065: 'Form1' : 定義されていない識別子です。 1>.\testclass.cpp(4) : error C2065: 'aaa' : 定義されていない識別子です。 1>.\testclass.cpp(5) : error C2448: 'testclass::testfunc' : 関数の定義が間違っています。 1>testAppli.cpp 1>c:\documents and settings\in flames\my documents\visual studio 2008\projects\testappli\testappli\testclass.h(8) : error C2061: 構文エラー : 識別子 'Form1' 1>c:\documents and settings\in flames\my documents\visual studio 2008\projects\testappli\testappli\Form1.h(99) : error C2660: 'testclass::testfunc' : 関数に 1 個の引数を指定できません。
- ベストアンサー
- C・C++・C#
- Nanzokoree
- 回答数2
- 【VC++2005(CLR)】ラベルやテキストボックスの背景色を変化させたい
VC++初心者です。 現在、VC++2005 express edition、CLRプロジェクトで コーディングしております。 ラベルやテキストボックスの背景色を変えるには どうしたら宜しいでしょうか。 以下のようにコーディングしたのですが、色が変わってくれません。 他に何か設定が必要なのでしょうか。 label->ResetBackColor(); label->BackColor.Red;
- VC++ 2008で別classからFormがincludeできません
お世話になります。 タイトルの通り、別ソースで書いてあるクラスでForm1のincludeができません。includeすれば、そのclassの型が使用できるという認識なのですが、何か他にしなければならない事があるのでしょうか…。 環境はVisual C++ 2008 Express Editionです。 以下、ソースです。 [Form1.h] #pragma once #include "testclass.h" namespace testAppli { (略) private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { testclass *aaa = new testclass(); aaa->testfunc(this); } [testclass.h] #pragma once #include "stdafx.h" #include "Form1.h" class testclass { public: void testfunc(Form1^ aaa); }; [testclass.cpp] #include "stdafx.h" #include "testclass.h" void testclass::testfunc(Form1^ aaa) { return; } 以下のコンパイルエラーが出ています。 1>c:\documents and settings\in flames\my documents\visual studio 2008\projects\testappli\testappli\Form1.h(98) : error C2065: 'testclass' : 定義されていない識別子です。 1>c:\documents and settings\in flames\my documents\visual studio 2008\projects\testappli\testappli\Form1.h(98) : error C2065: 'aaa' : 定義されていない識別子です。 1>c:\documents and settings\in flames\my documents\visual studio 2008\projects\testappli\testappli\Form1.h(98) : error C2061: 構文エラー : 識別子 'testclass' 1>c:\documents and settings\in flames\my documents\visual studio 2008\projects\testappli\testappli\Form1.h(99) : error C2065: 'aaa' : 定義されていない識別子です。 1>c:\documents and settings\in flames\my documents\visual studio 2008\projects\testappli\testappli\Form1.h(99) : error C2227: '->testfunc' : 左側がクラス、構造体、共用体、ジェネリック型へのポインタではありません。 1> 型は ''unknown-type'' です。 1>c:\documents and settings\in flames\my documents\visual studio 2008\projects\testappli\testappli\testclass.h(8) : error C2061: 構文エラー : 識別子 'Form1' 1>.\testclass.cpp(4) : error C2065: 'Form1' : 定義されていない識別子です。 1>.\testclass.cpp(4) : error C2065: 'aaa' : 定義されていない識別子です。 1>.\testclass.cpp(5) : error C2448: 'testclass::testfunc' : 関数の定義が間違っています。 1>testAppli.cpp 1>c:\documents and settings\in flames\my documents\visual studio 2008\projects\testappli\testappli\testclass.h(8) : error C2061: 構文エラー : 識別子 'Form1' 1>c:\documents and settings\in flames\my documents\visual studio 2008\projects\testappli\testappli\Form1.h(99) : error C2660: 'testclass::testfunc' : 関数に 1 個の引数を指定できません。
- ベストアンサー
- C・C++・C#
- Nanzokoree
- 回答数2
- 【VC++2005(CLR)】1つのダイアログに複数のまとまったデータ群を載せたい
VC++初心者です。 現在、CLRのプロジェクトでコーディングしています。 表題の件について、具体的にどのように設計していけばよいのか (画面設計で利用したほうがよいフォームの種類など) ご教授いただきたくお願いします。 (どんな方針で設計していけばよろしいでしょうか) (主に画面設計について伺いたいです。) やりたいことはこんなイメージの内容です。 *********************** ・1つのダイアログに複数の外国為替のデータを載せたい。 ・1つの国が持つデータは、その国の国旗画像データ、その日の最高値、最安値、平均値、現在値を表示させたい ・1つのダイアログに、20国のうち1~4つの国のデータを表示させたい。 ・1国表示なら、ダイアログ全体にさせたい ・2国表示なら、そのダイアログの上下にさせたい ・3,4国表示なら、上下左右を4分割させて表示させたい。 *********************** (画面設計では、Panelを使って国ごとに1つずつ割り当てて あげればいいのかな、などと考えていますがどうでしょうか。 参考になるページを教えていただけると幸いです。)
- 自作のクラスの基底クラスは何を使えばよいのでしょうか?
VC2005のウィザードを使うとで枠は作られるので、そこまでは問題なくえきました。 MFCでは関数でなくクラスを作成して、それを使いまわすというやり方のようなので 今度、自作のクラスの作成したいのですが 基本クラスを選択しようとすると、たくさん出てきまして、どれを選択したらよいか判断付きません。 クラス名は、テストなのでCTestとしますが、 画面など他から拡張するクラスを作るのではなく、以前作成した関数の集まり程度のものなので、シンプルな基底クラス(というのでしょうか?)から作成したいです。 何を選べば一般的でしょうか? 作成したクラスの使い方(宣言の仕方など作法)について詳しく書かれている本をご存じ方も教えて下さい。
- オブジェクト指向で、インターフェースにないメソッドを呼ぶ
こんにちは。質問させてください。 現在C++でプログラムを書いているのですが、以下のようなプログラムを書いたとします(これ例ですので、実際のプログラムとは異なります)。 // ポインターを抽象化 class PointerInterface { }; // 抽象化したクラスを継承して整数型のポインタを作る class IntPointer : public PointerInterface { private: // int型のポインタ int *p; public: int* get() { return p; } }; // 抽象化したクラスを継承して少数型のポインタを作る class FloatPointer : public PointerInterface { private: float *p; public: float* get() { return p; } }; PointerInterface* CreateInterface( bool flag ) { PointerInterface* result = 0; if( flag ) { result = new IntPointer; } else { result = new FloatPointer; } return result; } void setIntPointer( PointerInterface* ptr ) { // ここでint型のポインターを取り出して操作したい } void main() { PointerInterface* ptr = CreateInterface( true ); setPointer( ptr ); } インターフェースは同じなのに継承先に内含されている変数のタイプが違い、それを取得したい場合が出てくると思います。 こういう場合どのように実装すれば、より美しくコーディングすることができるでしょうか? /* 私は 1:PointerInterfaceにvoid*を戻すメソッドを宣言する 2:setIntPointerの中で無理やりキャストして子クラスのgetを無理やり呼び出す という2つの方法が思いついたのですが、なんだかどっちのコーディングもピンときません。 お知恵を貸してください! ※今回はtemplateを使うというのは、なしでお願いします。 */
- オブジェクト指向で、インターフェースにないメソッドを呼ぶ
こんにちは。質問させてください。 現在C++でプログラムを書いているのですが、以下のようなプログラムを書いたとします(これ例ですので、実際のプログラムとは異なります)。 // ポインターを抽象化 class PointerInterface { }; // 抽象化したクラスを継承して整数型のポインタを作る class IntPointer : public PointerInterface { private: // int型のポインタ int *p; public: int* get() { return p; } }; // 抽象化したクラスを継承して少数型のポインタを作る class FloatPointer : public PointerInterface { private: float *p; public: float* get() { return p; } }; PointerInterface* CreateInterface( bool flag ) { PointerInterface* result = 0; if( flag ) { result = new IntPointer; } else { result = new FloatPointer; } return result; } void setIntPointer( PointerInterface* ptr ) { // ここでint型のポインターを取り出して操作したい } void main() { PointerInterface* ptr = CreateInterface( true ); setPointer( ptr ); } インターフェースは同じなのに継承先に内含されている変数のタイプが違い、それを取得したい場合が出てくると思います。 こういう場合どのように実装すれば、より美しくコーディングすることができるでしょうか? /* 私は 1:PointerInterfaceにvoid*を戻すメソッドを宣言する 2:setIntPointerの中で無理やりキャストして子クラスのgetを無理やり呼び出す という2つの方法が思いついたのですが、なんだかどっちのコーディングもピンときません。 お知恵を貸してください! ※今回はtemplateを使うというのは、なしでお願いします。 */
- 初期化しているつもりなのに、初期化されずにrand関数の結果を得る
皆様。こんにちは。 C++で簡単なプログラムを書いていたつもりでしたが、 コンパイルが正常であった後に、 プログラムを動作させてみたら、 自分の意図とは少し異なる結果となり、 どこが違うのか?が どうも自分では分かりかねてしまい、 アドバイスをいただきたく 質問させていただきました。 以下の例にあるように、 「a」と「b」という2文字の間に ランダム関数で作成した「任意の数字」を挟む処理を行い その結果を画面に表示するつもりです。 また、この処理を「num」で指定した回数分だけ 実行させたいと思っていました。 ■表示させようとした結果:「a」+「生成した乱数」+「b」 ■担当プログラム ------------------------------------------------------ for (int i=0; i<num; i++) { std::stringstream keystream ; srand((unsigned)time(NULL)); // 乱数の初期化 int randomnum = rand()% 109999999; // 乱数の生成 keystream << "a" << randomnum << "b" ; printf(keystream); } ------------------------------------------------------ しかし、実際には、 指定された回数分だけの、 表示結果は得られるものの、 a123456b a123456b a123456b a123456b a123456b 上記例(num=5)のように、 乱数の部分が、全部同じ乱数となっていました。 しかし、forの中で 新たに乱数を生成する際、 生成する前に、 乱数の初期化をしているつもりでいますので、 プログラムを実行させた場合に、 表示させれた結果が、 どうして全て同じ乱数を得ているのか?が分からないでいます。 何かアドバイスいただけるとありがたいです。 宜しくお願い致します。
- C++の継承の曖昧さの解決について教えてください
こんにちは。 よろしくおねがいします。 class bass { public: virtual ~bass(){} }; class Ex1 : public bass{}; class Ex2 : public bass{}; class Ex3 : public Ex1, public Ex2{}; void hoge( bass* foo ){} void main() { hoge( &Ex1() ); hoge( &Ex2() ); hoge( &Ex3() ); } でhoge( &Ex3() );の関数呼び出しで曖昧さが解決できないとコンパイルエラーが出てしまいます。 これを解決するにはどのように指定すればよいのでしょうか?
- C++の継承の曖昧さの解決について教えてください
こんにちは。 よろしくおねがいします。 class bass { public: virtual ~bass(){} }; class Ex1 : public bass{}; class Ex2 : public bass{}; class Ex3 : public Ex1, public Ex2{}; void hoge( bass* foo ){} void main() { hoge( &Ex1() ); hoge( &Ex2() ); hoge( &Ex3() ); } でhoge( &Ex3() );の関数呼び出しで曖昧さが解決できないとコンパイルエラーが出てしまいます。 これを解決するにはどのように指定すればよいのでしょうか?
- templateにの指定に従ったswitch
以下のような感じで、template TTの種類によって処理を変えたいのですがうまくいきません。 どの様にすればいいのでしょうか? 宜しくお願いします。 template<class TT> void vector3<TT>::GetMemberList(char *str,const int bufsize,char *format=0){ int i,j; if(!format){ switch(TT){ case int: format=new char("%d"); break; case double: format=new char("%lf"); break; } } }
- ベストアンサー
- C・C++・C#
- coronalith
- 回答数2
- オブジェクトの生成やメモリの削除について
class X{ ........ ........ ........ } に対し、 X *a=new X;//--------------1 ... ... ... a=new X;//----------------2 としてdeleteせずにnewをした場合、1の段階で作ったオブジェクトは削除されずメモリに残りっぱなしになるのでしょうか? これは、プログラムを終了しても残り続けるものなのでしょうか? また、mallocやcallocの場合はどうなるのでしょうか?
- ベストアンサー
- C・C++・C#
- coronalith
- 回答数2
- C#で使えるオブジェクトを作成するには
VisualC++のMFCを利用して、C#でも簡単に使えるオブジェクトを作成したいです。 MFCのオートメーションをサポートするDLLを作成しまして、 メソッドは echo とします。 VBSでは、 dim obj set obj = CreateObject("mytest.test") MsgBox obj.echo("hello") で簡単にオブジェクトを利用することができますが、 WEBで探したら、C#は結構面倒です。 MFCでどうやってオブジェクトを作ったら、 C#でもVBSのように簡単に使えるでしょうか。 ひとつ案として、ActiveXコントローラーを作ったら、 C#のフォームに貼り付けて、それならば、簡単にメソッドを呼び出すことができます。でも、GUIが必要になっちゃいます。 できればC#でこんな風に、 Mytest.test obj = new Mytest.testClass(); MessageBox.Show(obj.echo("hello")); 見たいなことをしたいです。 MFCでどうやってこのような Mytest.test を作れるでしょうか。 よろしくお願いします。
- ^と*の違いについて
Visual C++を使っていると、^(アクサンシルコンフレックス)も*(アスタリスク)も両方ポインタとして利用しているようなのですが、^はクラスを使用するときに使用するポインタと言うことでしょうか? また、これらはどの様に使い分けられているのでしょうか?
- ベストアンサー
- C・C++・C#
- coronalith
- 回答数4
- 2分木と双方向線形リストを同時に実現する方法
ファイルに書かれている文字列を読み込み, (1)ソートしてファイル出力 (2)読み込んだ順と逆順にファイル出力 というプログラムを作成する場合, (1)は2分木のデータ構造を用いて実現したのですが,2分木のデータ構造をそのまま利用することで逆順に出力させることは可能でしょうか? 私は無理だと思うので,2分木に加えて双方向の線形リストになるようにポインタを設定する必要があると考えているのですが,もっと上手く実現するアルゴリズムはあるでしょうか? アドバイスを頂けるとありがたいです.
- ベストアンサー
- C・C++・C#
- noname#95388
- 回答数6
- Visual C#2008 で XNA プログラミング
来年に学校で卒業作品を作らないといけなくなりました。 パソコンで何かを作るとのことで得意なC言語を使ってゲームを作ろうと思っています。 それでVisual C#でするXNAプログラミングに興味を持ちました。 予定では3Dゲームを作成する予定です。 ある程度はプログラムにも知識がありますが、XNAを使うのは初めてなのでよくわかりません。 参考になるサイト、参考書などのお勧めがあれば教えて下さい。
- ArrayListの要素削除について
ArrayListに格納した配列の内容をListViewに表示させているのですが ListViewで複数行選択してその行を削除しようとすると実際に選択して いない行が削除されてしまい、選択した行が削除できません。 また選択を間をあけて選択するとArgumentOutOfRangeExceptionに 引っかかり削除処理が出来ないのですが、どのようにすれば削除が 出来るのでしょうか? 環境はC#(2.0) VS2005です。 以下にソースコードを掲載いたします。 private void Form1_Load(object sender, EventArgs e) { // ListViewにアイテムを追加する for (int no = 0; no < subject.Length; no++) { Mail mail = new Mail(subject[no], address[no]); collectionMail.Add(mail); } // ListViewにcollectionMailの内容を表示 UpdateList(); } private void buttonDelete_Click(object sender, EventArgs e) { foreach (int sel_index in listView1.SelectedIndices) { MessageBox.Show("select no:" + (sel_index + 1), "debug", MessageBoxButtons.OK, MessageBoxIcon.Information); collectionMail.RemoveAt(sel_index); } // ListViewにcollectionMailの内容を表示 UpdateList(); }
- ベストアンサー
- その他(プログラミング・開発)
- mizuki_sak
- 回答数1