|
It has become abundantly obvious that you need to learn how to debug YOUR OWN code. One of the first things I do in this situation is to expand all code expressions. Break them down to their simplest components and use LOTS of temporary variables so that you can examine each of their values. This may not be the most efficient of methods but that is not a high priority for you at this point in time. I see lots of pointer derefs in your code. Make each of them a temporary variable so that you see what the assignment actually is. Step into each of these function calls so that you see what is actually going on.
This is the only way that you will really learn what your code is doing.
|
|
|
|
|
Hi,
I program using Visual C++, vi, some occassionally using KDevelop. I usually experience problems with tabs and spaces. I use tab (3 spaces) in Visual C++. However, vi almost always open the source files with random spaces.
In general, do developers use spaces instead of tabs?
Thanks,
|
|
|
|
|
kuphryn wrote:
In general, do developers use spaces instead of tabs?
No!!! I don't think any serious developer would use spaces.
By the way if you have saved a file from Visual Studio and it looks funny in vi then you might have to convert it from DOS to UNIX [basically replace every CR LF with CR]
Nish
Sonork ID 100.9786 voidmain
www.busterboy.org
If you don't find me on CP, I'll be at Bob's HungOut
|
|
|
|
|
Actually this is a subject of widespread debate.
My personal MO is to use tabs of four spaces each.
But that's just me.
I also indent the parens but then again, this a matter of style.
My jokes page
|
|
|
|
|
Someone who actually uses the same style as me?
Do you really exist?
Roger Allen
Sonork 100.10016
If I'm not breathing, I'm either dead or holding my breath.
A fool jabbers, while a wise man listens. But is he so wise to listen to the fool?
Please step to the rear of the car and make room for more victims. - John Simmons the Outlaw programmer, 1st Feb 2002, in the lounge
|
|
|
|
|
Chk these
ftp:
ftp:
ftp:
ftp:
ftp:
Atul
Sonork ID : 100.13714
|
|
|
|
|
A tab is 8 spaces in any other editor I know of except VC++. If you need to edit the same code in different editors, set tabs to 8 spaces or use spaces instead of tabs.
|
|
|
|
|
Thanks everyone.
I set Visual C++ to use *spaces* when I hit the tab key. This method works great. Thanks!
Kuphryn
|
|
|
|
|
i have a program where i need to read and save .cur files. I figure saving will be done in the serilize function but i dont know how to actually save the info as the .cur format. i figure its just a bitmap with a point(the hot spot) but im not sure. anyone know of any sites that say how to do this? hope that makes sense.
-Raffi
The truth about C++
|
|
|
|
|
|
|
Thanks alot.
-Raffi@School who cant remember his pw.
|
|
|
|
|
Does anyone know of a quick tut on SplitterWnd...?
I've used them once, but can't for the life of me get them to work again.
I'm having kittens here, so if anybody could direct me in the right direction atleast(tutorial) i'll take it from there.
Heres my code
m_wndSplit.CreateStatic(this, 2, 1);
m_wndSplit.CreateView(0, 0, RUNTIME_CLASS(CTheView), CSize(10,10), pContext);
m_wndSplit.CreateView(1, 0, RUNTIME_CLASS(COtherView), CSize(10,10), pContext);
What am i doing wrong...?
The last time i used Splitter it wasn't required to have control over the view(s) so RUNTIME_CLASS(CEditView) was fine. However now i'd like to know, is there a way to create an instance of CView and use that with RUNTIME_CLASS(theView) so I can call it's member funtions...?
I hope I make sense..;P
THANX
"An expert is someone who has made all the mistakes in his or her field" - Niels Bohr
|
|
|
|
|
I assume you are creating the splitter windows from within your CFrameWnd derived class. Now I don't see why you would want to create a CView derived object and pass that to the splitter function. Anyway that's not possible. But I am curious as to why you'd want to do that.
Nish
Sonork ID 100.9786 voidmain
www.busterboy.org
If you don't find me on CP, I'll be at Bob's HungOut
|
|
|
|
|
Created in CMainFrame OnCreateClient yup...I figured out, or rather fixed them problem...can't say exactly what was causing the views no to show. However it seems that CMainFrame had OnSetFocus() OnCmdMsg() overridded and they were empty, when i removed these functions...the panes magically appeared???
Nish [BusterBoy] wrote:
Now I don't see why you would want to create a CView derived object and pass that to the splitter function
What do you mean...i thought you had to use CView derived classes in splitter windows...?
The classes i'm actually using are CSortListCtrl(found here on CP) but I converted it into a CListView, cuz i thought only views were allowed. And again CTreeview, I need a windows explorer type SDI
Tree on the left, list on the right...
Unless I mis-understood you earlier, i'll ask agin.
I can't do the following..?
CSortListCtrl m_ctlrList;
m_wndSplit.CreateView(0, 1, RUNTIME_CLASS(m_ctrlList), blah...);
Is this because CreateView is creating the instance of CSortListView(or whatever) itself using rtti...?
If so, once i have my panes created, how could i call the derived CView classes member functions...? Like a CListView AddItem()...?
Thanx Nish!
"An expert is someone who has made all the mistakes in his or her field" - Niels Bohr
|
|
|
|
|
HockeyDude wrote:
Unless I mis-understood you earlier, i'll ask agin.
I can't do the following..?
//CMainFrameCSortListCtrl m_ctlrList;//OnCreateClientm_wndSplit.CreateView(0, 1, RUNTIME_CLASS(m_ctrlList), blah...);
As far as I know, you cannot do that.
The RUNTIME_CLASS macro takes a class name and not an instance of the class.
Regards
Nish
Sonork ID 100.9786 voidmain
www.busterboy.org
If you don't find me on CP, I'll be at Bob's HungOut
|
|
|
|
|
Thanx again!
"An expert is someone who has made all the mistakes in his or her field" - Niels Bohr
|
|
|
|
|
It's cool Nish...I think i figured it out...
However I'm cursious.
Does the CreateView function actually create and instantiate the CView derived class itself using rtti..?
"An expert is someone who has made all the mistakes in his or her field" - Niels Bohr
|
|
|
|
|
HockeyDude wrote:
Does the CreateView function actually create and instantiate the CView derived class itself using rtti..?
Yes. It does exactly that. It calls the CreateObject function to actually create an object of your view class
Nish
Sonork ID 100.9786 voidmain
www.busterboy.org
If you don't find me on CP, I'll be at Bob's HungOut
|
|
|
|
|
Cool..thanx again!
"An expert is someone who has made all the mistakes in his or her field" - Niels Bohr
|
|
|
|
|
what can i do to allow my program to run only in 1 instance (if i run my program, i cannot open the similar program without closing the other 1.)
something similar to windows disk defragmenter. i am currently using MDI for my project. hope experts out here can help mi
|
|
|
|
|
No expert i'm afraid.
However msdn states
hPrevInstance
Handle to the previous instance of the application. For a Win32-based application, this parameter is always NULL.
If you need to detect whether another instance already exists, create a uniquely named mutex using theCreateMutex function. CreateMutex will succeed even if the mutex already exists, but theGetLastError function will return ERROR_ALREADY_EXISTS. This indicates that another instance of your application exists, because it created the mutex first.
HTH
Cheers
"An expert is someone who has made all the mistakes in his or her field" - Niels Bohr
|
|
|
|
|
For a great article on this subject, go to:
http://www.pgh.net/~newcomer/nomultiples.htm
Jim
|
|
|
|
|
I only browsed through it quickly, but my impression was that CreateMutex won't work as solid as you would think. I totally didn't even think of multitasking.
Thats for the tip...
I'll be sure to read up on it, so as not to offer insufficient advice.
Ah well there loss not mine!
Cheers
"An expert is someone who has made all the mistakes in his or her field" - Niels Bohr
|
|
|
|
|
Use this class:-
class CLimitSingleInstance
{
protected:
DWORD m_dwLastError;
HANDLE m_hMutex;
public:
CLimitSingleInstance(TCHAR *strMutexName)
{
m_hMutex = CreateMutex(NULL, FALSE, strMutexName);
m_dwLastError = GetLastError();
}
~CLimitSingleInstance()
{
if (m_hMutex)
{
CloseHandle(m_hMutex);
m_hMutex = NULL;
}
}
BOOL IsAnotherInstanceRunning()
{
return (ERROR_ALREADY_EXISTS == m_dwLastError);
}
};
Nish
Sonork ID 100.9786 voidmain
www.busterboy.org
If you don't find me on CP, I'll be at Bob's HungOut
|
|
|
|