-
October 3rd, 2009, 06:03 PM
#1
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!
-
October 4th, 2009, 06:09 PM
#2
Re: GUI in C++
Probably some UNICODE/MBCS mismatch, but I'd think your MessageBox() calls would fail or it would fail to compile.
-
October 4th, 2009, 06:36 PM
#3
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).
-
October 5th, 2009, 12:58 AM
#4
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.
-
October 5th, 2009, 11:36 AM
#5
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?
-
October 31st, 2009, 08:41 AM
#6
Re: GUI in C++
this is my program provide with unicode
download link
http://www.multiupload.com/EEB563C0BI
-
October 31st, 2009, 09:44 AM
#7
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.
-
November 4th, 2009, 11:54 AM
#8
Re: GUI in C++
const char g_szClassName[] = "myWindowClass";
I think the problem is here
try changing it to
char g_szClassName[] = TEXT("myWindowClass");
-
November 10th, 2009, 09:32 AM
#9
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 ++
-
November 11th, 2009, 11:06 AM
#10
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
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|