2016-11-25 13 views
1

は、私はこのコードを植えたサウンドモードとミュートモードをプログラムで切り替えるにはどうすればよいですか?

[DllImport("KERNEL32.DLL")] 
extern public static void Beep(int freq, int dur); 

// and 

Beep(2222, 55); 
Beep(3333, 55); 

を使用してビープ音を作った(ビープ音(FREQ、硬膜))ほぼあちこちhundread時間(様々な周波数、持続時間及び時間で)。

ここで、サウンドとミュートをプログラム的に切り替える必要があります。

私はそれを行うには、退屈な仕事でなければなりません

if (my_Flag) 
{ 
    Beep(2222, 55); 
    Beep(3333, 55); 
} 

のようなものでそれを行うことができます。 良いアイデアはありますか?

ありがとうございました。

+1

あなたの例に示すように「魔法の数字」を使用していた場合は、「面倒な作業」を行う必要があります。その間に、コード内でプログラムで変更して「魔法の数字」を置き換えるためにGLOBAL変数を定義することをお勧めします – Steve

+0

退屈な作業が意味することを避ける方法があるのか​​疑いがあります。 Beep'メソッドは、ビープ音を発生させるかどうかを示すブール値を除いて、あなた自身で確認する必要があります。 – HimBromBeere

+0

私があなたの場合は、Beep of Kernel32を呼び出す独自の(シングルトンクラス+)関数(int、int)を作成します...次に、このような問題ではるかに少ない問題があります。決して少なく、あなたは別の方法でリファクタリングすることはありません。これは私が推測する... – TripleEEE

答えて

4

すべてがBeep(x,y)メソッドと定義されている場合は、独自のメソッドを作成し、次にリファクタリング - すべてのメソッドの名前をMyBeep(x,y)に変更できます。

public void MyBeep(int freq, int dur) 
{ 
    if(myFlag) 
     Beep(freq, dur); 
} 
+1

Hmmmmいいですね。私にはスペースシャトルの技術を見せているけれど。 OK私はそれを試してみます。私は初心者です、あなたは私の質問でそれを簡単に知ることができます。あなたの答えは私にとって貴重です。ありがとう。 Tatranskymedved – Jason

+0

問題はありません。 =) – Tatranskymedved

+0

完璧に動作します!再度、感謝します。 – Jason

関連する問題