title: Create window with WNDCLASSEX? [Cpp]
body: <p>First here is my code... well actually it is pretty much copied and pasted from Microsoft tutorial that I am trying to learn from...</p>
  
  <p><strong>CreateWindow.h</strong></p>
  
  <pre><code>#ifndef CreateWindow_H
  #define CreateWindow_H
  
  #include &lt;windows.h&gt;
  #include &lt;stdlib.h&gt;
  #include &lt;string.h&gt;
  #include &lt;tchar.h&gt;
  
  using namespace std;
  
  int WINAPI WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR lpCmdLine,
                     int nCmdShow);
  
  #endif
  </code></pre>
  
  <p><strong>CreateWindow.cpp</strong></p>
  
  <pre><code>#include &lt;windows.h&gt;
  #include &lt;stdlib.h&gt;
  #include &lt;string.h&gt;
  #include &lt;tchar.h&gt;
  
  // Global variables
  
  // The main window class name.
  static TCHAR szWindowClass[] = _T("win32app");
  
  // The string that appears in the application's title bar.
  static TCHAR szTitle[] = _T("Win32 Guided Tour Application");
  
  HINSTANCE hInst;
  
  // Forward declarations of functions included in this code module:
  LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
  
  
  int WINAPI WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR lpCmdLine,
                     int nCmdShow) {
      WNDCLASSEX wcex;
  
      wcex.cbSize = sizeof(WNDCLASSEX);
      wcex.style          = CS_HREDRAW | CS_VREDRAW;
      wcex.lpfnWndProc    = WndProc;
      wcex.cbClsExtra     = 0;
      wcex.cbWndExtra     = 0;
      wcex.hInstance      = hInstance;
      wcex.hIcon          = LoadIcon(hInstance, static_cast&lt;WORD&gt;(MAKEINTRESOURCE(IDI_APPLICATION)));
      wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
      wcex.hbrBackground  = (HBRUSH)(COLOR_WINDOW+1);
      wcex.lpszMenuName   = NULL;
      wcex.lpszClassName  = szWindowClass;
      wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
  
      if (!RegisterClassEx(&amp;wcex)) {
          MessageBox(NULL,
                     _T("Call to RegisterClassEx failed!"),
                     _T("Win32 Guided Tour"),
                     NULL);
  
          return 1;
      }
  
      hInst = hInstance; // Store instance handle in our global variable
  
      // The parameters to CreateWindow explained:
      // szWindowClass: the name of the application
      // szTitle: the text that appears in the title bar
      // WS_OVERLAPPEDWINDOW: the type of window to create
      // CW_USEDEFAULT, CW_USEDEFAULT: initial position (x, y)
      // 500, 100: initial size (width, length)
      // NULL: the parent of this window
      // NULL: this application dows not have a menu bar
      // hInstance: the first parameter from WinMain
      // NULL: not used in this application
      HWND hWnd = CreateWindow(
                      szWindowClass,
                      szTitle,
                      WS_OVERLAPPEDWINDOW,
                      CW_USEDEFAULT, CW_USEDEFAULT,
                      500, 100,
                      NULL,
                      NULL,
                      hInstance,
                      NULL
                  );
  
      if (!hWnd) {
          MessageBox(NULL,
                     _T("Call to CreateWindow failed!"),
                     _T("Win32 Guided Tour"),
                     NULL);
  
          return 1;
      }
  
      // The parameters to ShowWindow explained:
      // hWnd: the value returned from CreateWindow
      // nCmdShow: the fourth parameter from WinMain
      ShowWindow(hWnd,
                 nCmdShow);
      UpdateWindow(hWnd);
  
      // Main message loop:
      MSG msg;
      while (GetMessage(&amp;msg, NULL, 0, 0)) {
          TranslateMessage(&amp;msg);
          DispatchMessage(&amp;msg);
      }
  
      return (int) msg.wParam;
  }
  </code></pre>
  
  <p><strong>Errors:</strong></p>
  
  <pre><code>C:\Users\***\Documents\CodeBlocksProjects\encryptText\CreateWindow.cpp||In function 'int WinMain(HINSTANCE__*, HINSTANCE__*, CHAR*, int)':|
  C:\Users\***\Documents\CodeBlocksProjects\encryptText\CreateWindow.cpp|32|error: cast from 'CHAR*' to 'WORD' loses precision|
  C:\Users\***\Documents\CodeBlocksProjects\encryptText\CreateWindow.cpp|32|error: invalid static_cast from type 'CHAR*' to type 'WORD'|
  C:\Users\***\Documents\CodeBlocksProjects\encryptText\CreateWindow.cpp|37|error: cast from 'CHAR*' to 'WORD' loses precision|
  ||=== Build finished: 3 errors, 0 warnings ===|
  </code></pre>
  
  <p>I thought that I would need to do a static_cast, but nothing was working. I even tried using WORD, but still go the error. So I have no idea what to do there.</p>
  
  <p>Also how do I even use this? I read the entire tutorial a couple times.</p>
  
  <p>Tutorial: <a href="http://msdn.microsoft.com/en-us/library/bb384843.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/bb384843.aspx</a></p>
  
  <p>I thought you would do something like</p>
  
  <pre><code>// start up the four variables before hand, how ever that is done
  WinMain(hInstance, hPrevInstance, lpCmdLine, nCmdShow);
  </code></pre>
  
  <p>I didn't really get anywhere with that.</p>
  
  <p>Don't get me wrong though... I understand a lot of it, but the things I don't understand ill go ahead and list below.</p>
  
  <ul>
  <li>_T / TCHAR</li>
  <li>CALLBACK</li>
  <li>How to start up application for actual use</li>
  <li>Fix compiler errors for casting</li>
  </ul>