|
Hi,
I can't laod a bitmap which is a resource in my exe. To just test a simple image loading, I also tried the MSDN sample:
HICON hIcon = LoadIcon(NULL, IDI_APPLICATION);
Bitmap bitmap(hIcon);
It can't load the icon (hIcon is correct).
bitmap.lastResult = InvalidParameter !!
I have the latest platform SDK update and I call GdiplusStartup() correctly.
Thanks a lot for your help.
Nicolas
|
|
|
|
|
Hello Nicolas!
I just had the same question about bitmap and icon resources the other day. Try this, you need to include the MAKEINTRESOURCEW macro:
HICON hIcon = LoadIcon(NULL, MAKEINTRESOURCEW(IDI_APPLICATION));
Straight from the SDK documentation:
Pointer to a null-terminated string that contains the name of the icon resource to be loaded.
^^^^^ That is what confused me. If your loading the icon from file then use the pointer to a string identifying the icon.
Alternatively, this parameter can contain the resource identifier in the low-order word and zero in the high-order word. Use the MAKEINTRESOURCE macro to create this value.
^^^^ This is what you need.
Cheers.
Jay Beckert
|
|
|
|
|
Good try
But I had already tried that and it doesn't work more. I can only load bitmaps from external files but it never works for resources event with MAKEINTRESOURCEW>
Nicolas
|
|
|
|
|
Sorry Nicolas,
Is the icon a resource of your application or are you trying to load one of the default icons? If the icon is a resource of your app then you need to pass the instance of your app instead of NULL. If its one of the default icons then you pass NULL as the first parameter. I would still use the MAKEINTRESOURCE macro.
Second, I didn't realize your Bitmap was for GDI+ and just realized what your missing. GDI+ is a bit different with respect to GDI. I still confuse the two. I would try this,
HICON hIcon = LoadIcon(NULL, MAKEINTRESOURCE(IDI_APPLICATION));
Bitmap* bitmap;
bitmap = Bitmap::FromHICON(hIcon);
Then use your graphics object to display your bitmap.
For some reason you just can't call a function alone from any GDI+ class without referencing the class it's from. ie. Bitmap::FromHICON(hIcon). Off the top of my head I can't remember why that is.
This should work if the icon is a resource of your application
HICON hIcon = LoadIcon(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(ID_ICONRESOURCE));
Bitmap* bitmap;
bitmap = Bitmap::FromHICON(hIcon);
Then use a graphics object to display your bitmap.
Let me know what happens.
|
|
|
|
|
The problem is not the icon or the bitmap. I can load a hbitmap or a hicon fron a resource but when passing it to a Bitmap gdi+ object it doesn't work. If I use an external bitmap it works.
Strange no ?
Thanks
Nicolas
|
|
|
|
|
I have a clue :
I am unfortunately on a Silicon Graphics (windows 2000) machine and maybe the display driver gives me this problem. I tested my program on another PC with windows 2000 also and it works.
Thanks anyway for trying to help
Nicolas
|
|
|
|
|
i have this code on a button and it is ment to find the last { and then read the text in front of it and output it to edit4?
s = "this would be the text{ste}";
string l = "{";
a = s.rfind(l);
Edit3->Text = a;
int a;
String s;
for (int i = a;i<=s.Length();i++){
Output = Output + i;
}
Edit4->Text = Output;
and in the end output should = ste on this example
|
|
|
|
|
char abc[100];
strcpy(abc,"abc{ghj{popeye}jjj");
char *t,*y;
t=strrchr(abc,'{');
y=strchr(t,'}');
if(y)
*y=0;
cout << t+1;
Nish was here, now Nish has gone;
He left his soul, to turn you on;
Those who knew Nish, knew him well;
Those who didn't, can go to hell.
I like to on the Code Project
Sonork ID 100.9786 voidmain
www.busterboy.org
|
|
|
|
|
?????
|
|
|
|
|
The code snippet I posted is a demonstration of an easier way to achieve what you are attempting to do.
Nish
Nish was here, now Nish has gone;
He left his soul, to turn you on;
Those who knew Nish, knew him well;
Those who didn't, can go to hell.
I like to on the Code Project
Sonork ID 100.9786 voidmain
www.busterboy.org
|
|
|
|
|
soory i just got it thatnks a lot!!!!!!!!
|
|
|
|
|
The input string was :- abc{ghj{popeye}jjj
The output string is :- popeye
That's what you wanted huh?
Nish
Nish was here, now Nish has gone;
He left his soul, to turn you on;
Those who knew Nish, knew him well;
Those who didn't, can go to hell.
I like to on the Code Project
Sonork ID 100.9786 voidmain
www.busterboy.org
|
|
|
|
|
thanks i just got it!
|
|
|
|
|
i have just got an error wit the line: y=strchr(t,'}'); on running it i changed the code a bit to:
char abc[1000];
char *Input;
strcpy(abc,Input);
char *t,*y;
t=strrchr(abc,'{');
y=strchr(t,'}');
if(y) *y=0;
cout << t+1;
HidPass = t;
does this have anything to do with it?
|
|
|
|
|
You need to do one more pointer validity check.
char abc[1000];
char *Input;
strcpy(abc,Input);
char *t,*y;
t=strrchr(abc,'{');
if (t) y=strchr(t,'}');
if(y) *y=0;
if(t) cout << t+1;
HidPass = t+1;
Nish was here, now Nish has gone;
He left his soul, to turn you on;
Those who knew Nish, knew him well;
Those who didn't, can go to hell.
I like to on the Code Project
Sonork ID 100.9786 voidmain
www.busterboy.org
|
|
|
|
|
sorry about all this but now it has a problem with HidPass = t+1;//remember the plus one here
|
|
|
|
|
Is HidPass declared as a char* and if so, has it been allocated some memory using new or malloc?
By the way if the answer is "yes" to the above question replace that line with :-
if(t) HidPass=t+1;
Nish
Nish was here, now Nish has gone;
He left his soul, to turn you on;
Those who knew Nish, knew him well;
Those who didn't, can go to hell.
I like to on the Code Project
Sonork ID 100.9786 voidmain
www.busterboy.org
|
|
|
|
|
i dont get any errors now it just does not work? HidPass does not equal anything?
|
|
|
|
|
hang on i know why thanks for your help
|
|
|
|
|
Steven Richardson wrote:
hang on
Okay
Nish
Nish was here, now Nish has gone;
He left his soul, to turn you on;
Those who knew Nish, knew him well;
Those who didn't, can go to hell.
I like to on the Code Project
Sonork ID 100.9786 voidmain
www.busterboy.org
|
|
|
|
|
you said char *Input; //better alloc some memory here how do i do that?
and i know why it is not working! cos as soon as Input becomes a char it screws up and does not equal what it should?
|
|
|
|
|
Steven Richardson wrote:
you said char *Input; //better alloc some memory here how do i do that?
char *Input = new char[1024];
or
char Input[1024];
Nish
CPUA # 0x0666
Sonork ID 100.9786 voidmain
www.busterboy.org
|
|
|
|
|
Input cannot be made in to a char as it no longer equals what it should so as a AnsiString it equals: save that{ste} and as a char it equals:ÈóI
|
|
|
|
|
Hi,
I would like to pass a metafile from the container to my ActiveX control ( developed using ATL), how can I do that ? ( I always passed bools or number ... ).
Thanks, Bye !
Braulio
|
|
|
|
|
You can encapsulate your metafile in an object supporting the interface IDataObject . ATL <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_atl_idataobjectimpl.asp">IDataObjectImpl</a> class serves this purpose.
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|