|
What in the hell are you talking about ? A listbox ? A listctrl ? A FlexGrid ? Please ellucidate.
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.
|
|
|
|
|
It's a HeaderCtrl in a ListView
|
|
|
|
|
Not in Control pannel.
|
|
|
|
|
I am an intermediate Visual C++ programmer.
I am writing a program which I need to read CPU and Motherboard temperature. I know that I have to get those info from some IO ports. But I don't know.
I appreciate any kind of help on this project.
I can also make an affiliate thing or anything. I am desperately in need!!!
Thanks in advance
Damon
|
|
|
|
|
Can anyone tell me how I can save a file which has a custom extention and set the icon programatically ? I want to make the icon a preview of the image in the file. I don't care if I register the filetype with Windows or not.
Thanks
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.
|
|
|
|
|
Hey Christian,
What you're after is an icon handler extension. Michael Dunn has an article on this here which you may be interested in. That's the part for changing the icon at least.
To get an icon as required, I'd create a correctly-sized bitmap, put it into an image list, extract the icon and then use that as the icon to be displayed as required by the shell extension. The article has all the details on how to write the shell-extension itself. There's probably a better way of generating the icon but that's the first thing that popped into my head.
Hope that helps,
> Andrew.
|
|
|
|
|
Cool - thanks.
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.
|
|
|
|
|
I have added several variables (all doubles) to a class. They appear in the header file as public doubles. They also appear in the class. When I try to access them some are there, and some error out as undeclared identifiers. Where, Oh Where have I failed.
Richard
|
|
|
|
|
So you're saying that in your header you have
double d1, d2, d3, d4;
and in your cpp file you try to use these variables and they are not there ? Or from somewhere else ? Because it's not clear - if it's not somewhere else, why does it matter they are public.
If you posted some code I could help you.
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.
|
|
|
|
|
I have SDI app with Doc/View support.
I want to add a member variable m_MyList (based on a CListCtrl's derived class CMyListCtrl) to CMyView class.
So i put #include "MyListCtrl.h" in MyView.h (otherwise compler won't know what m_MyList is)
*********************************************
CMyView.h:
#include "MyListCtrl.h"
class CMyView : public CView
{
...
CMyDoc* GetDocument(); //error C2501
...
CMyListCtrl m_MyList;
...
};
*****************************************
In MyListCtrl.cpp I want to get the pointer to CMyView like this:
CMyView *v=(CMyView *)GetParent()
But compiler will complain that it doesn't know what CMyView is. The moment I #include "MyView.h" on the top of MyListCtrl.cpp I'm getting error C2143 and C2501. (Because it it circular refrence). How to solve this problem?
By the way, (assuming I don't have my new class CMyListCtrl yet) why line CMyDoc* GetDocument(); dosn't bomb ????????
How does compiler know what CMyDoc is ?????. There's no #include "MyDoc.h" in CMyView class definition.
error C2143: syntax error : missing ';' before '*'
error C2501: 'CMyDoc' : missing storage-class or type specifiers
Any comments?
Thanks,
Jerzy
|
|
|
|
|
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.
|
|
|
|