|
Rajkumar R wrote: And from the Déjà vu experience, I think you are using VC++/MFC
Nobody can give you wiser advice than yourself. - Cicero
.·´¯`·->Rajesh<-·´¯`·.
Codeproject.com: Visual C++ MVP
|
|
|
|
|
Hi all,
I am using below code..
CString lpImagePath;
lpImagePath="D:\\Program Files\\TabTab\\TabTab\\Images\\home_32bit.ico";
UINT colormap = LR_DEFAULTSIZE |LR_LOADMAP3DCOLORS| LR_LOADFROMFILE | LR_CREATEDIBSECTION|LR_LOADTRANSPARENT;
HBITMAP hBitmap =(HBITMAP)::LoadImage ((HINSTANCE)::GetModuleHandle(NULL),lpImagePath,IMAGE_BITMAP,0,0,colormap);
I am getting null in hBitmap if I am loading an icon file with Bit Depth=32.
LoadImage is working fine for all .ico file with Bit Depth upto 24 only.
But I dont know why it is not working for icon file with Bit Depth=32.
Please help me..
|
|
|
|
|
Does GetLastError() give you any clue to the reason LoadImage() fails?
Can you really load icons using IMAGE_BITMAP?
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Could you please check the error code by calling GetLastError
-Sarath.
"Great hopes make everything great possible" - Benjamin Franklin
|
|
|
|
|
Rahul Vaishnav wrote: I am getting null in hBitmap if I am loading an icon file with Bit Depth=32.
So what does GetLastError() return?
"Normal is getting dressed in clothes that you buy for work and driving through traffic in a car that you are still paying for, in order to get to the job you need to pay for the clothes and the car and the house you leave vacant all day so you can afford to live in it." - Ellen Goodman
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
Thanks for reply to you all...
I am not getting any error here.
the thing is I want to add that hbitmap in my ImageList.
like
HBITMAP hBitmap =(HBITMAP)::LoadImage ((HINSTANCE)::GetModuleHandle(NULL),lpImagePath,IMAGE_BITMAP,0,0,colormap);
nBmpIndex = ImageList_Add(m_hImageList, hBitmap,0);
so now I have solved that problem .
I am using below code now..
HICON hicon =(HICON)::LoadImage ((HINSTANCE)::GetModuleHandle(NULL),lpImagePath,IMAGE_ICON,0,0,colormap);
nBmpIndex = ImageList_AddIcon(m_hImageList,hicon);
it is workin fine...now I can add Icon with 32 bit Depth in my image list.
I observed one more thing that IMAGE_BITMAP works for icons also...but for icons with Bit Depth 24 only.
Thank you...
|
|
|
|
|
|
Man, I wish I had homework this easy...
- S
50 cups of coffee and you know it's on!
|
|
|
|
|
I think you must write your program and then aks the specific question.
|
|
|
|
|
All the answers you need are here[^]. Specifically the bit about buying a book and working through it.
This is so easy, if you can't work it out, you probably should talk to your teacher or consider dropping out. Either way, we don't do your homework here, we help you when you've tried to do it yourself.
Christian Graus - Microsoft MVP - C++
"also I don't think "TranslateOneToTwoBillion OneHundredAndFortySevenMillion FourHundredAndEightyThreeThousand SixHundredAndFortySeven()" is a very good choice for a function name" - SpacixOne ( offering help to someone who really needed it ) ( spaces added for the benefit of people running at < 1280x1024 )
|
|
|
|
|
Aldayne wrote: 1. Create a class called Accounts
Yeah! Go on! Do it!
Then post it here and we might work together to get you to learn the most basic C++.
Let's think the unthinkable, let's do the undoable, let's prepare to grapple with the ineffable itself, and see if we may not eff it after all. Douglas Adams, "Dirk Gently's Holistic Detective Agency"
|
|
|
|
|
I have a C makefile app which consists of 1 exe and 5 DLL's
These DLL's comunicate with each other via one Main Structure
which has data variables and other structures embedded in it
This main structure is exported and the DLL's that use it import
it
I have written a DLL in C++ makes use of this structure
When I include it I prefix the structure with extern "C" {
since it was orignally devolped in C environment and my Code has
Class and Object and I am compiling it under C++
I have added 2 pointers to this structure
both C DLL's and my C++ build cleanly however ("this is the problem")
The offset for the pointers in the C++ DLL is different (shorter)
then in the C code if some how the code compiled with different
lengths in the C and C++ code
I guess I can always just export the pointer itself from the C code
e.g. __declspec(dllexport) void * mainblk.prta
and import it in the C++ code extern "C" __declspec(dllimport) void * mainbl.ptra
Thankx
|
|
|
|
|
Make sure you include a
#pragma pack( [ show ] | [ push | pop ] [, identifier ] , n )
around your data structure so it is 'seen' as the same size in all projects.
One project probably packs at 2 byte boundaries or 4 and the other at 4 or 8, so they are mismatched, even though they both include the same header file.
Once you do this, your problem should go away.
Any headers you supply to a thid party (or consumed by multiple projects) should have pragma pack aruund all the data structures!
|
|
|
|
|
Still looking through the code (went into disassembly mode in Visual studio) and offsets look right thankx that seems to be it
I have to remember that C and C++ are really two different compilers even though they orignate from the same cl.exe
Thankx
|
|
|
|
|
Just went into disassembly mode and I see the offsets are not right
At least I'm getting closer
|
|
|
|
|
|
I have used it once get rid of slack bytes thankx
|
|
|
|
|
Hello everyone,
Here is the quoted section, words from Bjarne and his sample. The reason why I think the sample is wrong, is because, the member function sort accepts empty arguments, so when we call ::sort (v), only the one in global namespace will be matched -- there is no ambiguity to call sort member function of Container from parameter list comparison. I do not know why Bjarne commets "sort (vector<T>&) which calls std::sort() rather than Container::sort()" -- I think it has nothing to do with template -- just a normal function call matching.
Any comments? Do you agree with me and think his sample is wrong?
section 13.8.3 Point of Instantiation Binding
--------------------
unqualified name can not be bound to members of that class
--------------------
template <class T> void sort (vector<T>& v)
{
sort (v.begin(), v.end());
}
class Container {
vector<int> v;
public:
void sort()
{
::sort (v);
}
};
thanks in advance,
George
|
|
|
|
|
may be he discussed already about the existence of the member function "Container::sort(vector<T>& v)" in the class Container in some other context. And ofcourse, may be not the void Container::sort(void) as it becomes infinite recursion.
|
|
|
|
|
Thanks Rajkumar,
I think you mean it is better to describe in the following way?
sort( v );
which in member function sort of Container class calls
std::sort(vector<T>& v)
other than calls,
Container::sort(vector<T>&v);
regards,
George
|
|
|
|
|
George_George wrote: ::sort (v); // sort (vector<t>& ) which calls std::sort() rather than Container::sort()
The original sample in the book does not use :: .
Maxwell Chen
|
|
|
|
|
Thanks Maxwell,
You mean the sample code in your version of book is different from my book and which is,
void sort( vector<int>& v ) { sort( v.begin(), v.end() ); }
class Container
{
vector<int> v;
public:
void sort()
{
sort( v );
}
};
If the above code is what you mean, how does the code reflects the statement from Bjarne?
--------------------
unqualified name can not be bound to members of that class
--------------------
regards,
George
|
|
|
|
|
George_George wrote: You mean the sample code in your version of book is different from my book and which is
Yes.
What is your edition?
Mine is the 3rd Special Edition.
[Added]
George_George wrote: If the above code is what you mean, how does the code reflects the statement from Bjarne?
If it were ::sort(v) instead of sort(v) , then we would have known well that it refers to the global namespace one. There won't be any ambiguity to test whether sort(vector<int>& ) or Container::sort() .
Quote:
sort(v);
Maxwell Chen
modified on Monday, March 10, 2008 7:21 AM
|
|
|
|
|
Thanks Maxwell,
Do you mean your version of book is using the below code? If yes, I do not agree with you that sort(v) will invoke the global sort function sort(vector<t>&), and the code can not compile.
Here is the error message. Any comments?
>d:\visual studio 2008\projects\test_template3\test_template3\main.cpp(15) : error C2660: 'Container::sort' : function does not take 1 arguments
#include <vector>
using namespace std;
template <class T> void sort (vector<T>& v)
{
sort (v.begin(), v.end());
}
class Container {
vector<int> v;
public:
void sort()
{
sort (v);
}
};
regards,
George
|
|
|
|
|
George_George wrote: Do you mean your version of book is using the below code? If yes,
Could you please do not ask that many times of yes/no?! I have already asnwered "yes" in my previous reply.
George_George wrote: error C2660: 'Container::sort' : function does not take 1 arguments
Visual C++ has problem with ISO/IEC 14882 standard. That's all.
You can try other compilers.
Maxwell Chen
|
|
|
|