I'm trying to get an openfile dialog to show up on windows CE 6.0 according to msdn it's the same process as in win32, but it doesn't work. I submit for review the interresting part of the code :

```
#include <windows.h>
#include <commctrl.h>
#include <winuser.h>
#include <stdio.h>
#include <Commdlg.h>

/* Prototypes */
LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
HWND create_window(int width, int height) ;
void resize_window(int width, int height) ;

HWND    g_hWindow ;

/* Function to modify the host window size to match the size of the movie. */
void resize_window(int width, int height)
{
   RECT r;
   r.left = r.top = 0;
   r.right = width ;
   r.bottom  = height ;
   AdjustWindowRectEx(&r,WS_BORDER,false,WS_EX_CLIENTEDGE);
   SetWindowPos(g_hWindow, NULL, 0,0,r.right, r.bottom,SWP_NOMOVE|SWP_NOOWNERZORDER|SWP_NOZORDER);
}

HWND create_window(int width, int height)
{
   WNDCLASS wce; // A Window class in Windows CE

   wce.style         = CS_VREDRAW | CS_HREDRAW; 
   wce.lpfnWndProc   = (WNDPROC) WndProc; 
   wce.cbClsExtra    = 0; 
   wce.cbWndExtra    = 0; 
   wce.hInstance     = GetModuleHandle(NULL); 
   wce.hIcon         = LoadIcon((HINSTANCE) NULL, (LPCWSTR)MB_ICONQUESTION);
   wce.hCursor       = LoadCursor((HINSTANCE) NULL, IDC_ARROW); 
   wce.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); 
   wce.lpszMenuName  = 0;
   wce.lpszClassName = _TEXT("TEST");

   if (!RegisterClass(&wce)) return 0; 

   RECT r;
   r.left = r.top = 0;
   r.right = width ;
   r.bottom  = height ;
   AdjustWindowRectEx(&r,WS_BORDER,false,WS_EX_CLIENTEDGE);

  // Create the window
   g_hWindow = CreateWindowEx(
      0,          // Ex Styles
      WS_BORDER,      // creates a window that has a thin-line border with no title bar
      CW_USEDEFAULT,  // x
      CW_USEDEFAULT,  // y
      r.right-r.left,  // Height
      r.bottom-r.top,  // Width
      NULL,           // Parent Window
      NULL,           // Menu, or windows id if child
      GetModuleHandle(NULL),      // 
      NULL            // Pointer to window specific data
      );

   ShowWindow( g_hWindow, SW_SHOW  ); // make the window visible on the display

   return g_hWindow ;
}

/* 
 * Messaging function call back from Windows CE that is passed as 
 * an argument when the window is created
 */
LRESULT CALLBACK WndProc(HWND   hWnd,
                         UINT   msg,
                         WPARAM wParam,
                         LPARAM lParam ) 
{

   switch( msg ) 
   {
    case WM_ACTIVATEAPP:

            // Invalidate to get new text painted.
        this->Invalidate();
        break;

    case WM_DESTROY:
        PostQuitMessage(0);
        break;   

    case WM_CREATE:
        LPOPENFILENAME opendialog;
        wchar_t szFile[260];

        opendialog = (LPOPENFILENAME) malloc(sizeof (LPOPENFILENAME));
        opendialog->lStructSize = sizeof (LPOPENFILENAME);
        opendialog->hwndOwner = g_hWindow;
        opendialog->hInstance = GetModuleHandle(NULL);
        *szFile = (char_t)_TEXT("\0");
        opendialog->lpstrFile = szFile;
        opendialog->nFilterIndex = 0;
        opendialog->nMaxFile = 256;
        opendialog->lpstrInitialDir = NULL;
        opendialog->Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;

        GetOpenFileName(opendialog);

    default:
        return DefWindowProc( hWnd, msg, wParam, lParam);
   } 
   return 0;
}

/* Function to hide (or make visible) the taskbar so that the player has the full display */
void set_display(bool set_full)
{
   HWND hwndTaskbar = ::FindWindow(L"HHTaskBar", NULL);
   if (set_full)
   {
       ::ShowWindow(hwndTaskbar, SW_HIDE); 
   }
   else
   {
       ::ShowWindow(hwndTaskbar, SW_SHOW); 
   }
   g_full_scrn = set_full;
}

int _cdecl WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR argv, int argc )
{

   memset(&g_gfx_context,0,sizeof(g_gfx_context));
   create_window(1, 1); // This is a windows CE specific call.
}

```