title: What is the exact function of the "|" (vertical line) operator when separating arguments
body: <p>I've used the double vertical "||" as the boolean "or" operator. And seen that the "|" is the bitwise or. </p>
  
  <p>However, since I've started working with c++/cli I've noticed it used to separate flags in functions with a single parameter that seem to accept multiple flags. </p>
  
  <p>An example of this would be in msdn's example of the MessageBox() function.</p>
  
  <pre><code>int msgboxID = MessageBox(
          NULL,
          (LPCWSTR)L"Resource not available\nDo you want to try again?",
          (LPCWSTR)L"Account Details",
          MB_ICONWARNING | MB_CANCELTRYCONTINUE | MB_DEFBUTTON2
      );
  </code></pre>
  
  <p>What exactly is the operation performed by "|" here?</p>
  
  <p>What is the "|" symbol actually called? (Like the "^" is called a caret, rather than what I knew it as before i programmed, which was "upside down V") :D</p>
  
  <p>The reason I ask is that I'm using the function setWindowPos(), which also accepts flags as parameters. The function declared like so:</p>
  
  <pre><code>BOOL WINAPI SetWindowPos(
    _In_      HWND hWnd,
    _In_opt_  HWND hWndInsertAfter,
    _In_      int X,
    _In_      int Y,
    _In_      int cx,
    _In_      int cy,
    _In_      UINT uFlags
  );
  </code></pre>
  
  <p>And I wanted to know whether the flags can be combined in the same way as in MessageBox().</p>
  
  <p>Thanks in advance,</p>
  
  <p>Guy</p>