title: What do "_in_" and "_in_opt_" mean in C++/CLI?
body: <p>I'm fairly new to CLR, I'm reading the c++/CLI documentation for setWindowPos and the function is defined 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>I have experience in c++ so I understand that, for example, "HWND" is the data type and "hWnd" is the variable name. </p>
  
  <p>But what are "<strong>_</strong><em>in</em>_" and "_in_opt_"? </p>
  
  <p>I'm guessing they're short for "input variables" or something. </p>
  
  <p>It is mentioned in the documentation that the hWndInsertAfter is optional. Does this mean I can simply omit/not bother passing a variable to to this parameter in my function call if I don't need to? </p>
  
  <p>e.g.</p>
  
  <pre><code>SetWindowPos(this,0,0,GetSystemMetrics(SM_CXMAXIMIZED),GetSystemMetrics(SM_CYMAXIMIZED),SWP_NOZORDER);
  //Note that we're one parameter short here (the second is missing)
  </code></pre>
  
  <p>(This would be confusing to me, as I've seen it written in other places that C++ does not support optional parameters. Only default parameters and overloading) </p>