|
If you use the solution in the last post from this[^] you don't have to use the VC9 toolset. The fix addresses the non-docking issue that has crept in since MS updated MFC in vs2010.
So you'll still have the parallel bits you need and still use Codejock......
|
|
|
|
|
1. our current version does not compile
2. the trial version does not link
As long as I cannot resolve 1. or 2. any issues relating to whether or not controls function properly are moot.
Until then, thanks for trying to help, maybe I will be able to take advantage of your advice later.
|
|
|
|
|
When stopped in the debugger (Visual C++ 2005, native Win32/MFC code), you can mouse over variables and the debugger shows a nice tooltip. For some classes it also shows the member variables and values in that tooltip. For our MFC CObject-derived classes, all we get is the class name; it refuses to show the variables. We can use the + button to expand it and see the variables, but it would be nice to get them right in the tooltip.
Any idea what controls this?
===
For example:
class BaseClass
{
protected:
double i;
double j;
double k;
public:
BaseClass() { i = j = k = 0.57722; }
virtual ~BaseClass() {}
};
class MyClass : public BaseClass
{
protected:
double x;
double y;
double z;
public:
MyClass() { x = y = z = 3.14159; }
virtual ~MyClass() {}
};
void SomeFunction()
{
MyClass someVar;
int x = 0;
}
For the above example, when you're stopped in the debugger and you mouse-over someVar, you can see the below in the tool-tip.
someVar = {x=3.1415899999999999 y=3.1415899999999999 z=3.1415899999999999 }
Now, if you modify the code slightly by deriving from CObject, it seems to break this. If you change it to the below:
class MyClass : public CObject
{
protected:
double x;
double y;
double z;
public:
MyClass() { x = y = z = 3.14159; }
virtual ~MyClass() {}
};
void SomeFunction()
{
MyClass someVar;
int x = 0;
}
Now when you stop in the debugger and mouse-over someVar, you instead see the below.
someVar = {MyClass}
So for some reason, when deriving from CObject, we've now lost the mouse-over tooltip info!
Does anyone know what's going on? How can we get that back?
|
|
|
|
|
I found a solution to this. I discovered the name of the feature described is the DataTip. Once I had this a modified google search yielded the below article.
http://www.zanshu.com/ebook/149_debugging_applications/html/ch05d.htm
The summary is that there's a config file in the VC++ install directory which controls the auto-expansion in the DataTip.
For Visual C++ 2005, the file is at the below path.
C:\Program Files (x86)\Microsoft Visual Studio 8\Common7\Packages\Debugger\autoexp.dat
The comments in the file explain how to add your own types. For the above example, I added the below line and it then worked.
MyClass =x=<x> y=<y> z=<z>
So its a matter of customizing this file with your types and then keeping track of the customizations for new machines or re-installs of VS.
I'm still not sure why it does it automatically when you don't derive from CObject but fails when you derive from CObject. One guess is that the base class adds in too many variables? The problem with that guess is that in my example I included a base class with variables (i,j,k) and those didn't show up in the tip, so I don't understand why the base class matters.
|
|
|
|
|
Got a good tip from the MSDN forums on this.
Just comment out the below line in that file (insert a ; at the beginning of the line, or just delete the line).
CObject =<,t>
If you do this, it immediately shows the vars for your CObject-derived classes.
|
|
|
|
|
Thanks for sharing your solution with us.
> The problem with computers is that they do what you tell them to do and not what you want them to do. <
> "It doesn't work, fix it" does not qualify as a bug report. <
> Amazing what new features none of the programmers working on the project ever heard of you can learn about when reading what the marketing guys wrote about it. <
|
|
|
|
|
hi all, i've aproblem with this function, i hope you don't minde to help me
CreateFileA(m_pstrAllUsersPath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 128, NULL);
the m_pstrAllUsersPath value is "C:\Documents and Settings\All Users\Application Data\Avg9\update\download\avginfoavi.ctf".
It always return INVALID_HANDLE_VALUE although this file exist.
regards
|
|
|
|
|
Have you the rights required to open that file?
|
|
|
|
|
You should properly escape the path string, use:
"C:\\Documents and Settings\\All Users\\Application Data\\Avg9\\update\\download\\avginfoavi.ctf"
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
The file you are trying to open might be held by some other process with "no share" attribute. Or you might be passing a wrong file name. I suspect the first case.
|
|
|
|
|
When in trouble, read the manual. Better yet, read it before you get into trouble.
If the function fails, the return value is INVALID_HANDLE_VALUE. To get extended error information, call GetLastError.
There is no need for guessing, just call GetLastError() and you will know what gives.
|
|
|
|
|
Hello,
I have a dialog box that contains an ownerdraw listbox with imaghes and text I give the option to resizes the dialog box(by SetWindowPos),
such that not all of the listbox is appear ,
I changhed the vertical and the horizontal scrollbar properties to be true and they are appearing on dialog but I can't scroll them although the list box is not appear completely,
how can I cause the scroll bar to work appropriate ?
thanks
|
|
|
|
|
I just had what might be a similar problem, though it was just the horizontal scrollbar giving me trouble. I had to call SetHorizontalExtent, giving it the widest thing in the list in pixels.
Try calling that and see if it helps at least with the horizontal scrollbar.
|
|
|
|
|
Hi all,
please could i get some help on how to restrict writing to USB.
This is a complicated requirement i have, however this is what i need to achieve.
i need to restrict writing to USB. however writing can be done specifically to a folder and that too a specific file type.
i can use registry to block writing to USB, however this does not suit to the requirement.
hence i need some help on how to block writing to USB and allow only specific files to be written to one specific folder.
ThankYou.
|
|
|
|
|
You would need to write a USB filter driver which is not an easy task to do.
|
|
|
|
|
Hi all,
In my application i m insert the value from browsed list,
here i create a function to check same value in list,
if same value is found its generate new value for it
for example "abc",if again found "abc" its generate "abc1","abc2".. so on.
when i debug the code its working fine.
but when i run the application without debugging the code function not working fine.
its not generate new value and insert same value in list.
please help me for this.
thanks in advance.
|
|
|
|
|
Try posting some of the code of your program (remember to put it within <pre></pre> tags) so we can see how you are doing it.
Just say 'NO' to evaluated arguments for diadic functions! Ash
|
|
|
|
|
|
Hi all,
I have made a worker thread. I want to pass a integer as a parameter in my thread.
I am not getting how to do it.
Can anybody help me this.
Thanks in advance
|
|
|
|
|
A thread accepts a void pointer as its parameter.
If you want to pass an integer, you first typecast it as a void pointer and then typecast it back to an integer inside the thread function.
|
|
|
|
|
can you please explain me using a example.
|
|
|
|
|
Thread creation may look like this -
CreateThread(0, 0, Start, (LPVOID)1024, 0, 0);
Here 1024 is the value passed as parameter.
The thread function may look like this-
DWORD WINAPI Start(LPVOID p)
{
int i = (int)p;
return 0;
}
Here the passed in parameter will be available in the variable i.
|
|
|
|
|
Why don't you post the code you have written for your thread so that we can help you better?
|
|
|
|
|
It's been quite some time since I last used VC6 but I am currently working on an older project. I am sure there used to be a disable all breakpoints option but I cannot find it. It's not in the debug menu or the debug toolbar which is where I am sure it used to be. Anyone know where it is?
|
|
|
|
|
Tools > Customize > Commands tab. Choose Debug from the drop down box. On the right pane select the icon with two hands.
|
|
|
|