現在、MFCで検索プログラムを作成しています。
始めはDoModalで作成していたのですが、ダイアログを閉じずに、ダイアログを複数並べて見たいという意見が出た為、モードレスで作成し直そうとしたところ、ダイアログが現れてくれません。
インターネットで見つけたソースを試してみたのですが、上手くいきません。
どなたか教えて頂けますか?

=ダイアログに移るボタンコードに=

CDlg1 dlg;
dlg.Create(IDD_DIALOG1, this);
dlg.ShowWindow(SW_SHOW);

(dlg.DestroyWindow();は他に記述)


1.
上記では、ShowWindowに0が返ってしまい、一瞬ダイアログが映って
消えてしまいます。Createは1が返ってるのでいいかと思いますが…。

2.
あと、違うソースで試したところ、ダイアログは表示できるものの、
一回消してしまうと、もう一度ボタンを押しても再度は表示されません。
しかも、Destroy()を設定したOKボタンでは強制終了となってしまいます。

モードレスで作成すると、一回そのダイアログを消してしまうと再度表示ができないのでしょうか?
モードレスってただ他の処理ができるというだけで、そのダイアログを何枚も表示させておくことはできないのでしょうか?

3.
このダイアログにjpegファイルを表示させているのですが、ダイアログベース・htmlView以外で表示させれる方法がありましたら教えて下さい。

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (6件)

もし作成したダイアログのポインタを削除する為だけにポインタ配列を用意する


のでしたら変わりにこんな方法もあります。

CMyDialog::PostNcDestroy()をオーバーライド
CMyDialog::PostNcDestroy()
{
CDialog::PostNcDestroy();

delete this;
}

こうすればモードレスダイアログが閉じられた時に自動でメモリも削除されるし
楽かなと思いますけど。
とりあえず参考まで...
    • good
    • 1

こんにちは。

itohhといいます。

その後、進展はありましたか?

もし、まだ悩んでいるようでしたら、子ダイアログのオブジェクトを配列で持つときの注意点を。
1.上限を決めたとき、それ以上はダイアログが表示されないようにする。
2.子ダイアログを閉じたとき、配列のどの位置のオブジェクトを削除するかわかるようにする。
3.親ウィンドウが終了するときには、子ダイアログはすべて閉じてオブジェクトもすべて
  削除しなければいけない。

大まかに注意事項を上げるとするとこんなところでしょうか。
配列で管理する場合、配列の添字の管理が難しいと思います、配列の何番目がどの子ダイアログ
なのかとか、配列の空きはあるのかとかです。
配列の代わりとしてCObArrayクラスから派生させてコレクションにするという手もあります。


わからないところがあれば再度、補足をしてください、出来る範囲でお手伝いしますよ。

これからも頑張ってください。
    • good
    • 0

> このやり方が一般的と考えていいのでしょうか?



newで実体を得る方法が一般的ですが、ポインタ変数をグローバル化してしまうのはお行儀が悪い気がします。
グローバル変数ではなく、親ウィンドウ(ダイアログ?)クラスのメンバ変数にしてしまうのがスマートではないかと思います(^_^;


> これは、グローバル変数のところで、dlg[10]のように枚数分設定しておくということなのでしょうか?

あらかじめ枚数が分かっているならそれでも良いと思います。その場合は、枚数の上限を超えて開かれないようにチェックしないといけませんね。
枚数が不定の場合にはリスト構造等でポインタ変数を動的に管理すれば可能だと思います。

要は作ったダイアログ(自分で確保したメモリ)全てを、終了時に確実に破棄できれば良いだけなので、自分で管理しやすいデータ構造を選べばいいと思いますよ。
    • good
    • 0
この回答へのお礼

返答ありがとうございます!
お礼が遅くなってしまって申し訳ありません。

>グローバル変数ではなく、親ウィンドウ(ダイアログ?)クラスのメンバ変数にして>しまうのがスマートではないかと思います(^_^;

すいません、ついついグローバル変数と書いてしまいました。(・・;
メンバ変数のことですよね。
ローカルにしたり、グローバルと言ったり…。

あまりに知らなくて申し訳ないのですが、
リスト構造、データ構造…今の私のレベルからだとかなり難しいことのように
思えます。

枚数を決めてみたものの、変数が登場する度に[]の中の数字をどうするのか
??です。[]の中にint型変数をいれて管理するのでしょうか?? 

お礼日時:2001/09/01 02:13

こんにちは。

itohhといいます。

動きましたか。良かったですね。(^_^)v

>表示の際のif文3つ{ return;}のところ、削除しました。
これのことでしょうか?
if(pDlgMless->GetSafeHwnd()) {
  if(::IsWindow(pDlgMless->m_hWnd)) {
    if(pDlgMless->IsWindowVisible()) {
        //破棄部分pDlgMless->DestroyWindow();
        return;
        // returnで脱出しているのに注意。
    }
  }
}
これは一度、作成されている場合は再作成しないためです。
ですので、これを削除してしまうと、このあとにある
//生成部分
pDlgMless=new CDlgMless(this);
pDlgMless->ShowWindow(SW_SHOW);

で、一つの変数に2個、3個と上書きしていきますからメモリーリークを起こしますよ。
(deleteすることが出来なくなると言うことです。)

(注)関数はMSDNライブラリを参照しましょう。
    • good
    • 0
この回答へのお礼

返答ありがとうございます!
お礼が遅くなってしまって申し訳ありません。

一難去ってまた一難ってかんじです..。(;_;)

>で、一つの変数に2個、3個と上書きしていきますからメモリーリークを起こし>ますよ。
>(deleteすることが出来なくなると言うことです。)

この場合、どうしたらいいのでしょうか??

漠然とした質問で申し訳ありません…。
実はまだプログラムを始めたばかりで、何がどうなっているのか
解らない状態です。

ダイアログを作る度に、変数のアドレスが移動して、deleteできないっていう理解でいいのでしょうか?
今、子ダイアログのほうにdeleteが設定してあるのですが、どこにdeleteを設定していようと、変数が一つなら必ずメモリーリークが起きるということでしょうか?

お礼日時:2001/09/01 01:47

こんにちは。

itohhといいます。

モードレスで作成するのは、結構めんどくさいですよ。
(どのタイミングでWindowを作るのかとか、消す方法は?とか。)

サンプルを作成しようかとも思いましたが、
解説しているHPがありますので、そちらを参照してください。
URL:http://www2s.biglobe.ne.jp/%7Emaekawa/dev/vc/dia …

参考URL:http://www2s.biglobe.ne.jp/%7Emaekawa/dev/vc/dia …
    • good
    • 0
この回答へのお礼

早速の回答、ありがとうございます!!

教えて頂いたHPのソースで作ってみたら、上手くいきました!
解り易いHPですね!

ただ、同じダイアログを複数表示したかったので、
表示の際のif文3つ{ return;}のところ、削除しました。
今のところ問題は無さそうなのですが、このif文は何の為にあるのでしょうか?

お礼日時:2001/08/28 22:08

ダイアログクラスの実体がローカル変数として宣言されているので、その関数を抜けた時点でウィンドウとメモリが破棄されているだけでは?


この場合はCDlg1型ポインタをメンバ変数で用意しておき、newでインスタンスを得るのが一般的だと思います。
(ダイアログが不要になった場合は、DestroyWindow()後、deleteで破棄します。)
モードレスダイアログを何枚も開く場合は、ポインタ変数の管理が必要ですね。

JPEGファイル表示のほうはネット上にライブラリやソースが落ちてるので、それを参考に自前で表示処理を書いてあげれば可能だと思います。
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます!!

仰る通り、ローカル変数が原因でした。

CDlg1* dlg;        とグローバル変数にし、
dlg = new CDlg1(this);
dlg->ShowWindow(SW_SHOW); としたら上手くいきました!

このやり方が一般的と考えていいのでしょうか?

>モードレスダイアログを何枚も開く場合は、ポインタ変数の管理が必要ですね。

これは、グローバル変数のところで、dlg[10]のように枚数分設定しておくという
ことなのでしょうか?

ポインタがイマイチよく解っていないので、申し訳ありませんが教えて頂けますでしょうか?

お礼日時:2001/08/28 22:16

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q冬のピアノ発表会、どんなドレスを着ていますか

1月に小2の娘の発表会があります。ドレス着用者が多いと聞いていたため、白の半袖、膝下丈の輸入ドレスをあまり考えないで購入しました。しかし今日になって、冬なのに白で半袖なんておかしくないのか心配になってきました。会場がそんなに寒いとは思えませんが、冬だし、みなさん長袖や半袖でもベルベット素材等のドレスを着用しているのでしょうか。経験者の方教えて下さい。

Aベストアンサー

私の時は、冬でもほとんどの人が半袖&薄っぺらい生地でした。
私は冬でも半袖で出ます。

季節感より、その曲のイメージに沿っているか。
そっちのほうが、どうやらピアノの世界では重要だそうです。
(発表会なら、そこまで気にする必要はないと思いますが・・・

会場に着替えスペースがあると思うので、
そこで着替えれば、外の寒さは関係ないです。

弾いている最中は、照明が当たっているので、暖かいです。
(あくまで個人的意見

ただし、舞台裏はすごく寒いので、
カーディガンなどを持たせてあげてください。
(出る前には脱ぐ
手袋も持って行ったほうが無難です。

一番重要なことは、本番の衣装を着て、
家でも何度でもピアノの練習してください。
普段着慣れない物が、衣装なので慣れることが大切です。
(発表会見てると、すごく弾きにくそうにしてる人いるから・・・
気分も盛り上がって、やる気も出ていいと思いますよ。

では、がんばってくださいね。

Qダイアログのボタンが押された時に、その「ボタン」のあるダイアログと、すでに表示されている他のダイアログを消したいです

Win2000/MFC/ダイアログベース
で作業しています。初心者です(^^;)

Aというダイアログで「あるボタンa」を押してDoModalでBというダイアログを表示させ、Bダイアログで「あるボタンb」を押してDoModalでCというダイアログを表示させ、Cダイアログで「あるボタンc」を押した時にBダイアログとCダイアログを閉じたい(消したい)のですが
EndDialogで消せません
DoModalの戻り値をret_b,ret_cとした場合
EndDialog(ret_c);
EndDialog(ret_b);
としたのですが。。。

やり方がおかしいのか、よくわかりません・・
初心者でもわかりやすいお返事お待ちしています(^^;)

Aベストアンサー

各ダイアログボックスを CDialog の派生クラスとして次のように定義したとします。

CDlgA --- A というダイアログボックス
CDlgB --- B というダイアログボックス
CDlgC --- C というダイアログボックス

CDlgA のあるメンバ関数から CDlgB::DoModal() でダイアログボックス B を表示させます。 CDlgB のあるメンバ関数で EndDialog() を実行すればダイアログボックス B を閉じることができます。ここで、 CDialog::EndDialog() は引数として INT 型の値をひとつ渡すことができますが、その値が先の CDlgB::DoModal() の戻り値となります。
戻り値がある特定の値だったとき、つまり、質問の例ではダイアログボックス B で EndDialog(ret_b) が実行されたことが特定できたときに CDlgA も EndDialog() を実行すれば連鎖してダイアログボックスを閉じることができます。
ダイアログボックス C についても同様です。

実際のコーディングでは次のようになると思います。
ただし、ダイアログボックス A もモードレスで表示されていると仮定しています。



#define ret_b (-1) // 特定の値
#define ret_c (-1) // ID_OK や ID_CANCEL と重ならないように注意

...

(CDlgA の実装)

void CDlgA::OnButtonA() // あるボタン a が押されたときの処理
{
CDlgB dlg; // ダイアログボックス B

if (dlg.DoModal() == ret_b) // モードレスで表示して、戻り値をチェック
EndDialog(-1); // ダイアログボックス A を閉じる
}

...

(CDlgB の実装)

void CDlgB::OnButtonB() // あるボタン b が押されたときの処理
{
CDlgC dlg; // ダイアログボックス C

if (dlg.DoModal() == ret_c) // モードレスで表示して、戻り値をチェック
EndDialog(ret_b); // ダイアログボックス B を閉じる
}

...

(CDlgC の実装)

void CDlgC::OnButtonC() // あるボタン c が押されたときの処理
{
EndDialog(ret_c); // ダイアログボックス C を閉じる
}

各ダイアログボックスを CDialog の派生クラスとして次のように定義したとします。

CDlgA --- A というダイアログボックス
CDlgB --- B というダイアログボックス
CDlgC --- C というダイアログボックス

CDlgA のあるメンバ関数から CDlgB::DoModal() でダイアログボックス B を表示させます。 CDlgB のあるメンバ関数で EndDialog() を実行すればダイアログボックス B を閉じることができます。ここで、 CDialog::EndDialog() は引数として INT 型の値をひとつ渡すことができますが、その値...続きを読む

Q子供(4才)のピアノ発表会の曲

姪(4才)が、8月に、初めてピアノ発表会へ出るのですが、
まだ始めたばかりなので、ドレミファソの5音だけしか弾けません。
本人は、とても発表会を楽しみにしています。
(もうドレスを買ってもらったので・・・)

先生との連弾でも良いそうなのですが、
オススメの曲(楽譜)があれば教えてください。

よろしくお願いいたします。

Aベストアンサー

楽しみですね!
確か、作曲家 三枝成章さんのアレンジによる

連弾と2台ピアノのための
バイエルであそぼう
と言った楽譜が出版されていると思いました。

ドレミファソだけでも綺麗な連弾のアレンジですよ。
初めてならば、先生との連弾も良い経験だと思います。
ANo.1の方の回答にもあります曲も良いです。
発表会だと、曲が他の人と重なってしまう可能性も考慮した方が
いいかも知れませんね。

きっとご指導くださっている先生が選曲のアドバイスを
下さるのではないでしょうか?

QMFC・ダイアログベースで、ダイアログの変更内容が反映されない・・・

初めて質問させていただきます。よろしくお願いします。

当方、VisualStdio2005内のC++2005で、
ダイアログベースにてツールを開発していました。

ある日、ダイアログ上に多くのEditコントロールを作成(追加)することになり、
ダイアログリソースをVC内のリソースエディタにて、
テキスト形式でコントロールを追加していきました。

そのときは、テキストでの変更内容がダイアログにも反映されていたのですが、
その後はダイアログにツールボックスでのコントロールの追加やサイズ変更など、
見た目には反映されてもビルド後に反映されなくなってしまいました。

クリーン後のリビルドでも、問題は解決しません。

原因と対策をご存知の方、いらっしゃいましたらご教授いただけませんでしょうか。

よろしくお願いします。

Aベストアンサー

VC2005は初心者です。VC6.0は仕事で使っていました。

私はダイアログリソースをテキスト形式でコントロールを追加したことがないので、基本的にご期待に添える回答ではないと思いますが、ご参考までに。

回答する前に質問ですが、もっと詳しい問題の状況、状態を教えていただけませんか?「ビルド後に反映」とは?実行までおこなっていない、ということですか?

以下、回答です。

ダイアログリソースとダイアログのウィンドウの関連付けは正しいですか?ダイアログIDが間違って指定されていませんか?変更対象のダイアログとビルド後の実行したダイアログが違っているなんてことがあったりします。

上記のような間違いがなければ、Editコントロールを1つだけにしてビルド&実行してみてください。それで問題があれば、Editコントロールの書き方に問題があるかも?(いや、その場合はコンパイルでエラーになるはずだけど)。問題がなければ、Editコントロールを1つずつ増やしてビルド&実行する。ある程度増やしたら、思い切って半分くらい増やしてみたりしてもいいと思います。

VC2005は初心者です。VC6.0は仕事で使っていました。

私はダイアログリソースをテキスト形式でコントロールを追加したことがないので、基本的にご期待に添える回答ではないと思いますが、ご参考までに。

回答する前に質問ですが、もっと詳しい問題の状況、状態を教えていただけませんか?「ビルド後に反映」とは?実行までおこなっていない、ということですか?

以下、回答です。

ダイアログリソースとダイアログのウィンドウの関連付けは正しいですか?ダイアログIDが間違って指定されていませんか?...続きを読む

Qピアノ発表会へのお礼について

うちの子は5歳の男の子ですがはじめてピアノ発表会にでることになりました。先生は幼稚園のおかあさんで知っている方で個人レッスンをしています。
発表会の会費は6500円です。
その会費のほかにはお礼としてお菓子やお金を差し上げた方がいいでしょうか?
私もピアノを習ったことがないのでよくわからないので
知っている方教えてください。

Aベストアンサー

娘も、私も、ピアノを習っていました。

>先生は幼稚園のおかあさんで知っている方で個人レッスンをしています。

と言うことですが、それは、お礼の事とは、関係ありません。
まず、発表会の練習として、通常のレッスン以上に、先生に時間を取らせているか?
また、5歳ならば(まだ音大などへの進学を考えていない)、お行儀が悪かったりしますが、その点で、精神的負担を与えているか。

だと、思います。
上記2点が当てはまるのでしたら、5千円ぐらいのお菓子やお茶を、発表会終了後のレッスン時にでも、お手紙付で、渡すといいと思います。お手紙には、「初めての発表会であったこと、」「先生には余分な苦労をかけたこと」「本人が発表会に出たことで、とても成長したこと」など、特に、「初めて」というところは、大事です。来年は、お礼をしなくてもいい可能性があるからです。

もし、上記2点が当てはまらなかったら、おいしい紅茶一缶ぐらいにして、「連弾」の、お礼をしましょう。

発表会の構成もあって(先生の都合)、連弾にしたのか、お子さんの性格を考えて連弾にしたのか、、、

そして、発表会当日に、古株そうな人に尋ねて、お礼の事はどうなっているのか調べて見ましょう。

もし、私でしたら、「初めて」の喜びを表現して、いずれの場合でも、3千円程度のお菓子やお花や、お茶などを、必ず子供と一緒に選ぶか包装して送ります。

お稽古って、技術を習う事だけではなくて、先生からその影響を受ける、全人格的なものだと思うので。

娘も、私も、ピアノを習っていました。

>先生は幼稚園のおかあさんで知っている方で個人レッスンをしています。

と言うことですが、それは、お礼の事とは、関係ありません。
まず、発表会の練習として、通常のレッスン以上に、先生に時間を取らせているか?
また、5歳ならば(まだ音大などへの進学を考えていない)、お行儀が悪かったりしますが、その点で、精神的負担を与えているか。

だと、思います。
上記2点が当てはまるのでしたら、5千円ぐらいのお菓子やお茶を、発表会終了後のレッスン時にで...続きを読む

Q【VC2005(CLR)】モードレスで呼んだダイアログの閉じ方

VC2005初心者です。

現在CLRのプロジェクトでコーディングしてますが、
モードレスで呼んだダイアログの閉じ方が分かりません。
ご存知の方、よろしくお願いします。

ちなみに自分自身のダイアログを閉じるのは
this->Close();
なので、以下のように書いたのですが、閉じてくれません。

※showFlag = 0;を大域変数で宣言しておきます。
AAA^ formAAA = gcnew AAA();
if(showFlag ==0){
AAA^ formAAA = gcnew AAA();
formAAA->Show(this);
showFlag = 1;
}
else{
formAAA->Close();
showFlag = 0;
}

Aベストアンサー

モーダルである場合、CloseでDispose処理が呼ばれるので、
deleteは不必要です。
(ShowDialogの場合は、Dispose処理が呼ばれないから、deleteが必要。)

また、前述のとおり一度Disposeが呼ばれているためCloseすると再度Showできなくなるので、
再度gcnewを行う必要があります。

コードではこんな感じ。
※全角空白で成形しています。そのままコピペしてもエラーになるので気をつけてください。

public:
  Form1(void)
  {
    InitializeComponent();
    //
    //TODO: ここにコンストラクタ コードを追加します
    //
    this->childForm_ = nullptr;
  }
  ・
  ・
  ・
private:
  Form2^ childForm_;
private:
  System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
  {
    if ((this->childForm_ != nullptr) &&
      !this->childForm_->IsDisposed)
    {
      this->childForm_->Close();
      //this->childForm_ = nullptr;
    }
    else
    {
      this->childForm_ = gcnew Form2();
      this->childForm_->Show(this);
    }
  }


単に、表示非表示の切り替えで良いのであれば、CloseではなくHideを使います。
その場合は、1度だけgcnewすればいいです。

public:
  Form1(void)
  {
    InitializeComponent();
    //
    //TODO: ここにコンストラクタ コードを追加します
    //
    this->childForm_ = gcnew Form2();
  }
  ・
  ・
  ・
private:
  Form2^ childForm_;
private:
  System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
  {
    if (this->childForm_->Visible) {
      this->childForm_->Hide();
    }
    else {
      this->childForm_->Show(this);
    }
  }

モーダルである場合、CloseでDispose処理が呼ばれるので、
deleteは不必要です。
(ShowDialogの場合は、Dispose処理が呼ばれないから、deleteが必要。)

また、前述のとおり一度Disposeが呼ばれているためCloseすると再度Showできなくなるので、
再度gcnewを行う必要があります。

コードではこんな感じ。
※全角空白で成形しています。そのままコピペしてもエラーになるので気をつけてください。

public:
  Form1(void)
  {
    InitializeComponent();
    //
    //TODO: ここ...続きを読む

Q小学3年生、ピアノ発表会の曲の選曲のご相談。

小学3年生、ピアノ発表会の曲の選曲のご相談。

来年の3月のピアノ発表会で弾く曲の相談をさせて下さい。
現在ブルクミュラーが終わり、ギロックを始めています。
『誰もが知っている作曲家、有名な曲、クラシック』でお勧めはありませんか?この条件は娘の希望です。過去の発表会で他のお姉さん達が弾いているのもいいのですが、本人がどれくらいのものを弾けるか全くわかりません。
今、子供が今一番弾きたがっているのはモーツァルトのソナタです。また、モーツァルトのソナタで一番弾きやすいのは何番でしょうか?


先生にまず相談というのは承知しています。でも、先生に相談する前に何曲か自分で候補を絞っていきたいと思います。
(前回、選曲だけでワンレッスンつぶれてしまいました。。。これだけは避けたいです。子供もガックリしてました。)

過去の質問も探してみたのですが、解決できませんでした。
どうぞ宜しくお願いいたします。

Aベストアンサー

モーツァルトのソナタで小学生向きなのはやはりK.545でしょう。
左手に2、3カ所オクターブが出てきますが、なんとかなるのではないでしょうか。
http://www.youtube.com/watch?v=pJFipqAAAaA

学研から4期のピアノ名曲集というのが小曲集が出版されています。
難易度別になっているのでこの中から選ぶのも良いかもしれません。
http://gakken-publishing.jp/ongaku/musictext/dt_piano_pieces/3200001362.html

youtubeに模範演奏?があります。
http://www.youtube.com/watch?v=ZMxvr-eFN9Y&feature=BF&list=UL&index=3

Qダイアログにあるボタンを指定した順番どおりに、キーボードの矢印ボタンやタブボタンで移動したい

お世話になります。

C++6.0 MFCで開発しております。

現在、ダイアログの上に(1)~(5)のボタンがあるのですが、
キーボードの矢印ボタンやタブボタンで移動すると
(2)→(1)→(5)→(4)→(3)
のように、意図しない順番でボタンがアクティブになってしまいます。
それをきちんと
(1)→(2)→(3)→(4)→(5)
と順番どおりに移動するようにしたいのですが、どのようにすれば
いいのでしょうか?

お手数ですが何卒よろしくお願いします。

Aベストアンサー

VC6の場合 ダイアログエディタを起動して
Ctrl+Dまたはメニューから レイアウト > タブオーダーを実行します

コントロールの左肩に現在のタブ順が表示されるので
1番から順に指定したいコントロールをクリックしてみましょう
その後実行ファイルの更新(ビルドまたはリビルド)実行すれば
希望通りのタブ順になっているはずですよ ・・・

Qピアノ発表会で弾く曲のオススメを

来年3月にあるピアノ発表会で弾く曲を探しています。
経験年数は幼い頃の7年間と、大人になってから5年間です(その間10年間ブランクあり)。

今まで弾いた曲は、別れの曲(ショパン)、愛の夢(リスト)、ロンドカプリチオーソ(メンデルスゾーン)、幻想即興曲(ショパン)等です。

好きな曲はラ・カンパネラ(リスト)、飛翔(シューマン)、愛の喜び(クライスラー)、喜びの島(ドビュッシー)、アンダンテスピナートと華麗なる大ポロネーズ(ショパン)、悲愴(ベートーベン)など・・・。
華やかでロマンティックな曲がたまらなくすきです★★
こんな私がすきそうな曲が思いつく方・・
教えてくださいっ!

Aベストアンサー

 こんにちは。一応ピアノ経験者でクラシックも大好きですので良かったら参考にして下さい。
 今まで演奏された曲目を拝見すると、もう既にテクニック的にも何の問題がないと思いますので(私は「幻想即興曲」に相当苦労しました(^_^;))、特に難易度は考えずに選んでみました。
●リスト「コンソレーション第3番」
http://www.hmv.co.jp/product/detail/2703364
●リスト「超絶技巧練習曲」の中から特に1番の「前奏曲ハ長調」、第4番「マゼッパ」、第9番「回想 変イ長調」どれも少し寂しげでロマンティックな感じです。1番は私の持っているCD(シフラ)では目茶目茶早いです(^_^;)。
http://www.tsutaya.co.jp/item/music/view_m.zhtml?pdid=20180220
●シューベルト「即興曲」から第2番変ホ長調と、第4番変イ長調
http://www.hmv.co.jp/product/detail/1992423
●シューマン「夢のもつれ」
 中村紘子さんの本に書いていたのですが別名「指のもつれ」らしいです(^_^;)。でも華やかで軽やかな曲です。
http://www.hmv.co.jp/product/detail/1880684
●ショパンのエチュードOP.10No.5「黒鍵」、OP.25No.8など
 やっぱり華やかでロマンティックならショパンは外せませんよね。革命や木枯しはドラマティックな感じなので、華やかさでこちらを選んで見ました。他にも「24の前奏曲」の中から1番もお勧めです。また個人的には4番も物悲しくて好きです。
http://www.tsutaya.co.jp/item/music/view_m.zhtml?pdid=20320657
http://www.tsutaya.co.jp/item/music/view_m.zhtml?pdid=20289056
●ドビュッシー「アラベスク第1番ホ長調」「亜麻色の髪の乙女」http://www.tsutaya.co.jp/item/music/view_m.zhtml?pdid=20348326
http://www.tsutaya.co.jp/item/music/view_m.zhtml?pdid=20348325
●ラフマニノフ「24の前奏曲」 Op.23 第2番変ロ長調 、Op.23 第5番ト短調
 ラフマニノフなんで難しいと思いますが、いかがですか?個人的には5番が大変好きです。ドラマティックで華やかですし盛り上がりますよ。
http://www.tsutaya.co.jp/item/music/view_m.zhtml?pdid=20119632
●ベートーベン「ピアノソナタ熱情」
 ベタですけど、「悲愴」の次にいかがでしょうか?その次に「月光」を弾いて三大ソナタ制覇するとか^m^。「熱情」は最初静かなのにあとからど~んと来るところが好きです。3楽章も良いですよね。
http://www.tsutaya.co.jp/item/music/view_m.zhtml?pdid=20351936
 他にもあると思いますが、こんな感じで思い浮かべてみました。個人的にはショパンの曲ならどれも華やかでロマンティックな感じがします。ワルツや夜想曲、マズルカなどで特に名前がついていないのでも素敵な曲が沢山ありますよ。
 長文失礼しました。ご参考までにm(__)m。

 こんにちは。一応ピアノ経験者でクラシックも大好きですので良かったら参考にして下さい。
 今まで演奏された曲目を拝見すると、もう既にテクニック的にも何の問題がないと思いますので(私は「幻想即興曲」に相当苦労しました(^_^;))、特に難易度は考えずに選んでみました。
●リスト「コンソレーション第3番」
http://www.hmv.co.jp/product/detail/2703364
●リスト「超絶技巧練習曲」の中から特に1番の「前奏曲ハ長調」、第4番「マゼッパ」、第9番「回想 変イ長調」どれも少し寂しげでロマンティッ...続きを読む

Qダイアログを継承したダイアログの作成について

お世話になります。
今回お聞きしたいことは、
オリジナルに作成したダイアログを継承したオリジナルのダイアログを作成した際に、オリジナルに作成した基底ダイアログのダイアログ上のコントロールや、そのコントロールの位置を継承することはできますでしょうか?
ということです。
何がしたいかといいますと、4つのダイアログをメインダイアログから呼び出すのですが、その4つのダイアログには共通するコントロールがあり、そのコントロールの動作もその位置も全く同じなのです。
そのため、いちいち4つのダイアログにコントロールの貼り付けや、処理を記入せずに、その共通のコントロールをもった基底ダイアログを作成して、その基底ダイアログの継承としてダイアログが作れたらなと思い、質問させて頂きました。
継承をすると、基底クラスの関数等を使うことができるというのはわかるのですが、ダイアログ上のコントロールの位置までは不可能なのかなと疑問に思いました。
ご回答を宜しくお願い致します。

開発環境は
Windows CE 6.0
Visual Studio 2005
です。

お世話になります。
今回お聞きしたいことは、
オリジナルに作成したダイアログを継承したオリジナルのダイアログを作成した際に、オリジナルに作成した基底ダイアログのダイアログ上のコントロールや、そのコントロールの位置を継承することはできますでしょうか?
ということです。
何がしたいかといいますと、4つのダイアログをメインダイアログから呼び出すのですが、その4つのダイアログには共通するコントロールがあり、そのコントロールの動作もその位置も全く同じなのです。
そのため、いちいち4つの...続きを読む

Aベストアンサー

私、CEの経験がないので厳密なところはわからないのですが、
一般的なMFCであれば、可能です。
ただし、条件により困難さが変わります

1)4つのダイアログが全て同じコントロールのみからなる場合
  コントロールは同じだが、ラベルのキャプションが違うとか
  リストボックスのデータが違うとかいう場合です。

  非常に単純です。普通の派生と全く同じ感じです
  OnInitDialog等適当な関数をオーバーライドするだけです。

2)共通のコントロール以外に独自のコントロールも持つ場合
  多少困難です
  いくつかアプローチが考えられます。
  a) ダイアログ・テンプレートを個別に持つ方法
    リソース内のダイアログ・テンプレートは(共通のコントロールも含め)
    コピー&ペーストなどで独自に作成します(4つ作ります)
それぞれを制御するクラスですが、
    ウィザードのサポートを受けられない
    (ウィザードではCDialog派生にされてしまう)
    ので、既存のCDialog派生クラスを参照して
    自力で希望のCDialog派生からさらに派生させるようにします

    リソースIDとクラスの結びつけ方法などは既存のクラスを
    参考にしてください

  b)リソースも完全に共通化する
    ちょっと難しいかもしれません。
    OnInitDialog等で自力でコントロールをCreateします。
    レイアウトが視覚的にできないので非常に困難ですが、
    隣接するコントロールの位置情報をもとに計算するなどしてください。

    ダイアログの大きさに余裕があり、
    追加するコントロールも小さなもの
    (1行のみのエディット等)であれば、
    最初から場所をstaticコントロールで場所を確保しておき
    非表示にしておいて、
    派生クラスで、そのstaticの位置を取得するとかなり楽ができます。

    派生クラスで、本格的にレイアウトが変わってしまう場合は、
    レイアウトを頭に入れながら、Createし、試行錯誤で
    完成させることになるでしょう。


以上の方法がCEでも通じるのかわかりませんが、
参考になれば幸いです。    

   

私、CEの経験がないので厳密なところはわからないのですが、
一般的なMFCであれば、可能です。
ただし、条件により困難さが変わります

1)4つのダイアログが全て同じコントロールのみからなる場合
  コントロールは同じだが、ラベルのキャプションが違うとか
  リストボックスのデータが違うとかいう場合です。

  非常に単純です。普通の派生と全く同じ感じです
  OnInitDialog等適当な関数をオーバーライドするだけです。

2)共通のコントロール以外に独自のコントロールも持つ場合
 ...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報