|
Rickard Andersson wrote:
MFC is like the Devil and plain Win32 programming is like in heaven.
Not that I am a fan of MFC, but "plain" Win32 programming is very tedious, error prone and unproductive. If you don't like MFC, go to ATL window classes, or WTL. They are much easier and safer to work with, and impose no overhead.
Rickard Andersson wrote:
MFC has many memory leaks
Would you mind to show an example?
|
|
|
|
|
Nemanja Trifunovic wrote:
Would you mind to show an example?
Memory leaks in MFC are why we did not buy boundschecker. It's too much work trying to only see the leaks that are your fault, and too hard to find them under all the ones in MFC. I suspect a lot of them are percieved leaks due to badly written code, but if you get a demo and run an MFC app, you'll soon see what I mean.
Christian
No offense, but I don't really want to encourage the creation of another VB developer. - Larry Antram 22 Oct 2002
C# will attract all comers, where VB is for IT Journalists and managers - Michael P Butler 05-12-2002
Again, you can screw up a C/C++ program just as easily as a VB program. OK, maybe not as easily, but it's certainly doable. - Jamie Nordmeyer - 15-Nov-2002
|
|
|
|
|
You can take ICQ as an example!
It is written in MFC and eat your memory like a horse eat usual hores food!!
Rickard Andersson@Suza Computing
C# and C++ programmer from SWEDEN!
UIN: 50302279
E-Mail: nikado@pc.nu
Speciality: I love C#, ASP.NET and C++!
|
|
|
|
|
MFC is a bunch of macros, global functions, and C++ classes, most of which wrap around the Win32 API. So if you learn the Win32 API, you should have little trouble picking up MFC. However, if you already know and like C++, then don't bother with Win32 -- you'll learn it on the way -- start with MFC. It's a lot more fun and easy to work with.
I don't know about online tutorials but I learned MFC with one of the tutorials that came with the Visual C++ help (back in the day). The name of that tutorial is "Scribble". Look it up in the online help. It was great for learning a lot of different aspects of Windows development with MFC.
Regards,
Alvaro
Well done is better than well said. -- Benjamin Franklin
(I actually prefer medium-well.)
|
|
|
|
|
I use the book "Programming Windows with MFC" by Jeff Prosise. It is very helpful. Not absolutely the bible for MFC, but it gives an excellent play by play and the examples included with the book have given me a huge boost on the learning curve for MFC. It also has an online version with it, so I was able to put it on my laptop and take it everywhere with me.
I did know Win32 and that helped. Between this book, Code Project, and the forum here, I have had much success in using MFC and am increasing my knowledge base everyday.
Good luck!
|
|
|
|
|
Win32 is much more tedious and error prone than MFC, and even MFC is pretty old technology. I'd learn MFC and then drill down and learn Win32 later. I'd never use Win32 for anything unless I had very good reason, but it's good to learn it after a while so you understand what MFC is doing for you.
Christian
No offense, but I don't really want to encourage the creation of another VB developer. - Larry Antram 22 Oct 2002
C# will attract all comers, where VB is for IT Journalists and managers - Michael P Butler 05-12-2002
Again, you can screw up a C/C++ program just as easily as a VB program. OK, maybe not as easily, but it's certainly doable. - Jamie Nordmeyer - 15-Nov-2002
|
|
|
|
|
I strongly recommend using MFC over the Win32 API for any real-world application. However, I also strongly recommend knowing the Win32 API, since MFC is but a thin wrapper over this.
/ravi
Let's put "civil" back in "civilization"
http://www.ravib.com
ravib@ravib.com
|
|
|
|
|
I just wanna thank you all for your answers, however, so far nobody has mentioned any online tutorial on MFC and / or Win32. Any ideas?
Thanks again!
-- naradaji
|
|
|
|
|
Another idea:
could anybody give me examples on commercial MFC applications? And Win32?
And if anybody knows about on line tutorials....
Thanks!
|
|
|
|
|
|
Maybe I didn't make myself clear. Of course I know how to go to google and type 'MFC Tutorial'. I've done it hundreds of time, only about MFC and VC++. What I meant was rather something like: have you found ANY tutorial on the web that you consider good and useful. Can you PERSONALLY recommend me / direct me to one in particular?
I'm telling you: even though when you type 'MFC Tutorial' in google, you get a lot of links, none will take you to a decent TUTORIAL (maybe one, that is: I've only found one). Most of them are an introduction to MFC programming. Thet usually deal with the Visual Studio IDE, the wizards, the 'Hellow World!' application and little more. A tutorial is something more, mind you.
The one I found was by Kate Gregory about VC++ 6, and it's pretty complete (though not advenced at all). It's the only decent one I've found.
Has anybody found any other?
Thanks for all your replies!
-- naradaji
|
|
|
|
|
hi,all
I write a COM Dll in Visual ATL . And I refer the COM dll in VB environment. The vb program runs well except when the program exit, the error dialog occur. The error info are such as "the address can't read ..." . Is it concerns with
the c++ pointer ??? But how can I find the actuall false??
Are there any tools to help to debug the com dll??
The problem disturb me for very long time .
Ask for your help , please !
Regards.
|
|
|
|
|
Leesen wrote:
Are there any tools to help to debug the com dll??
Sure, just debug the DLL inside the Visual C++ debugger. Set the DLL's project as the "Active" one and then in the Settings, use your VB app as the "Executable for the debug session".
When your app exits, the debugger should take you to where the problem is occurring.
Good luck!
Alvaro
Well done is better than well said. -- Benjamin Franklin
(I actually prefer medium-well.)
|
|
|
|
|
thx . It really do well accroding to your suggestion .
But when I am in debug mode . I press "F5" to debug , the error dialog show "User breakpoint called from code at 0x77f9f9df",then the vc code change into assemble code . And in that way I can't debug further.
And how ??
|
|
|
|
|
debug your ATL com with VC++ degugger and point ur executable as your vb program
* * * Code the dreams * * *
|
|
|
|
|
hi,
thx.
I can debug the com dll following your advice.
Because just when my vb program exit the errors occurrs,
I set breakpoints in destructor function . Then when I exit the vb program ,it seemed the program did not execute the destructor code. It did not pause on the breakpoints,instead there showed a error dialog "Unhandled exception in P2P.exe : Access Violation".
If I direct run the vb program without the debug mode , when I exit the vb program I will receive such error message"the memory address can't be read..."
why?? I am exhausting now after so much try.
thx.
regards.
|
|
|
|
|
Hi !
Like in Mike's example, I use the SHBrowseForFolder to prompt the user for a directory, but i don't seem to get it. My app is a MFC Dialog, and here is the code :
LPBROWSEINFOA lpbi= new BROWSEINFOA;
LPSTR hello;
int g;
CWnd *tmp=AfxGetMainWnd();
lpbi->hwndOwner=tmp->m_hWnd;
lpbi->lpszTitle="Directory choice";
lpbi->pszDisplayName=hello;
lpbi->iImage=g;
lpbi->ulFlags=BIF_DONTGOBELOWDOMAIN;
lpbi->lpfn=NULL;
lpbi->pidlRoot=NULL;
SHBrowseForFolder(lpbi);
CSettingsDlg dlgSettings;
dlgSettings.DoModal();
break;
Ok. So the dialog opens properly but i get an error when i want to close it . What's wrong with it ?
Thanks a lot.
~RaGE();
|
|
|
|
|
Firstly
TCHAR rootPath[MAX_PATH];
BROWSEINFO bi;
LPITEMIDLIST pidl;
LPMALLOC pMalloc;
if (SUCCEEDED(SHGetMalloc(&pMalloc)))
{
ZeroMemory(&bi,sizeof(bi));
bi.hwndOwner = NULL;
bi.pszDisplayName = 0;
bi.pidlRoot = 0;
bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_STATUSTEXT;
pidl = SHBrowseForFolder(&bi);
if (pidl)
{
if (SHGetPathFromIDList(pidl,rootPathOfRip))
{
m_startDir = rootPath;
UpdateData(FALSE);
}
pMalloc->Free(pidl);
pMalloc->Release();
}
}
Thats the code I've used before for using the SHBrowseForFolder before and its seemed to work. Give that a quick try to see if it works, changing the variables and stuff of course. Other than that you could try doing a Step Into debug of it to see where it really craps out. Post back with more details if you can.
|
|
|
|
|
It works perfectly fine (well, the m_startDir is not defined and rootPathOfRip is rootPath , but i guess that's the cut&paste ), thanks a lot. Maybe you should mail this one to Mike, so that he gives it as example in the FAQ, because i do not think it is trivial.
~RaGE();
|
|
|
|
|
I have a rebar with a checkbox (all to br created in code). To make the view catch the message when the box is checked, the book said to add:
afx_msg void OnClick;
There was no association of this messagehandler with the object that emitted it. So I guess I was wondering if I had two checkboxes and wanted two different functions to run when they are checked, how would it know which one to run if I just do the afx_msg OnClick1 and OnClick2.
I note that when you write a handler for clicking a real button drawn from the toolbox onto a CFormView, the code generated by Visual Studio does associate the emitter of the messsage when it adds the relevant code. But here in this example from the book there is no such code to be added where the checkbox is associated with the clicked message.
HOpe its clear - my confusion.
Thanks
Appreciate your help,
ns
|
|
|
|
|
Why are my MFC toolbars very very UGLY?
They use some who-knows-what colours always.
In every other app, the toolbar is a fine gray/what my theme is, but in my app... it's some ugly white on the left(the grabbing thingy?) and rest some grey, but with another theme(darkish), its some weird looking dark grey with a VERY white on the left, but other programs are a good looking light gray(except the funky-toolbar ones of course)
|
|
|
|
|
Dear All, I have created buttons inside the list ctrl. First of all tell me the approach that I have followed is correct??.
Secondly, I have created Successfully but due to the header resizing option I am facing the button redrawing problem. As when the horizontal scroll is used the buttons are creating problem.
is there is any one help???
Natasha
Software Engineer.
|
|
|
|
|
Hello,
I am declaring a class within another class. In VC 7.0 the inner class has access to protected members of the enclosing class, but in VC 6.0 it does not. Here is the example:
#include <iostream>
class Big
{
protected:
static const int CONST_VALUE;
class Inner
{
public:
Inner ();
int x;
};
public:
Inner in;
};
const int Big::CONST_VALUE = 2;
Big::Inner::Inner ()
{
x = Big::CONST_VALUE;
}
int main ()
{
Big big;
std::cout << big.in.x;
}
Can anyone tell me if there is a bug in the(se) compiler(s)?
Thanks!
Best regards,
Alexandru Savescu
P.S. Interested in art? Visit this!
|
|
|
|
|
I can't tell for certain, but it appears to me as a bug in the VC7 compiler. I could be wrong, of course, since VC7 is supposed to be more compliant -- I don't have the ARM with me. But it just seems to me like protected means that it's accessible to derived classes. There's no provision for it being accessible to nested classes.
Regards,
Alvaro
Well done is better than well said. -- Benjamin Franklin
(I actually prefer medium-well.)
|
|
|
|
|
You've declared the Inner class as protected. declare it as public and you'll get it to work!
Rickard Andersson@Suza Computing
C# and C++ programmer from SWEDEN!
UIN: 50302279
E-Mail: nikado@pc.nu
Speciality: I love C#, ASP.NET and C++!
|
|
|
|