title: Failed CreateWindowEx. How do I get my window (with the button) to actually pop up for once?
body: <p>I can only assume most of this works because I can't get past the CreateWindowEx check.
  If someone would double check all of my fun button code that would be great too.</p>
  
  <pre><code>#include &lt;windows.h&gt;
  #include &lt;tchar.h&gt; //I was told I needed this line but I don't believe I do.
  #define ID_BTNENCRYPT 0
  
  const char g_szClassName[] = "MyWindowClass";
  
  HWND button;
  
  LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)       {
  switch(msg) { //Fun button stuff
      case WM_CREATE: {
          button = CreateWindow("button",
                                "Encrypt Message",
                                WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,
                                450, 620, 200, 30,
                                hwnd, (HMENU) ID_BTNENCRYPT, GetModuleHandle(NULL), NULL);
  
          break;
      }
      case WM_COMMAND: { //More fun button stuff
          switch (LOWORD(wParam)){
              case ID_BTNENCRYPT: {
                  ::MessageBox(hwnd, "This will be your message once I get my $h!t together", "Encrypted Message", MB_OK);
              }
          }
          break;
      }
      case WM_CLOSE:
          DestroyWindow(hwnd);
          break;
      case WM_DESTROY:
          PostQuitMessage(0);
          break;
      default:
          DefWindowProc(hwnd, msg, wParam, lParam);
  
  }
  
  return 0;
  }
  
  int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR     lpCmdLine, int nCmdShow) {
  FreeConsole();
  
  WNDCLASSEX wc;
  HWND hwnd;
  MSG Msg;
  
  wc.cbSize = sizeof(WNDCLASSEX);
  wc.style = 0;
  wc.lpfnWndProc = WndProc;
  wc.cbClsExtra = 0;
  wc.cbWndExtra = 0;
  wc.hInstance = hInstance;
  wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
  wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
  wc.hCursor = LoadCursor(NULL, IDC_ARROW);
  wc.hbrBackground = (HBRUSH) (COLOR_WINDOW + 1);
  wc.lpszMenuName = NULL;
  wc.lpszClassName = g_szClassName;
  if (!RegisterClassEx(&amp;wc)) {
      ::MessageBox(NULL, "Window Registration Status: Hopelessly F***ed", "", MB_OK);
      return 0;
  } //No apparent error in Window Registration
  </code></pre>
  
  <p>Here's where I need help</p>
  
  <pre><code>hwnd = CreateWindowEx(
      WS_EX_CLIENTEDGE,
      g_szClassName,
      "Great Window",
      WS_OVERLAPPEDWINDOW,
      300, 300,
      350, 350,
      NULL, NULL, hInstance, NULL);
  if (hwnd == NULL) {
      ::MessageBox(NULL,"Window Creation Status: Gone to $h!t", "", MB_OK);
  }
  </code></pre>
  
  <p>I unfortunately get the error message that yes, my window creation has failed.</p>
  
  <pre><code>ShowWindow(hwnd, nCmdShow); //Just the end of my code from here on out.
  UpdateWindow(hwnd); //Hopefully there aren't any fatal errors.
  
  while(GetMessage(&amp;Msg, NULL, 0, 0) &gt; 0) {
      TranslateMessage(&amp;Msg);
      DispatchMessage(&amp;Msg);
  }
  
  return Msg.wParam;
  }
  </code></pre>