乙個PlaySound示例

2021-04-24 07:01:54 字數 1877 閱讀 5551

using system;

using system.collections;

using system.componentmodel;

using system.runtime.interopservices;

internal class helpers

[dllimport("winmm")]

public static extern bool playsound( string szsound, intptr hmod, playsoundflags flags );

}public class sound

helpers.playsound(strfilename, intptr.zero, helpers.playsoundflags.snd_filename | helpers.playsoundflags.snd_async);   

}}  

}snd_loop = 0x0008這是定義,不應該改的。

helpers.playsound(strfilename, intptr.zero, helpers.playsoundflags.snd_filename | helpers.playsoundflags.snd_async|playsoundflags.snd_loop);  

就是把snd_loop也或到引數中,這樣snd_loop就會整合到其他2個列舉值當中,讓3個列舉值同時起作用

你要明白playsoundflags是乙個列舉,而且這裡playsoundflags列舉是可以按位進行或運算的。

拿列舉中的前4個宣告舉例

snd_sync = 0x0000

snd_async = 0x0001

snd_nodefault = 0x0002

snd_memory = 0x0004

snd_loop = 0x0008

0x0000代表兩個位元組(等於乙個字),就是16位二進位制數字位。

為了說明這種可以按位或的列舉如何可以讓多個列舉值同時其作用,我們簡化一下,簡化成

snd_sync = 0x00

snd_async = 0x01

snd_nodefault = 0x02

snd_memory = 0x04

snd_loop = 0x08

也就是說簡化成用1個位元組的二進位制位定義

0x00轉換成十進位制就是0(16進製制0-9和十進位制0-9對應相等),換成乙個位元組8位二進位制位就是 0000 0000

0x01換成乙個位元組8位二進位制位就是 0000 0001

0x02-------------------------------------------> 0000 0010

0x04-------------------------------------------> 0000 0100

0x08-------------------------------------------> 0000 1000

看出什麼特點了嗎?

每個定義,占用8個二進位制位中的1個。

二進位制或是什麼意思呢?就是按照順序每一位進行比較,如果2個位中其中有乙個是1,結果就是1。

這樣helpers.playsoundflags.snd_async|playsoundflags.snd_loop的計算結果就是 0000 1001

如果我們是計算機的話,我們就可以這麼認為,8位二進位制位,從右向左,某一位是1的話,對應的功能就啟用,否則就不啟用。

這樣對於0000 1001,參照列舉定義,就知道snd_async和snd_loop啟用,將來我們想增加乙個snd_memory,就把它或到當前的計算中,計算結果是 0000 1101,按照上面計算機的邏輯,自然snd_async、snd_loop、snd_memory都起作用了。

說的有點囉嗦,應該能看懂吧。

xml的乙個示例

function.h cstring openfile cstring cstring getcontext cstring,int,int void str2array cstring struct xmlnode function.cpp include include include incl...

乙個示例儲存過程

create or replace procedure bm add p id varchar,p name varchar is v count number begin 檢查輸入引數是否為空 if p id is null or p name is null then p out 輸入的值為空!...

乙個uwsgi配置示例

摘自 01 02python 03127.0.0.1 9001 04 05 06 07 08 094 108 111 122000 13512 14256 15192 16 17 18 uwsgi配置檔案中的引數也可以在命令列通過uwsgi指定,配置檔案除了xml格式外,還可以寫成ini格式的,軟體...