|
FWIW Mike, I agree completely.
|
|
|
|
|
Couldn't agree with you more.
"An expert is someone who has made all the mistakes in his or her field" - Niels Bohr
|
|
|
|
|
Bingo.
/ravi
"There is always one more bug..."
http://www.ravib.com
ravib@ravib.com
|
|
|
|
|
I know you have plenty of replies, but in a question like this it's best to have many answers to one problem so you can better make the decision yourself.
Like all have said already...Start with SDK...it doesn't hide anything from you.
SDK code is longer in source, but actually complies smaller...lots in some cases. MFC is basically a wrapper for the SDK...you'll hear that lots. It performs steps which you would normally have to do yerself, but maybe not always nessecary. These steps make developement quicker in MFC, but only once you understand the ins/outs of SDK.
Start with SDK...definetly...then move to MFC definetly.
Try designing MDI applications in SDK and you'll soon discover MFC is awesome. Plus Visual C++ tools cater to MFC more so than SDK. AppWizard generates a hello world for SDK and entire app (just fill in the blanks) in MFC.
MFC has helper classes which are awesome...CString to mention a few...will assist you big time. ClassWizard another great feature...message maps, my god i could go forever.
Why do i sound pro-mfc...I spent alot of time in SDK not wanting to change, cuz...well it's human nature to go with what you feel comfortable with. Once i did, I never want to go back...it's almost as easy as Visual Basic..it's incredible.
SDK is the hard part MFC is a snap...go with the SDK->MFC route. Only use pure SDK if you want less dependables and optimal speed and size.
Just my opnion...later!
"An expert is someone who has made all the mistakes in his or her field" - Niels Bohr
|
|
|
|
|
I'd agree with pretty well everyone. Do at least some SDK stuff first as a 'training' exercise. If you need heavy GUI support though go striaght to MFC. The effort it saves is worth the fact that you won't have much of a clue about what is going on under the hood. One caveat I'd add though is that MFC is a bit flaky in places (someone rightly mentioned WinSock which is absolute pants under MFC) and it's not nice wading through the src to find out whether it's you or Bill's little Elves that have cocked up. Especially if you don't really know what you're doing.
i1.2sqrt(u).bcos(ur)sec(c)
but
b4.isqrt(u).ru/16
|
|
|
|
|
Is it possible to create a MDI Application that when executed (by default) opens 3 empty documents. The 1st document being CListView and the next 2 documents to be of CHtmlView?
If this is possible can anyone give me some pointers or some sample code.
Thanks!!
Rob Jones
|
|
|
|
|
Yep, it certainly should be. Assuming you've got your three document types registered (for example CMyListDoc, CMyFirstHtmlDoc, CMySecondHtmlDoc), you need to create them just before you show the main frame in your app's InitInstance function. For example, if you have the three Doc classes mentioned, and they have DocStrings defined in the string table as "MyList", "MyFirstHtml" and "MySecondHtml":
m_nCmdShow = SW_MAXIMIZE;
pMainFrame->OpenNewDocument(_T("MyList"));
pMainFrame->OpenNewDocument(_T("MyFirstHtml"));
pMainFrame->OpenNewDocument(_T("MySecondHtml"));
pMainFrame->ShowWindow(m_nCmdShow);
where your main frame class has the OpenNewDocument function defined as:
CMainFrame::OpenNewDocument(LPCTSTR apszCompareTitle)
{
CDocument *vptResult = NULL;
CWinApp *vptrTheApp = AfxGetApp();
POSITION vtPos;
CDocTemplate *vptTemplate;
CString vcstrTitle;
vtPos = vptrTheApp->GetFirstDocTemplatePosition();
while (vtPos != NULL && vptResult == NULL)
{
vptTemplate = vptrTheApp->GetNextDocTemplate(vtPos);
if (vptTemplate->GetDocString(vcstrTitle, CDocTemplate::fileNewName))
{
if (vcstrTitle.CompareNoCase(apszCompareTitle) == 0)
{
vptResult = vptTemplate->OpenDocumentFile(NULL);
}
}
}
return vptResult;
}
Hope this helps.
------------------------
Derek Waters
derek@lj-oz.com
|
|
|
|
|
|
I am a beginning C++ programmer. My long-term goal is to write Windows-based business applications with relatively sophisticated GUI. For now, though, I am looking for (a) sample source code that demonstrates how to create and manipulate simple Windows objects -- such as menus, windows, dialog boxes, buttons, etc. Alternately, I am looking for (b) an "application framework" with which I can experiment, to create some basic applications in a short time.
I'm currently using Bloodshed's "Dev-C++" compiler, but plan to start developing on the Borland "C++ Builder 5.0 Standard" platform soon. (c) Is this a mistake? Should I get started with Microsoft's "Visual C++," or some other platform altogether?
Any guidance is most appreciated. Thanks.
|
|
|
|
|
As this site is squarely aimed at MS-based products, and this forum is titled "Visual C++", it is unlikely that you're going to get a recommendation for Borland or Bloodshed over VC++.
Certainly MFC (part of Visual C++) is the "application framework" you need in answer to (b). To just create and manipulate simple Windows objects (a), though, you could just use Win32 API (which presumably is supported by Bloodshed and Borland). Examples can be found in the Platform SDK documentation at www.microsoft.com
Hope this helps.
------------------------
Derek Waters
derek@lj-oz.com
|
|
|
|
|
I started with Borland, but now I do VC++ only. I suggest you start with Visual Studio as your first environment. There is nothing wrong with Borland and OWL, but there are so much more samples in MFC around, making it easier to learn.
/moliate
|
|
|
|
|
I'd say use VC++ as well. You'll be more in demand commercially and there's more help/samples/info about for it. Get a copy of Petzold (Programming Windows) as well and if you do go MFC later get Prosise (Programming Windows with MFC)
i1.2sqrt(u).bcos(ur)sec(c)
but
b4.isqrt(u).ru/16
Navier
|
|
|
|
|
I have a problem with a simple c++ console program.
I want user enter a string to enter their name, if user enters nothing like a enter key, the blank data should be caught and an error message should be print out on the console.
what I did was I declared a string name, then use name.lenght() function and compare it with 0, if(name.length()==0), but this cannot catch the enter key. Then I tried getch(), it catches enter key but it is not a string. What shall I do?
Thanks!
padgyx
|
|
|
|
|
You can use fgets. If the string has whitespace or a newline then nothing was enterred and you have an error.
|
|
|
|
|
If you are using getch() you can always catch the Enter key(0x0D) this way...
.
.
.
char key;
key = getch();
if(key == '\n')
{
.
.
cout<<"You pressed Enter"<<endl;
}
.
.
Atul
Sonork 100.13714 netdiva
|
|
|
|
|
Hi, Atul:
I tried this getch(), it works, but char key can only input one char at a time, what I want is a string or at least a c_str as the input. However, if I use string or c_str, then catching the enter key (a blank) is a problem. It seems that only getch() can catch the enter key. If I use the first element of c_str to check the enter key, it does not work.
I will try the fgets().
thanks.
|
|
|
|
|
You could just use gets().
char szInput [INPUT_SIZE];
gets (szInput);
if (strlen (szInput == 0)) {
;
}
/ravi
"There is always one more bug..."
http://www.ravib.com
ravib@ravib.com
|
|
|
|
|
Thanks Ravi:
I will give it a try.
It seems that my thread cannot roll back to the front of the forum even I reply or update the message at latest time. How can I come to my thread to view other people's comment more easily?
Another forum, Javaranch.com, can roll back your thread to the front if you reply the message at latest time.
Thanks.
pad
|
|
|
|
|
Ravi:
It works now. Thanks a lot!
Do you know anyway that I can use string directly instead of a c_string? Or do you know how to convert a c_string to a string? Sorry about my dum questions.
padgyx
|
|
|
|
|
What type of control would be best suited for use as the editable icon display in an icon editor?
K
|
|
|
|
|
Anonymous wrote:
What type of control would be best suited for use as the editable icon display in an icon editor?
I dont think any windows control comes near the required functionality. So just create a window and handle all the required mouse messages and painting accordingly. In MFC you might derive a class from CWnd and write your own custom control.
Nish
Nish was here, now Nish has gone;
He left his soul, to turn you on;
Those who knew Nish, knew him well;
Those who didn't, can go to hell.
I like to on the Code Project
Sonork ID 100.9786 voidmain
www.busterboy.org
|
|
|
|
|
What I sometimes do for this kind of stuff is start with a CStatic. It has very limited functionality anyway, but you can draw it on a dialog in the dialog editor and get your layout sorted nicely.
Jon
Sorry to dissapoint you all with my lack of a witty or poignant signature.
|
|
|
|
|
I have big array (about 1 000 - 100 000 items) . How can I detect what memory the app occupy ??
(Iam finding the best solution to store items in memory.)
|
|
|
|
|
Wizard_01 wrote:
I have big array (about 1 000 - 100 000 items) . How can I detect what memory the app occupy ??
That depends on the type of array. If it is an array of bytes, a 100,000 size array would be 100,000 bytes. If it is an array of objects or structs, then use sizeof to find the size of that object and multiply by 100,000.
Example :- for an array of type myStruct
tot_mem_reqd_for_array = array_size * sizeof myStruct
Nish
Nish was here, now Nish has gone;
He left his soul, to turn you on;
Those who knew Nish, knew him well;
Those who didn't, can go to hell.
I like to on the Code Project
Sonork ID 100.9786 voidmain
www.busterboy.org
|
|
|
|
|
Wizard_01 wrote:
I have big array (about 1 000 - 100 000 items) . How can I detect what memory the app occupy ??
For getting memory occupied by array you can use the sizeof operator.
int array[] = { 100, 200, 300 };
size_t sizearr = sizeof( array );
Atul
Sonork 100.13714 netdiva
|
|
|
|