CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 3 of 3
  1. #1
    Join Date
    Dec 2005
    Location
    algiers, Algeria
    Posts
    132

    [RESOLVED] CreateWindowEx fails with 1407 error cannot find window class

    When i try to create a listview (in red in the code) i have the 1407 error that means cannot find window class but the listbox is created !!!, i am using visual c++ 6.0.
    Code:
    #include "stdafx.h"
    #include <stdio.h>
    #include <windows.h>
    #include <windowsx.h>
    #include <winuser.h>
    #include <commctrl.h>
    #define WIN32_LEAN_AND_MEAN
    /*  Declare Windows procedure*/
    LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
    /*  Make the class name into a global variable  */
    char szClassName[ ] = "tools";
    
    HWND IDC_LIST_SMS, IDC_STATUS_BAR, IDC_BOX_SMS;
    HWND Ghwnd;
    HINSTANCE HInst;
    int WINAPI WinMain (HINSTANCE hThisInstance,
                        HINSTANCE hPrevInstance,
                        LPSTR lpszArgument,
                        int nFunsterStil)
    
    {
        HWND hwnd;               /* This is the handle for our window */
        MSG messages;            /* Here messages to the application are saved */
        WNDCLASSEX wincl;        /* Data structure for the windowclass */
    
        /* The Window structure */
        wincl.hInstance = hThisInstance;
        wincl.lpszClassName = szClassName;
        wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */
        wincl.style = CS_DBLCLKS;                 /* Catch double-clicks */
        wincl.cbSize = sizeof (WNDCLASSEX);
    
        /* Use default icon and mouse-pointer */
        wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
        wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
        wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
        wincl.lpszMenuName = NULL;                 /* No menu */
        wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
        wincl.cbWndExtra = 0;                      /* structure or the window instance */
        /* Use Windows's default color as the background of the window */
        wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
    
        /* Register the window class, and if it fails quit the program */
        if (!RegisterClassEx (&wincl))
            return 0;
    
        /* The class is registered, let's create the program*/
        hwnd = CreateWindowEx (
               0,                   /* Extended possibilites for variation */
               szClassName,         /* Classname */
               "Gsm tools",       /* Title Text */
               WS_OVERLAPPEDWINDOW, /* default window */
               CW_USEDEFAULT,       /* Windows decides the position */
               CW_USEDEFAULT,       /* where the window ends up on the screen */
               640,                 /* The programs width */
               480,                 /* and height in pixels */
               HWND_DESKTOP,        /* The window is a child-window to desktop */
               NULL,                /* No menu */
               hThisInstance,       /* Program Instance handler */
               NULL                 /* No Window Creation data */
               );
        Ghwnd = hwnd;       
        HInst = hThisInstance;
        
        /* Make the window visible on the screen */
        ShowWindow (hwnd, nFunsterStil);
    
        /* Run the message loop. It will run until GetMessage() returns 0 */
        while (GetMessage (&messages, NULL, 0, 0))
        {
            /* Translate virtual-key messages into character messages */
            TranslateMessage(&messages);
            /* Send message to WindowProcedure */
            DispatchMessage(&messages);
        }
    
        /* The program return-value is 0 - The value that PostQuitMessage() gave */
        return messages.wParam;
    }
    
    LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
        switch (message)                  /* handle the messages */
        {
            case WM_CREATE:
                RECT Rect;
                GetClientRect(hwnd, &Rect);
                IDC_LIST_SMS = CreateWindowEx(0L, WC_LISTVIEW, "", WS_VISIBLE | WS_CHILD | LVS_REPORT,  0, 0, Rect.right-Rect.left - 300, Rect.bottom - Rect.top - 20, hwnd, NULL, HInst, NULL);
                if(IDC_LIST_SMS ==NULL)
                {
                    char coderrno[126];
                    sprintf(coderrno,"%d",GetLastError());
                    MessageBox(NULL,coderrno,"",MB_OK);
                }
                IDC_BOX_SMS = CreateWindowEx(0L, "ListBox", "", WS_VISIBLE | WS_CHILD | LBS_EXTENDEDSEL | LBS_OWNERDRAWVARIABLE | LBS_HASSTRINGS ,Rect.right-Rect.left - 300 , 0, 300, Rect.bottom - Rect.top - 20, hwnd, NULL, HInst, NULL);
    ......
        }
    }

  2. #2
    VictorN's Avatar
    VictorN is offline Super Moderator Power Poster
    Join Date
    Jan 2003
    Location
    Hanover Germany
    Posts
    20,430

    Re: CreateWindowEx fails with 1407 error cannot find window class

    Don't you call InitCommonControlsEx before creating list control? You must!
    See How to Create a List-View Control
    Victor Nijegorodov

  3. #3
    Join Date
    Dec 2005
    Location
    algiers, Algeria
    Posts
    132

    Re: CreateWindowEx fails with 1407 error cannot find window class

    Thank you very much, i didn't code in win32 since 6 years, i forgot some basics .

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  





Click Here to Expand Forum to Full Width

Featured