プログラムの再実行 – プログラミング – Home

通知
すべてクリア

プログラムの再実行


ほわとろ
 ほわとろ
(@ほわとろ)
ゲスト
結合: 23年前
投稿: 2
Topic starter  

ダイアログベースでRGBの値を入れる3つのエディットボックスがあって、
ボタンを押すと、そのRGBで指定した色が表示するという
プログラムを作っているのですが、
RGBの値、0~255以外の数字が入力されたときに、
エラーメッセージを表示させて、
OKを押したらプログラムを再実行させて、
もう一度最初から処理をしたいのですが、
一応、終了の仕方はわかったのですが、
再実行の仕方をどうやればいいかわかりません。

if (m_r > 255 || m_g > 255 || m_b > 255)
{

int iResults;

iResults = MessageBox(RGBの範囲外の数値です,エラー, MB_OK | MB_ICONSTOP);

// 押されたボタンを判定
switch (iResults)
{
case IDOK:
CDialog::OnOK();
break;
}
}

問題のプログラムの箇所を載せておきます。
よろしくお願いします。


引用解決済
トピックタグ
toru
 toru
(@toru)
ゲスト
結合: 23年前
投稿: 15
 

再実行ってのはアプリを再実行って事ですか?

そんなの無理ですよ。範囲外を入力されたらウィンドウの内容を初期化すれば
いいだけでは無いんですか?

それと範囲外を判別するなら

> if (m_r > 255 || m_g > 255 || m_b > 255)

これだとマイナス値を入れられたらアウトでは?

まあ、再実行したいなら他のアプリを起動して(このアプリも自作します)
その間に自分自身を終了。そしてそのアプリから一定時間後に
起動させる......っていうか実用性ゼロですね。

なので範囲外だったら終了させずにウィンドウの初期化のみを行うってのがいいと思います。

と、ここまで書いてて気づいたんですがメッセージボックスにMB_OKを指定してるじゃないですか?
その場合ってOK以外ないと思うんですが...その後のswitchは必要あるんですか?


返信引用
ほわとろ
 ほわとろ
(@ほわとろ)
ゲスト
結合: 23年前
投稿: 2
Topic starter  

> これだとマイナス値を入れられたらアウトでは?

たしかにマイナスではだめですね。
修正しておきます。

> と、ここまで書いてて気づいたんですがメッセージボックスにMB_OKを指定してるじゃないですか?
> その場合ってOK以外ないと思うんですが...その後のswitchは必要あるんですか?

よくよく考えてみると意味ありませんね。

> そんなの無理ですよ。範囲外を入力されたらウィンドウの内容を初期化すれば
> いいだけでは無いんですか?

あっそうですね。
初期化すればよかったんですね。
ずっと再実行のことばっか考えていたもので。
それで、初期化とはどうやるのでしょうか?


返信引用
CdS
 CdS
(@CdS)
ゲスト
結合: 24年前
投稿: 176
 

エラーにならずに色を表示させたときの値を記憶しておいて、それに戻せばいいだけだと思いますが。
どういう初期化をするかは、ほわとろさんが決めることです。
エラー後に、RGB(0,0,0)にしたいのならそうすればいいし、RGB(255,255,255)にしたければそうすればいいし。


返信引用
toru
 toru
(@toru)
ゲスト
結合: 23年前
投稿: 15
 

そういえばスピンコントロールをくっつけたら値が補正されませんでしたっけ?

つまりですね、マイナスを入れられたら0になって
255以上を入れられたら255になるんですよ。

事実上範囲外は無くなります。
まあ、根本的な解決にはなって無い気がしますが。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました