|
Thanks i will definitely read that book
Thanks and regards
Harshal shete
|
|
|
|
|
Hi all.
My application has large number of tool bar button. When I change the setting of my computer's resolution from 1024 X 768 to 800 X 600, some of the tool bar options becomes inaccessible.
I want to either change the tool bar buttons size depending upon the resolution or provide a scroll bar to access the tool bar buttons which are getting hidden behind the application’s frame window.
How I can do this?
Is there ant API available to do this?
Thanks
Sameer Thakur
|
|
|
|
|
Sameer_Thakur wrote: I want to either change the tool bar buttons size
You can use SetSizes function of CToolbar for this
nave
|
|
|
|
|
Yes Nev
but how can I coordinate the size that I pass to SetSizes() function with the Screen Resolution?
Thanks
Sameer Thakur
|
|
|
|
|
in the resolution of 1024 X 768 you know the width and height of the tool bar. change it to percentage of the screen height and width.
So when the resolution changes, u can set the new height and width of toolbar as that percentage of the screen height and width.
nave
|
|
|
|
|
You could use the TBSTYLE_WRAPABLE style on the toolbar. Letting the tolbar wrap buttons to
a new row isn't necessarily the way you want it to look though
|
|
|
|
|
When i am compiling the following code i am getting an error.
ERROR is:
error C2248: 'CObject::operator =' : cannot access private member declared in class 'CObject'"
see declaration of 'CObject::operator ='
see declaration of 'CObject'
This diagnostic occurred in the compiler generated function 'CPtrArray &CPtrArray::operator =(const CPtrArray &)'
Why the compiler is generating the function 'CPtrArray &CPtrArray::operator =(const CPtrArray &)'?
CPtrArray inherits CObject but it does not implement operator=
This error message is coming after conversion to .net..
class CPtrArray : public CObject
{
//does not implement operator=
}
class __declspec ( dllexport ) CCASObject : public CObject
{
public:
virtual void operator=( const CCADSObject& ){}
};
class CSpanLoad : public CCASObject
{
public:
void operator=( const CCASObject& );
private:
CPtrArray aPointArrays;
};
//spanload.cpp
void CSpanLoad::operator=( const CCASObject &src )
{
//....
}
//Import.cpp
int CImport::ReadLoadCategoryData()
{
CSpanLoad *pA3Ld,*pBDLd;
*pA3Ld = *pBDLd; //this assignment is giving error in VS2005.In VC6 it was not showing the error;
}
Thanks..
|
|
|
|
|
sheetal_06 wrote: void operator=( const CCASObject& );
How this operator is defined?
How you are using aPointArrays in your code ?
|
|
|
|
|
Hi,
It is getting invoked when
*pA3Ld = *pBDLd;
is executed.And there only it is giving error.
//this is how it is used...
// adding
CPtrArray *pPoints = new CPtrArray;
aPointArrays.Add( pPoints );
// Delete any CPoints stored for undrawing
int iTot = aPointArrays.GetSize();
int iCur;
for( iCur = 0; iCur < iTot; iCur++ )
{
CPtrArray *pPoints = (CPtrArray*)aPointArrays.GetAt( iCur );
int iTot2 = pPoints->GetSize();
---
---
}
Thanks
|
|
|
|
|
sheetal_06 wrote: class CSpanLoad : public CCASObject
{
public:
void operator=( const CCASObject& );
private:
CPtrArray aPointArrays;
};
//spanload.cpp
void CSpanLoad::operator=( const CCASObject &src )
{
//....
}
Here you have mistaken with assignment operator.
It should be like this,
class CSpanLoad : public CCASObject
{
public:
void operator=( const CCASObjectCSpanLoad& );
private:
CPtrArray aPointArrays;
};
void CSpanLoad::operator=( const CCASObjectCSpanLoad& src )
{
}
|
|
|
|
|
but it was working in VC6(before converting to .net..)
Thanks
|
|
|
|
|
sheetal_06 wrote: (before converting to .net..)
To start with , its not .net , its VS 2008,VC8 .
There is lot of difference betn VC 6 and VC 8. As far as C++ standards are concerned, earlier version of VS was far behind.
Which has been corrected with VS2K3 and VS2k5.
Giving error in this case, in fact it is sticking to C++ rules.
|
|
|
|
|
sheetal_06 wrote: class CPtrArray : public CObject
{
//does not implement operator=
}
I'm curious how you got this to compile in VC++ v6 since CPtrArray is an existing MFC class, and the class is missing a semicolon.
"Approved Workmen Are Not Ashamed" - 2 Timothy 2:15
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
Probably, he is showing the declaration in header. Atleast I assumed it, while giving replies.
|
|
|
|
|
I've answered this several times for you. You HAVE to have an assignment operator for CObject
derived classes if they are to be used in a container. Why not just implement the operator in
your class?
|
|
|
|
|
I have implemented operator= in CCasObject and in CSpanLoad.But operator= is not there in CPtrArray which is an MFC class..How can i add operator= into CPtrArray???
|
|
|
|
|
Something else is wrong then...
CSpanLoad *pA3Ld,*pBDLd;
*pA3Ld = *pBDLd;
These are not CPtrArrays!
|
|
|
|
|
CPtrArray is a member of CSpanLoad...
class CPtrArray : public CObject
{
//does not implement operator=
}
class __declspec ( dllexport ) CCASObject : public CObject
{
public:
virtual void operator=( const CCADSObject& ){}};
class CSpanLoad : public CCASObject
{
public:
void operator=( const CCASObject& );
private:
CPtrArray aPointArrays;
};
//spanload.cpp
void CSpanLoad::operator=( const CCASObject &src )
{
//....
}
//Import.cpp
int CImport::ReadLoadCategoryData()
{
CSpanLoad *pA3Ld,*pBDLd;
*pA3Ld = *pBDLd; //this assignment is giving error in VS8.In VC6 it was not showing the error;
}
|
|
|
|
|
Ohhh now we're getting close!
You'll need to implement the copy from one array to another. Deep copy would be creating a new
pointer of the object type of the pointer. A shallow copy would be just copying the pointers from
the source to the destination array. Just PtrArray = Src.PtrArray; won't work.
|
|
|
|
|
could u plz tell me so where is the actual problem??I thought it is generating the error:
error C2248: 'CObject::operator =' : cannot access private member declared in class 'CObject'"
see declaration of 'CObject::operator ='
see declaration of 'CObject'
This diagnostic occurred in the compiler generated function 'CPtrArray &CPtrArray::operator =(const CPtrArray &)'
b'coz i am trying to pass a CSpanload object into a CCasObject.CCasObject is a dll.So while compiling it may do static linking.At that time it is trying to locate the function 'CPtrArray &CPtrArray::operator =(const CPtrArray &)'
which is not actually implemented in CPtrArray...If i am wrong plz correct..
|
|
|
|
|
sheetal_06 wrote: At that time it is trying to locate the function 'CPtrArray &CPtrArray::operator =(const CPtrArray &)'
There isn't one implemented. That's why it's an error.
sheetal_06 wrote: i am trying to pass a CSpanload object into a CCasObject
How are you passing it? Are you sure you need to do a full copy or could you pass a reference or
pointer? If you must copy then you'll need to copy the CPtrArray member appropriately. Since
it's an array of pointers - if the pointers are allocated using new and you copy the pointers
from one array to another, then delete the pointers in one array and try to delete the pointers
again in the copy array then it will crash.
|
|
|
|
|
Ya,I need to copy the pointer..
The pointers *pA3Ld and *pBDLd are created using new...
So could u plz suggest one solution...
When i am changing the code as follows it is working...But i din understand why?
class CSpanLoad : public CCASObject
{
public:
void operator=( const CSpanLoad & );//earlier it was const CCASObject &
private:
CPtrArray aPointArrays;
};
//spanload.cpp
void CSpanLoad::operator=( const CSpanLoad &src )//earlier it was const CCASObject &
{
//....
}
|
|
|
|
|
I am doing work in win32 console application. my problem is i want to hide the console window ,when my program is execute
pls help me .
thanks in advance
Yes U Can ...If U Can ,Dream it , U can do it ...ICAN
|
|
|
|
|
Use FreeConsole(), hope it will work.
Smile
|
|
|
|
|
Use FreeConsole(),
I think while debugging it will not work. Try running in release mode, hope it will work.
Smile
|
|
|
|