VC++でプログラミングしています。
MFC AppWizard(exe) でダイアログベースで造っています。
やりたいことは以下です。
・設定ファイルに表示位置(座標)が書いてあり、ダイアログの初期化時に
設定ファイルを読んで、指定された位置にボタンを表示する。

私の案としては以下のものがあります。
<案1>
予めボタンを貼り付けて造り、EXE起動時に移動させる。
ただし、移動させる関数があるかは不明。
調べましたが、今のところ見つかっていません。

<案2>
CButtonクラスのメンバを使用して、ボタンを表示する。
試しに以下のようなコードでやってみましたが、上手くいきませんでした。
使い方がわからず、試行錯誤しながらやってます。

CButton testButton;

void CTestGamenDlg::OnButton1()
{
RECTRect;

Rect.left = 100;
Rect.top = 100;
Rect.right = 200;
Rect.bottom = 200;

testButton.Create("test", BS_PUSHBUTTON, Rect, this, 100);
}


案1、2についての指摘、アドバイス、その他の案などありましたら
宜しくお願いします。
また、簡単なサンプルコードがあると助かります。

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

A 回答 (2件)

ボタンは、CWndが基本クラスなのでCWndの関数を使うことができます。


ということで、SetWindowPosを使って位置を移動させることができます。
使い方は、ヘルプを見てください。
それでは、がんばってください。

この回答への補足

アドバイスありがとうございます。
一点、ヘルプを見てもどうしても理解できないことがあります。

SetWindowPos関数はOnInitDialog関数の中でダイアログのサイズを
変更するために以下のように使っています。
SetWindowPos(NULL, 0, 0, 600, 400, SWP_NOZORDER | SWP_SHOWWINDOW);

今回、このダイアログに貼り付けられているボタンのサイズを
変更したいのですが、「このボタンの」という指定がSetWindowPos関数の
どのパラメータで指定するのかがわかりませんでした。

ご迷惑おかけしますが、再度、アドバイス頂けないでしょうか。
よろしくお願いします。

補足日時:2001/06/14 10:41
    • good
    • 0

1.クラスウイザードで、ボタンのメンバ変数(型は、CButton)を追加(メンバ名をm_Btn)します。


2.これで、m_Btn.SetWindowPosという風に使えます。
    • good
    • 0
この回答へのお礼

ありがとうございます。
大変参考になりました。
VCを始めたばかりでクラスについて勉強不足でした。

お礼日時:2001/06/14 14:06

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

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

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

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

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

Q亀甲牡丹ヒントニーの育て方

1年前くらいに、亀甲牡丹ヒントニー(実生?)の小さい鉢植えを買いました。
お店の人が、肥料などはいらないから水だけ2週間に1回くらいでコップ1杯くらいあげて、と言っていたので、そうしていたのですが、最近になって、葉っぱ?が茶色になってきています(枯れてる?)
夏ぐらいまでは綺麗な緑色だったのですが。
室内の日はあんまりあたらないところに置いてます。
サボテンを育ててるのは初めてで、どうしたらよいのか全く分からないです。

水やりの頻度や量をこうしたらいいとか、肥料はいらないのか、とかアドバイスがあったら教えてください。
今は、まだ直径4センチ、高さ2センチくらいの大きさです。
鉢が買ったときの小さいもの(直径8センチ、高さ10cmくらい)なのですが、植え替えたほうがいいのでしょうか。
また、日なたに置くのと日陰におくのとどちらがいいのでしょうか。

参考になるのかわかりませんが、今朝とった写真をつけました。

Aベストアンサー

誠に残念ですが、画像を見る限り九分九厘枯れています。
一分の望みはあるかも知れませんが、このような状態になってからでは
助けようがありません。元の緑色に戻すのは不可能です。
今後に新たに購入されるかも知れませんので、亀甲牡丹ヒントニーが何
であるかと言うより、サボテンがどんな植物であるのかを説明したいと
思います。これを読めばサボテンと言う植物が分かり、販売店の方が言
われた事が間違いだった事が分かります。

サボテンと言う植物は暑さや乾燥に非常に強く、多湿や寒さには非常に
弱い植物が多いです。一部には寒さにも強い種類もありますが、そのよ
うな種類は世界中に数種類しかありません。
暑さに強いと言うのは、自生地が亜熱帯や砂漠等で自生する物が多いと
言う訳で、長期間も雨が降らないメキシコ等が有名です。
体に水分を蓄えられる機能を持っているため、水遣りを怠っても直ぐに
は枯れる事がありません。蓄えた水分を少しづつ使用し、雨が降るまで
生き延びようとします。蓄えた水にも限りがあるので、全て使い切って
しまうと当然ですが枯れてしまいます。逆に普通の草花のように毎日の
ように水遣りをすると、蓄えられる水分分量を超えますから、根腐れを
起こして腐敗して枯れてしまいます。

どんな植物や樹木でも共通しますが、植替え時期は必ず決められていま
す。何時でも植替えが出来るとは考えないで下さい。決められた時期に
植替えを行うようにし、状態が悪くなってからでは手遅れになります。
亀甲牡丹は通常のサボテンと同じですから、植替えは5~9月の間だけ
で行います。僕の長年の経験からすると、出来るなら梅雨時期と猛暑の
時期を除いた時期が良く、梅雨入り前までに植替えを済ませた方が良く
なります。古い土は全て捨て、新しい土を使用して植替えます。
土は市販のサボテンと多肉植物の土を使用し、何も混ぜないで購入時の
ままで使用しますが、保水性が高い種類が多いので園芸用の川砂を2割
程混ぜても構いません。

肥料は植替え時に緩効性化成肥料(マグァンプK等)を混ぜて使用し、
次回の植替えまで一切与えません。置き肥で与える時は5~9月の間に
2ヶ月に1回で少量与えます。

置き場所は年間を通して日当たりの良い場所に置き、真夏だけは光線に
より本体が焼けて茶色く変色する事があるので、真夏だけは直射日光が
当たらない場所で弱い光線に当てます。冬場は外気温が5℃近くになっ
たら早めに室内に入れ、光線が十分に当たる窓辺で管理をします。
それ以外の時期は全て屋外で管理をします。猫可愛がりをすると外気温
が7℃以上は無いと越冬が出来ないので、寒さに多少でも強くさせるに
は冬以外は屋外で光線に当てるようにします。
植替え期間は鉢の大きさで決めます。7号鉢を基準とし、それ以下なら
年毎に植替えをし、それ以上なら2年毎に植替えをします。

水遣りは4~10月は鉢土が完全に乾いてから、更に1週間経ってから
鉢底から十分に水が流れ出るまで与えます。この時にコップ半分や1杯
等と量を決めたり、2週間と言うような期間を定めるのは絶対に避ける
ようにします。与える時は鉢底から水が流れ出るまで与えるのが原則で
す。店員さんの言われた方法は、機械的水遣りと言い絶対に行っては駄
目な方法です。店員さんはサボテンの事を全く知らない人のようです。
冬場は休眠するので、1ヶ月に1~3回で与えます。出来るだけ乾かし
気味にした方が寒さに強くなるので、出来るだけ水遣りは控えます。

暖房がガンガン効いた部屋ではサボテンの本体が乾燥するので、場合に
よっては干からびてしまいます。暖房器具の放射熱が直に当たらないよ
うにし、湿度不足の時は霧吹きでサボテンの表面に水を噴霧し、乾燥か
ら守る工夫が必要です。冬場でも掃除で窓を開ける事があるはずですが
窓を開けても冷気に長時間も当てないようにします。サボテンでも風邪
を引く事を覚えて下さい。

画像を見ると鉢の大きさが大き過ぎます。画像のような深鉢が好ましい
のですが、大きな鉢に小さなサボテンが置いてあるような感じを受けま
す。実際にはサボテンと鉢の間が、人挿し指が1本入る程度が適してい
ます。現在の鉢では生育のためには好ましいとは言えません。

日向と日陰ですが、基本的には日向です。植替え直後や状態が悪い時は
明るい日陰に置くのが好ましいですが、基本的には年間を通して日向に
置くようにします。また日向であれば良いと言う事はなく、風通しが悪
いと病害虫の発生が多くなったり、土が乾きにくくなるため腐敗しやす
くなります。年間を通して風通しを良くする事は必ず必要です。

サボテンと多肉植物に関しては栽培経験が長いので、ある程度の事なら
回答が出来ます。他に質問があれば締め切らずに補足質問をして貰えれ
ば、分かる範囲で答えようと思います。

誠に残念ですが、画像を見る限り九分九厘枯れています。
一分の望みはあるかも知れませんが、このような状態になってからでは
助けようがありません。元の緑色に戻すのは不可能です。
今後に新たに購入されるかも知れませんので、亀甲牡丹ヒントニーが何
であるかと言うより、サボテンがどんな植物であるのかを説明したいと
思います。これを読めばサボテンと言う植物が分かり、販売店の方が言
われた事が間違いだった事が分かります。

サボテンと言う植物は暑さや乾燥に非常に強く、多湿や寒さには非常に
弱い植...続きを読む

Qfor(int i = 100, long n = 1; i > n/3i; i++)

for(int i = 100, long n = 1; i > n/3i; i++)
のように、初期設定で型の違う変数を宣言したいんだけど
C++ではこんなふうに2つ以上の型を宣言してはいけないんですか?

Aベストアンサー

,

コンマ演算子の原理です。
forの初期化文で "," で区切れるのは値を返す文だけです。
よってintステートメントもlongステートメントも値を返さないので、この文では使用できません。

というか、むしろ、intステートメントの第2引数としてlongが認識されてしまいます。
外で

int i; long n;

とし

for(i = 0, n = 0; hoge; hoge)

なら可能です。

Q多肉植物の育て方

最近、多肉植物に興味を持って、いくつか苗を購入しました。
虹の玉、レズリー、月兎耳、白牡丹、熊童子を買ったのですが、育て方でよくわからないことがあるので教えてください。

まず、置き場所なんですが、本当は室内に置きたいんですが、日光がたくさん必要だと書いてあったので、朝から夕方までは南側の庭に出して、夕方になったら部屋に戻したいと思っているのですが、毎日植物を動かすのはよくないでしょうか?小さな鉢に入れているので、出し入れは問題ないのですが、植物は今いる場所に適応しようとするから、あまり動かすのはよくないと聞いて困っています。

外で育てるのが一番だとは思いますが、どうしても部屋に飾りたいので、日が沈んだ後だけでも室内に置きたいのですが、そういう育て方をしている方はいらっしゃるでしょうか?

あと、植え込み後のお水は、植え込み後すぐにあげたほうがいいのでしょうか?調べてみたところ、少しあげたほうがいいという意見と、植え込み時は乾いた状態で、1週間後くらいにあげたほうがいいという意見があり、どっちにすればいいのかわかりません。今日植え込みをして、念のためまだお水はあげてない乾いた状態にしています。多肉植物は初めてなので、いろいろ戸惑っていますが、長くきれいに育てたいので、詳しい方、育てているかたのアドバイスをお願いします。


長文、読んでいただいてありがとうございました。

最近、多肉植物に興味を持って、いくつか苗を購入しました。
虹の玉、レズリー、月兎耳、白牡丹、熊童子を買ったのですが、育て方でよくわからないことがあるので教えてください。

まず、置き場所なんですが、本当は室内に置きたいんですが、日光がたくさん必要だと書いてあったので、朝から夕方までは南側の庭に出して、夕方になったら部屋に戻したいと思っているのですが、毎日植物を動かすのはよくないでしょうか?小さな鉢に入れているので、出し入れは問題ないのですが、植物は今いる場所に適応しようとする...続きを読む

Aベストアンサー

日暮れ後、室内に取り込むのは悪くないですよ。
多肉植物は結露すると葉が腐ってくるので、寒い時期は室内に取り込む方が無難ですし。

ちなみに私はカフェカーテンをつけた出窓(室内側)に置いています。カーテンの下側から直射日光を浴びて元気に育ってます。結露する頃には夕方少し室内側に移動させるだけなので楽させてもらってます。

あと購入は苗の形なんですよね。苗の形になっているものは土が乾いていれば水あげて大丈夫です。
挿し芽をして増やす時はすぐ水をあげると腐ってしまう場合があるので、しばらく水をあげない方が良いですよ。

多肉植物は多少育てるのに失敗しても挿し芽で何回も復活してくれるし、姿が乱れたら仕立て直しも簡単なので安心して育てて下さい。ずぼらな私でも何年も育てられているので大丈夫です。

Qint i,j; \n i=0,j=5;

int i,j;
i=0;
j=5:
と書いてあるソースは普通ですが、
int i,j;
i=0,j=5:
と書いてあるソースもあります。
後者はC++の正しい書式ですか?

カンマ演算子というのは後者のカンマのことですか?

Aベストアンサー

 正しい書式です。

i=0,j=5;
 における、「,」をカンマ演算子といいます。2項の演算子です。カンマで区切られた演算を「左から順番に」実行し、最後の演算を結果として返します。
 したがって、例の文であれば、i=0を実行し、次にj=5を実行。そして、j=5の結果の5を結果として返します。
 ・・・
 が、本来的には、あまり、例のような使い方はしませんね。よく見られるのは、次のような場合です。

 for (i=0,j=0 ; i < 50 ; ++i,++j) {

 のような形でよく見られます。for文の各式は、一つの式でなければならないので、こんな書き方をするわけです。初期化と更新部が一つにまとまり、ループが読みやすくなるのが利点かな。

Qサイネリアの育て方

こんにちは。サイネリアを育てるのですが、サイネリアの育て方がわかりません。育て方や育てるコツを教えてくださいお願いします。

Aベストアンサー

サイネリア(シネラリア)の育て方については下記サイトに詳しく載っていますのでご覧下さい。

参考URL:http://www42.tok2.com/home/kengei/shi_00011g.htm

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トリカブトの育て方

山登りに行った時に、トリカブトを見ました。
とても美しく綺麗だったので、育ててみたくなり
トリカブトの種子を購入しました。

購入したのはいいのですが、肝心な育て方がわかりません。
ネットで検索したり、お花に詳しいお友達に聞いたりしても
種子からの育て方がわからないのです。

トリカブト自体を育てるのは始めてなので
詳しい育て方が知りたいと思っています。

トリカブトの育て方に詳しい方がおりましたら
よろしくご回答お願い致します。

Aベストアンサー

育てたことはありませんが手元にある「山野草の育て方&楽しみ方事典」によれば、
・種まきは2月から3月初旬、半日陰で
・用土は赤玉土4に軽石4、腐葉土2を混ぜる
・鉢は中鉢の4-6号
・水やりは芽出しの頃は多めに
・水を好むので夏は腰水で育てる
・置き場所は芽出しから休眠までは木漏れ陽が当たる半日陰
・増殖は活発で3月中旬から4月中旬に塊根を分けて殖やす
・肥料は3月中旬から4月中旬に有機性の固形肥料を与える
・根は猛毒なので手袋をはめ、作業後すぐに手を洗う
・1-2年ごとに植え替える
・露地栽培するなら半日陰で、身近への植栽は避ける
・12月下旬から2月までは休眠する
・休眠期にも土が乾いていたら水は忘れずに与える

育て方はやさしいそうです。

Qfor( ; ti >= 0; ti--, ci++)

C言語のループの表記のことです

for ( ; ti >= 0; ti- -, ci++)
この意味がわかりません
自分なりに解釈すると「;ti >= 0」から始まって「 ci++ 」を繰り返しながら「 ti- - 」になるまで繰り返す、というような感じです

「;ti >= 0」から始まるとはどういう意味でしょうか?
「 ti- - 」になるまでとは???

このソースが書かれているHPです
http://www.rs.kagu.tus.ac.jp/infoserv/j-siken/H12a2/pm11.html
52行目になります


わかる方がいらっしゃったら教えてください、お願いします

Aベストアンサー

for() の 「初期設定式」「継続条件式」「再設定式」の区切りは、; です。
ですからこの場合、
初期設定式:なにもない(特に初期設定不要)
継続条件式: ti >= 0
再設定式: ti--, ci++
です。

さらに、再設定式に出てくる表現は、「コンマ演算子」といいまして、おおざっぱに言えば、コンマで区切られた式を順番に実行という意味です。
(関数の引数に現れるコンマとは別の意味です)

初期設定式のない for() は、すでにあるところから処理を継続する場合によく使われます。たとえば、

s = 0;
for (i = 0; x[i] == 0; i++); // x[i] の先頭部分の0の要素を捨てて
for(; x[i] > 0; i++)
s += x[i]; // 「そのあと」の正の部分が継続する間足し込む
という場合、

また、再設定式は、

for(i = 0, j = 10; src[i] != 0; i++, j--)
dest[j] = src[i];
のように、二つ(以上)のものを変化させたい場合。
この例では、初期設定式も、コンマ演算子を使って、2つの初期化を行っています。

for() の 「初期設定式」「継続条件式」「再設定式」の区切りは、; です。
ですからこの場合、
初期設定式:なにもない(特に初期設定不要)
継続条件式: ti >= 0
再設定式: ti--, ci++
です。

さらに、再設定式に出てくる表現は、「コンマ演算子」といいまして、おおざっぱに言えば、コンマで区切られた式を順番に実行という意味です。
(関数の引数に現れるコンマとは別の意味です)

初期設定式のない for() は、すでにあるところから処理を継続する場合によく使われます。たとえば、

s = 0;
...続きを読む

Qプレゼントで頂いた観葉植物が枯れてしまいそうです。頂いたものなので名前と育て方が分からず葉が落ち始め

プレゼントで頂いた観葉植物が枯れてしまいそうです。頂いたものなので名前と育て方が分からず葉が落ち始めています。この植物の育て方と名前をご存知の方、助言ください。

Aベストアンサー

サンスベリアの仲間だと思います。結論から言うと枯れる心配はないと思います。

枯れ落ちた葉は葉っぱの新陳代謝で落ちただけで、言うならば葉の寿命を全うしただけです。観葉植物は大きく成長するために古い葉を落として新しい葉を生やします。最近暖かくなってきたので、新しい葉を生やすために古い葉を落とし始めたのだと思いますよ。
写真に写ってる他の葉は元気に見えますので、木の本体はまだまだ元気だと思われます。

育て方ですが、原産地が乾燥地帯なので乾燥に強い種です。寒い時期は水を全くやらなくても良いくらいです。これからの時期は、土の表面が乾いたらたっぷりと水をやり、土が乾くまでは何日も放置でOKです。枯らしてしまう最も多いパターンは水のやり過ぎによる根腐れですので、毎日水をやる必要は全然ありません。窓際に置かれてるようですので日当たりは十分だと思います。

サンスベリアの育て方:
http://sodatekata.net/flowers/page/150.html

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

お世話になります。

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

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

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

Aベストアンサー

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

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


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

人気Q&Aランキング