CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 10 of 10

Thread: GUI in C++

  1. #1
    Join Date
    Oct 2009
    Posts
    2

    GUI in C++

    I know it is complicated, but I know almost everything to do up until GUI and it would be a good learning experience. All I need is a little help.

    First of all, what sort of file should i create to support a window. I don't want anything fancy. Just a box with a title, minimize, restore, and close button. I'm currently using this code:

    #include <windows.h>

    const char g_szClassName[] = "myWindowClass";

    // Step 4: the Window Procedure
    LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
    {
    switch(msg)
    {
    case WM_LBUTTONDOWN: // <-
    // <- we just added this stuff
    break; // <-
    case WM_CLOSE:
    DestroyWindow(hwnd);
    break;
    case WM_DESTROY:
    PostQuitMessage(0);
    break;
    default:
    return DefWindowProc(hwnd, msg, wParam, lParam);
    }
    return 0;
    }

    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
    LPSTR lpCmdLine, int nCmdShow)
    {
    WNDCLASSEX wc;
    HWND hwnd;
    MSG Msg;

    //Step 1: Registering the Window Class
    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.hCursor = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
    wc.lpszMenuName = NULL;
    wc.lpszClassName = g_szClassName;
    wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);

    if(!RegisterClassEx(&wc))
    {
    MessageBox(NULL, "Window Registration Failed!", "Error!",
    MB_ICONEXCLAMATION | MB_OK);
    return 0;
    }

    // Step 2: Creating the Window
    hwnd = CreateWindowEx(
    WS_EX_CLIENTEDGE,
    g_szClassName,
    "The title of my window",
    WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT, CW_USEDEFAULT, 240, 120,
    NULL, NULL, hInstance, NULL);

    if(hwnd == NULL)
    {
    MessageBox(NULL, "Window Creation Failed!", "Error!",
    MB_ICONEXCLAMATION | MB_OK);
    return 0;
    }

    ShowWindow(hwnd, nCmdShow);
    UpdateWindow(hwnd);

    // Step 3: The Message Loop
    while(GetMessage(&Msg, NULL, 0, 0) > 0)
    {
    TranslateMessage(&Msg);
    DispatchMessage(&Msg);
    }
    return Msg.wParam;
    }


    and it produces this: http://i37.tinypic.com/sgiwas.jpg

    The only real problem i notice is that the title is a bunch of squares, when it should be "The Title of My Window". What is the error I have experienced?

    Thanks so much in advance!

  2. #2
    Join Date
    Feb 2005
    Posts
    2,160

    Re: GUI in C++

    Probably some UNICODE/MBCS mismatch, but I'd think your MessageBox() calls would fail or it would fail to compile.

  3. #3
    Lindley is offline Elite Member Power Poster
    Join Date
    Oct 2007
    Location
    Seattle, WA
    Posts
    10,895

    Re: GUI in C++

    Looks like you're trying to use Win32 directly. While that's possible, you'll probably find it much easier to go with a GUI toolkit. A few options are MFC (Windows only), or one of the cross-platform ones (QT, WxWidgets, GTK+, FLTK, etc).

  4. #4
    Join Date
    Jul 2009
    Location
    India
    Posts
    835

    Re: GUI in C++

    Use TEXT("The title of my window") instead of "The title of my window".

    And for a much simpler way to create a window, I'll prefer you to use Dialog Editor to create a Dialog window and call that by CreateDialog() or DialogBox(). It'll pretty much easy to you.

  5. #5
    Join Date
    Mar 2003
    Location
    India {Mumbai};
    Posts
    3,871

    Re: GUI in C++

    Using TEXT will not help. If this was the problem with Unicode, compiler would have reported the mismatch.

    Look at the string itself, does it contain any extra characters, not shown here?
    My latest article: Explicating the new C++ standard (C++0x)

    Do rate the posts you find useful.

  6. #6
    Join Date
    Oct 2009
    Location
    yangoon
    Posts
    5

    Re: GUI in C++

    this is my program provide with unicode

    download link
    http://www.multiupload.com/EEB563C0BI

  7. #7
    Join Date
    Oct 2009
    Posts
    577

    Re: GUI in C++

    Try to switch off the UNICODE charset in the Project Properties.

    Open menu

    Projects
    - Your_Project Properties
    - Configuration Properties
    - General

    Below 'Project Defaults' change the property of 'Character Set' to 'Use Multibyte Character Set'.

    After that make a Rebuild.

  8. #8
    Join Date
    Nov 2009
    Posts
    15

    Re: GUI in C++

    const char g_szClassName[] = "myWindowClass";

    I think the problem is here
    try changing it to
    char g_szClassName[] = TEXT("myWindowClass");

  9. #9
    Join Date
    Jul 2009
    Posts
    105

    Re: GUI in C++

    Try using a different program for producing GUI's. I use Qt. I find that it has alot of easy to understand commands that can be used to do just about whatever you want it to do and it is cross-platform which is always a ++

  10. #10
    Join Date
    Mar 2009
    Posts
    51

    Re: GUI in C++

    Could the source code being saved as Unicode cause such a problem?
    The CodeGuru member formerly known as Zaccheus.

Tags for this Thread

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