|
that is a good qusestion.. i can certainly use C++. but its just the curiosity to know how it can be done. i actually saw in a forum that inheritance can be acheived in c but there was no practical example available in the forum, there was only some explanations that was not satisfactory. so wanted to know more about it . if you could provide that would be great.
|
|
|
|
|
Just read this - Object Oriented Programming in C[^]. Implementing OOP behavior in C is not tough because cfront - the first C++ compiler does compilation by translating C++ source to C and then compile it. If you are insterested, have a look at the cfront source from here[^].
Regards,
Jijo.
_____________________________________________________
http://weseetips.com[ ^] Visual C++ tips and tricks. Updated daily.
|
|
|
|
|
Hi, I've created an owner draw Menu and i wanted to get the text and the shortcut key seperately. Any idea??
By calling below code, it will get both text and shortcut key and put inside a string.
COwnerMenu OwnerMenu; //this is inherit from CMenu
OwnerMenuPointer->GetMenuString(i, str, MF_BYPOSITION);
I tried to seperate it by searching "Ctrl+"
But as the shortcut key might not started with Ctrl+, so i cant use this method..
Can i get the shortcut key and also the text seperately by using the pointer "OwnerMenuPointer" ??
I've search through net and I cant find any solution
Any help would be appreciated.
Regards,
KH
good
|
|
|
|
|
The shortcut text is separated from the menu item text by a tab character. Just search for \t within the menu string and split it at that point.
|
|
|
|
|
OH THANKS!!!
IT WORKS !!
good
|
|
|
|
|
How are you defining the menu items? Usually, you define a shortcut key for a menu item using \t and Windows displays the shortcut on the right hand side of the menu. For example, in the resource editor, you would define New as New\tCtrl+N
|
|
|
|
|
You should also look at this article:
http://www.codeproject.com/KB/menus/newmenuxpstyle.aspx[^]
I helped the author add code to parse the accelerotor table to get the short cut keys, cutting out the need to write them in the menu initially. This also lets you have changeable keys in your software.
And it's a super article before I put my nose in...
Iain.
|
|
|
|
|
oh thanks !!
Its a great article ^^
good
|
|
|
|
|
When the user begins editing an item label in a list control, I'd like to select a portion of the text in the edit control. I'm using MFC and currently, I'm calling GetEditControl() in the LVN_BEGINLABELEDIT handler and then using SetSel() to set the selection in the edit control. This works as expected under Vista, but under XP, the code seems to have no effect and nothing is selected. Has anyone come across this behaviour before? Any help towards solving this problem is greatly appreciated.
|
|
|
|
|
Just an idea, try posting the EM_SETSEL[^] message to the edit instead of calling SetSel() on it directly in the message handler and see if it changes anything.
> The problem with computers is that they do what you tell them to do and not what you want them to do. <
|
|
|
|
|
Wonderful, it works! I guess that XP resets the selection after the LVN_BEGINLABELEDIT handler returns, so posting the message did the trick.
|
|
|
|
|
Good old PostMessage, it helped me out a few times too. Maybe we should send flowers as a thank, or better, post flowers.
> The problem with computers is that they do what you tell them to do and not what you want them to do. <
|
|
|
|
|
I seem to have encountered a Debug Assertion failure in AFXWIN2.inl, line 572
The error happens in the following Code:
void CBitmapEdit::PutUpImage()
{
HBITMAP PreEditImage = LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP1));
m_EdittingImage.SetBitmap(PreEditImage)
DoModal();
}
.
.
.
.
.
.
void CEditAndCapture::OnEditbmp()
{
CBitmapEdit* EditImage = new CBitmapEdit;
EditImage->PutUpImage();
}
m_EdittingImage is a CStatic object that will contain the Bitmap to display a dialog
CBitmapEdit is a class derived from CDialog that will create a popup modal dialog box
CEditAndCapture is the class that handles the main window and the call to CBitmapEdit is as above.
I kinda suspect is the way I'm calling CBitmapEdit 's methods, am I right?
BTW, Line 572 is :
_AFXWIN_INLINE HBITMAP CStatic::SetBitmap(HBITMAP hBitmap)
{ ASSERT(::IsWindow(m_hWnd)); return (HBITMAP)::SendMessage(m_hWnd, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBitmap); }
Can anyone help? Thanks.
Jeffrey
|
|
|
|
|
It looks like you never created the window associated with the CStatic control.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
Ah... I see. Cart before the horse issue...
All because I was doing it in modules and didn't set up everything else yet before testing..
I'll try again...
Thanks
|
|
|
|
|
JJeffrey wrote: All because I was doing it in modules and didn't set up everything else yet before testing..
At least you're doing test. That's a good practice.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
|
Do you mean something like this [^]?
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
Hi,
I have template class with the following declaration
template<typename T>
class PrintUserData
{
public:
template<typename T1, typename T2>
bool PrintData (T1 const& t1, T2 const& t2);
};
How do I specialize this class and it's overload members for the following
1. Specialize for class MyClass / class UserClass etc
2. Overload PrintData template member for class TextFormater i.e. T1 = T2 = TextFormater
3. Overload PrintData template member for class RtfFormater/class TextFormater i.e. T1 = RtfFormatter/TextFormatter, T2 can be anything
4. Overload PrintData template member for class RtfFormater/class TextFormater i.e. T2 = RtfFormatter/TextFormatter, T1 can be anything
I find Full Specialization for specific class is easy
e.g.
template<>
class PrintUserData<MyClass>
{
// other member
};
but I am kind of stuck when I tried to oveload the member method
I am trying to get comfortable with C++ Templates so please assist me in obtaining the desired result. If someone feels that the template class declartion needs to be changed to achieve the desired result please let me know. I will change it accordingly
Thanks and Regards
|
|
|
|
|
#include <iostream>
template<typename T>
class PrintUserData
{
public:
template<typename T1, typename T2>
bool PrintData (T1 const& t1, T2 const& t2)
{
std::cout << "Template" << std::endl;
return true;
}
template<class T2>
bool PrintData<int, int>(int const& t1, T2 const& t2)
{
std::cout << "Partially specialised Template" << std::endl;
return true;
}
bool PrintData(float const& t1, float const& t2)
{
std::cout << "Function Overload" << std::endl;
return true;
}
};
struct MyClass {};
template<>
class PrintUserData<MyClass>
{
public:
template<typename T1, typename T2>
bool PrintData (T1 const& t1, T2 const& t2)
{
std::cout << "MyClass specialisation" << std::endl;
return true;
}
};
int main(int, char**)
{
PrintUserData<int> pudInt;
pudInt.PrintData('a', 'a');
const int a = 10;
pudInt.PrintData(a, a);
const float b = 10;
pudInt.PrintData(b, b);
PrintUserData<MyClass> pudMy;
pudMy.PrintData('a', 'a');
}
HTH?
|
|
|
|
|
Hi Stuart,
Thanks for the help. I tried compiling your code with Visual C++ 2005 Professional SP1 compiler and the compiler gave me the following error :- "error C2768: 'PrintUserData<T>::PrintData' : illegal use of explicit template arguments". "See reference to class template instantiation 'PrintUserData<T>'
While the code at (2) compliles properly, the reason could be that the compiler sees t the second
declaration/(definition) as a full specialization of member template function for any class. Please correct me if I am wrong
template<class T2>
bool PrintData<int, int>(int const& t1, T2 const& t2)--------------- (1)
{
std::cout << "Partially specialised Template" << std::endl;
return true;
}
bool PrintData(float const& t1, float const& t2)-------------------- (2)
{
std::cout << "Function Overload" << std::endl;
return true;
}
On the second thoughts I think there could be an issue with the Visaul C++ 2005 SP1 compiler regarding the template specification implementation
Regards
|
|
|
|
|
I compiled it with the VS2008SP1 compiler (that's version 15.00.30729.01 of cl ) - compiled and ran OK But it doesn't compile with gcc 3.4.5
(2) isn't a full specialisation - it's an overload, which is slightly different - it probably alters the relative priority of the overload in partial function ordering.
|
|
|
|
|
Hi Stuart,
Thanks for letting me know that the real issue is with VS2005 SP1 compiler. I will try to get hold of VS 2008 SP1 compiler and try on it.
In last two days I went crazy trying to figure out what is wrong with the declaration/definition, now I know the reason.
Do you think VS2008 SP1 compiler is the most complete one when it comes to templates specification implementation?
And does it supports export keyword for templates?
Thanks and Regards
|
|
|
|
|
psychedelic_fur wrote: Do you think VS2008 SP1 compiler is the most complete one when it comes to templates specification implementation?
It's not far off the top.
psychedelic_fur wrote: And does it supports export keyword for templates?
No - but then, which C++ compiler does
That's a trick question, 'cause here's the answers:
- Comeau C++[^]
- Intel C++ for Linux..but don't know about Windows.
- Possibly Borland C++
|
|
|
|
|
Hi all,
i have created a dialog similar to messagebox can somebody tell me what font should i use to display the message,so that look and feel is same for both .
vikas da
|
|
|
|