|
Hello,
I'm creating this Windows Forms application (see code below):
#include <windows.h>
/* Declare Windows procedure */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
/* Make the class name into a global variable */
char szClassName[ ] = "SysFrzX_mGui";
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 */
wincl.hMaximize = false;
/* Use Windows's default color as the background of the window */
wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
// center_window(hwnd, width, height);
/* 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 */
"", /* Title Text */
WS_OVERLAPPEDWINDOW, /* default window */
CW_USEDEFAULT, /* Windows decides the position */
CW_USEDEFAULT, /* where the window ends up on the screen */
500, /* The programs width */
400, /* 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 */
);
/* 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;
}
/* This function is called by the Windows function DispatchMessage() */
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message) /* handle the messages */
{
case WM_DESTROY:
PostQuitMessage (0); /* send a WM_QUIT to the message queue */
break;
default: /* for messages that we don't deal with */
return DefWindowProc (hwnd, message, wParam, lParam);
}
return 0;
}
I see things like hIcon and hCursor from wincl, what I want is, what is a list of those things (like the hIcon and hCursor). Similar to Visual Basic forms, where properties like Enabled, Visible, Text, Opacity, etc. And this massive code block is in the programming language C.
Simple Thanks and Regards,
Brandon T. H.
Been programming in Visual Basic for 4 years this point forward, and is very good at it (I can even create programs completely on code, without dragging those items from the toolbox). Programming C++ for 1 year so far and the same with C#.
Many of life's failures are people who did not realize how close they were to success when they gave up. - Thomas Edison
|
|
|
|
|
If I understand you correctly, there isn't one!
Also, for what it's worth - the window this app creates is NOT a form, it's a window. A form is a class that wraps and contains a window - .NET languages contain forms.
VB.Net, C++/CLI and C# all wrap the C Api into classes. It's these classes that maintain a list of the properties of the window.
|
|
|
|
|
So let me ask you a question, why do they call it Microsoft Windows(TM)
Simple Thanks and Regards,
Brandon T. H.
Been programming in Visual Basic for 4 years this point forward, and is very good at it (I can even create programs completely on code, without dragging those items from the toolbox). Programming C++ for 1 year so far and the same with C#.
Many of life's failures are people who did not realize how close they were to success when they gave up. - Thomas Edison
|
|
|
|
|
Good question.
Simple - because it's based on windows. A button is a window, a list box is a window, a menu bar is a window, a status bar is a window, etc, etc Ad nauseam.
It's for this reason that it's called MS Windows, not MS Forms....
You appear to be suffering the unpleasant part of the cycle that begins with using languages in which what's going on is (predominantly) hidden from the user. You started with VB and are working your way back. I started with ASM and have worked my way forwards. When you start by doing everything the hard way, you can appreciate and understand the effort savings and motivations behind creating easier to use (though less transparent) languages.
|
|
|
|
|
This is not Windows Forms, but pure Windows. There are plenty of introductory articles about Windows programming available, here in the CodeProject articles[^] section, via Google, or through studying Charles Petzold's excellent book[^].
|
|
|
|
|
Unfortunately Charle's Petzold's book that hasn't been updated since 2000 and is now out of print.
|
|
|
|
|
According to that link the 6th edition will be available as an ebook this year. Amazon has some second-hand copies of the 5th edition.
|
|
|
|
|
The 6th edition is C# and about "metro apps" which reduces it's utility to them that want to write "desktop apps" in C and C++ Win32 programming.
|
|
|
|
|
You're right, I should have read the detail more carefully.
|
|
|
|
|
That's pure c++ win32 code.
I started 14 years ago writing in Visual Basic, and a little c-sharp over the last 5 years for asp.net programs.
I started writing in c++ win32 about 7 months ago, and found that it's a totally different way of thinking. There is no intelli-sense for c++, so it you make an object, and want to assign a value from a list, nothing will appear.
I made the change because there were certain things I wanted to do, that asp.net would not support.
I can tell you that I will never write another windows app in asp.net again, and that anything you write in c++ will blow away asp.net. Learning c++ has made me a better programmer, even in asp.net.
|
|
|
|
|
Yeah I agree with you, C/C++ is way better than ASP.net, the reason why I dived into it is because the development of device drivers and GUI applications (and probably Windows Services).
EDIT: And because it's a good language to start with and a lot of careers/jobs hire programmers with experience in C/C++.
Simple Thanks and Regards,
Brandon T. H.
Been programming in Visual Basic for 4 years this point forward, and is very good at it (I can even create programs completely on code, without dragging those items from the toolbox). Programming C++ for 1 year so far and the same with C#.
Many of life's failures are people who did not realize how close they were to success when they gave up. - Thomas Edison
|
|
|
|
|
For the record you do not write Windows apps in ASP.NET; that is strictly for web applications.
|
|
|
|
|
I learn that the hard way Richard. I have friends that work for Kingston, and they write all there internal windows apps in asp.net. Just the stuff on the memory keys are written in c++ by other engineers.
|
|
|
|
|
jkirkerx wrote: and they write all there internal windows apps in asp.net.
Are you sure about that?
|
|
|
|
|
That's what Wayne in IT in the KT Bowling league told me one night bowling against his team. I'll ask my friend in KT MIS the same question again Friday night. I didn't think much of it at the time, and thought it was the corporate normal.
Perhaps I mean c-sharp or visual basic. He did say c-sharp, because I was looking for c++ help at the time.
|
|
|
|
|
|
HI ,
I struck in below scenario. please put some light on it.
I have one combobox and edit control in win32 application.
1. i keep on updating my combobox with new data, but while doing that, previous data in combobox missing.
2. when i choose one data item in combobox corresponding value should be updated in edit box.
Thanks,
Goutham.
|
|
|
|
|
Gday.
1. How are you updating the combo box? Please show some code
2. You simply handle CBN_SELENDOK notification messages, when you get one - you ask for the currently selected string then send it to the edit-control.
Note: Selecting an existing item and typing an item into the edit box of the combo-box control send different messages. If you can't(shouldn't) type into the edit box, you should probably be using a list control instead.
CBN_SELENDOK[^]
|
|
|
|
|
|
Hi,
I am trying to Capture Keystrokes of a Richedit using the vitrual Cdialog::Pretranslate
When I override the virtual function I am getting a access violoation
would it be possible Pretranslate is capturing the debuggers keystrokes
Would I need some directive like if !DEBUG
any help appreciated
|
|
|
|
|
Try commenting out all of the code in your override function. Does the access violation still happen?
If it does not, then the problem is your code, which you can post here for some help.
The difficult we do right away...
...the impossible takes slightly longer.
|
|
|
|
|
Hi,
it doesn't happen when I comment out the code
Here is the code to the override for PreTtanslateMessage
<pre lang='cpp'> BOOL CprogDebug::PreTranslateMessage(MSG* pMsg)
{
CHERC_CMDApp *main_app;
MyBaseEvent* myeventptr;
if(pMsg->message==WM_KEYDOWN)
{
if(pMsg->wParam==VK_RETURN) // enter key
{
main_app = (CHERC_CMDApp *)AfxGetApp(); // get main app
myeventptr = main_app->mybaseeventptr; // get event class
strcpy(myeventptr->buffer_ptr," "); // single step
myeventptr->send_window = this; // return to this window
myeventptr->SetEvent(); // signal event
}
}
return CDialog::PreTranslateMessage(pMsg);
} </pre>
|
|
|
|
|
My guess is that myeventptr->buffer_ptr might be null or it might point to unallocated memory.
Step through the code with the debugger and see on which line it crashes.
The difficult we do right away...
...the impossible takes slightly longer.
|
|
|
|
|
Countered the bloody univoter.
|
|
|
|
|
Hi,
I have a couple of standalone applications, all written using MFC, which I want to combine them as an application suite.
My company's strategy is writing new applications using Qt. So some day I may be forced to rewrite them using Qt.
In this situation, I have two questions:
1. Do you recommend me to develop new application suite using Qt or not?
2. Which is the best way to combine them? Make plug-in versions of my standalone apps? Make COM versions of my standalone apps? Make libraries of their core functionality and use them in a new UI? Or simply place their codes in a new solutions containing multiple projects, use their individual outputs as standalone projects and use their code in the integration project at the same time? Or what ever you say?!...
|
|
|
|
|