|
Instead of including "MyListCtrl.h" in MyView.h, put the next line:
class CMyListCtrl; // just to let compiler know about your type
and include "MyListCtrl.h" from the cpp file.
I vote pro drink
|
|
|
|
|
I’m afraid it still doesn’t work.
CMyView.h file:
class CMyListCtrl;
class CMyView : public CView
{
...
CMyListCtrl m_MyList;
...};
I´m getting error C2079: ´m_MyList´ uses undefined class ´CMyListCtrl´
Any ideas?
Thanks,
Jerzy
|
|
|
|
|
The best way is to make the member variable a pointer to the class
class CMyListCtrl; // instead of #include "MyListCtrl.h"
class CMyView : public CView
{
..
..
CMyListCtrl* m_pMyList;
.
.
.
}
In the constructor of the CMyView class, you can use
m_pMyList = new CMyListCtrl;
- Thomas
modified 29-Aug-18 21:01pm.
|
|
|
|
|
The best way is to make the member variable a pointer to the class
class CMyListCtrl; // instead of #include "MyListCtrl.h"
class CMyView : public CView
{
..
..
CMyListCtrl* m_pMyList;
.
.
.
}
In the constructor of the CMyView class, you can use
m_pMyList = new CMyListCtrl;
- Thomas
modified 29-Aug-18 21:01pm.
|
|
|
|
|
It works,
Thanks a lot !!!!!!!!!!!!!!
Jerzy
|
|
|
|
|
Hi,
I was wondering if anyone can tell me if the following is possible and how I
would go about doing it:
I have a CBitmap in memory that is created at start up that is 1750 x 2000
and is just an empty bitmap.
I have a list of corrodinates that I want to create CRgn's for, let's say I
have the following
0, 0, 10, 10
25, 50, 35, 60
I then load the Bitmap into a DC, the question is now, how do I create the
CRgn's on this bitmap? I've decided to try and use regions instead of a
color bitmap mask to do my image hotspots. Does anyone see anything that
I'm missing as to why this wouldn't work?
Thanks for any help you can provide,
Craig
|
|
|
|
|
This looks kind of familiar..
You must be in a hurry, codeguru.com??
|
|
|
|
|
Baafie,
Thanks for your reply, yes I have been stressing out on how I'm going to basically create a bmp/jpg that has hotspots to display tool tips and handle click messages.
One thing though, I'm usin the CRgn so I can find out where the user is pointing, I just noticed though that the PtInRegion is specific to one particular region. If I have 50 different regions does that mean I have to keep an array of CRgn objects and iterate through the array so that I can call PtInRegion on each object? This seems like it would be really slow, do you know of a better way to deal with this problem?
Thanks again,
Craig
|
|
|
|
|
There is a much better way to deal with this. Create a mask bitmap that is the same dimensions and marks out your regions in different colours. Use GetPixel to find out the colour of this second bitmap at your mouse position and viola - you have a match. You could create constant COLORREFs like this
const COLORREF MASK_HELP = RGB(255,0,0);
const COLORREF MASK_ABOUT = RGB(0,255,0);
Then you can grab your colour and do a switch statement that uses meaningful values instead of assorted colours.
Christian
#include "std_disclaimer.h"
The careful application of terror is also a form of communication.
Eagles may soar, but weasels don't get sucked into jet engines.
|
|
|
|
|
Christian,
That is actually an excellent suggestion, thank you. The problem I ran into with trying to do that method is when the graphic is zoomed and then I read in the masked graphic the points are all messed up because the masked image is being read into the dc at 100% and I couldn't figure out how to change the size of the image to match the one that is being displayed.
I have been trying to figure this out for about two weeks, it's a very frustrating problem for me, that is why I tried using the CRgn instead but it doesn't seem like that is a very good solution either .
Thanks again for your help, any other ideas and I would be very receptive to listening,
Craig
|
|
|
|
|
I am just looking at our zooming code as it happens ;0)
The way I handle things in my paint program is that I do one thing before anything else every time the mouse moves: I call a function that takes into account the scroll position and zoom factor and stores the mouse position converted to bitmap co-ordinates. Then I always have a member variabl I can use to operate on the bitmap and I know exactly what part of the bitmap the mouse is pointing at. I'd suggest you do the same - if the user zooms, scrolls or moves the mouse, take these things into account and recalculate so that you know where on your 1:1 bitmap they are pointing.
Christian
Secrets of a happy marriage #27:
Never go to bed if you are mad at each other. It's more fun to stay up and fight.
|
|
|
|
|
Christian,
Thanks so much for such information. I think the biggest problem I'm having is trying to figure out exactly where they are pointing. Is there some kind of formula that I can use to determine this information? I can get the zoom level from the Dundas COXSrollWnd class that I'm using. How is the conversion to bitmap coordinates done? Is there a CBitmap method that will do this for me?
Thanks again for all of your help, this has been an enlightening discussion for me to say the least,
Craig
|
|
|
|
|
First of all you need to get the point that comes in, then you need to add the scroll positions. If it is zoomed you need to divide by the factor zoomed, in other words if you're zoomed in by a factor of 2, you need to divide by 2, because 10, 10 in mouse co-ords will point to 5,5 on the bitmap.
Here is my function:
CPoint p = pt;
pt.x = pt.x + GetScrollPosition().x - m_XOffset;
pt.y = pt.y + GetScrollPosition().y - m_YOffset;
if (m_iZoom>0)
{
UINT divide = 1 << m_iZoom ;
pt.x = (long)(((float) pt.x/(float) divide));
pt.y = (long) (((float) pt.y/(float) divide));
}
else if (m_iZoom<0)
{
int multiply = 1 << (m_iZoom*-1);
pt.x *= multiply;
pt.y *= multiply;
}
In my case the zoom factor is not 1,2,3, but doubles every time in either direction, hence the shift operators. m_XOffset and m_YOffset are where the window is maximised and the bitmap is centered. There are lots of casts because I regard warnings as errors.
Christian
Secrets of a happy marriage #27:
Never go to bed if you are mad at each other. It's more fun to stay up and fight.
|
|
|
|
|
That is excellent, thanks so much for your help in this matter, you make it seem so easy after I've been trying so hard for so long.
I will certainly give this a try, I'm sure it will work fine for me.
Thanks again,
Craig
|
|
|
|
|
No worries - always glad to help.
Christian
Secrets of a happy marriage #27:
Never go to bed if you are mad at each other. It's more fun to stay up and fight.
|
|
|
|
|
If I have a web page loaded inside of a mfc program, how can
i make one of the hyper links, in the page, run a dialog
Caleb
|
|
|
|
|
One way would be to trick it. Set the hyperlink in question to some value that has meaning to you. THen override the OnBeforeNavigate method of the web browser control. Parse the URL and redirect it to open a dlg.
a href="opendlg" (would be nice to have
tag support)
OnBeforeNavigate(LPCTSTR lpszURL, ...)
{
if( !strcmp(lpszURL, "opendlg" )
dgl.DoModal()
}
I've used this type of trick before. It might not be the best but it gets you there without having to implement IDocHostHandler and such. You could also do this with script on the page itself.
|
|
|
|
|
Is there a "easy" or "best" way to insert a value into the registry using a MFC Dialog type application.. What I would like to do is..
Have a dialog type app, with a button that allows me to add a value\key to the registry this value would be pre-defined in the source code.. then whith a second button read\verify the registry key exists..
any ideas?
Rob Jones
|
|
|
|
|
Look at RegCreateKey and the other related function.
|
|
|
|
|
|
Hmm, I'm not sure if this is a common problem. I have a .dll that when compiled under Debug mode in VC++ 6.0, runs perfectly. But when I compile a Release version, the .dll can't correctly access the registry, redraw the window (I'm using InvalidateRect()), and will even throw an error when on exit.
So, I'm quite confused as to why this is happening. I don't really understand the difference between Debug and Release, I guess. Does anyone know what sort of compile options could be causing the problems I'm having?
thanks!
marc
m-flury@northwestern.edu
|
|
|
|
|
I have the same problem, and I don't know what to do about it. Accessing the registry, that is. Are you using the OpenRegKeyEx or the function(I forgot its name)?
Baaf.
|
|
|
|
|
I'm using CRegKey...
After reading the article recommended in the second reply, I'm betting my problems is my frequent use of the
assert(someFunction() == someVal);
programming no-no. Hope that helps!
|
|
|
|
|
I'm using CRegKey...
After reading the article recommended in the second reply, I'm betting my problem is my frequent use of the
assert(someFunction() == someVal);
programming no-no. Hope that helps!
|
|
|
|
|
,
hai dear i am working e=with registry, my problem
1. i am able to registry key in debug mode where as in release mode it's not opening it's returning error code . if ur having suggestion kindly update me ASAP
anshu
|
|
|
|