2017-04-02 26 views
-2

當調用win32 API native函數時,爲什麼我們在'Or'而不是'And'中傳遞多個標誌?WIN 32 API--傳遞多個標誌 - 爲什麼是'OR'而不是'AND'

例如:SetWindowPos function在其最後一個參數接受UINT uFlags

當你想多個值傳遞給它的,例如,從VBA聲明它並調用它:

SetWindowPos hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE 

我問題是 - 爲什麼'或'之間的標誌(SWP_NOACTIVATE, SWP_SHOWWINDOW , etc ...)而不是'和'?

+3

首先閱讀這些操作員的操作。沒有這些知識你就不會走得太遠。這些是按位運算符。 –

+0

,因爲如果你將使用*和*你得到0作爲標誌 – RbMm

回答

1

'OR'運算符保留組合標誌的值。 如果你熟悉bitwise operators,取這兩個值,例如:如果您評估使用AND運算這些表達式

0b0010 
0b0001 

0010 
AND 0001 
    ---- 
    0000 

你會得到0b0000表示沒有原始標誌值。 在另一方面,使用OR運算符

0010 
OR 0001 
    ---- 
    0011 

將讓你代表標誌的組合值的表達式。

相關問題