|
For image display, I found in the past that <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/mmfunc_76if.asp">DrawDibDraw</a> does a fairly good job (smooth scaling, dithering...)
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
|
I do not know how to create a String , I'd like to do something like
String s = new String("hello");
and I'd like also to know how to compare 2 strings
thanks
Pierre
|
|
|
|
|
Look up the class CString in MSDN.
Jon Sagara
What about ?
|
|
|
|
|
Use the Class CString and the function method Compare or CompareNoCase....
CString str = _T("Hello");
if(str.Compare("Hello") == 0)
{
AfxMessageBox("Equal");
}
Regards
APATHY ERROR: Don't bother striking any key. Application has reported a "Not My Fault" in module KRNL.EXE in line 0200:103F
Carlos Antollini.
Sonork ID 100.10529 cantollini
|
|
|
|
|
Perhaps this question has been asked before but I could not find it.
How can I get the netbios name of a computer in my lan if I only know its ip number ?
Orcun Colak
|
|
|
|
|
|
Has anyone been able to get around the problem when using CBitmapDialog. The problem is that you cannot set the text colour of static controls.
Any help would be much appreciated.
Andy.
|
|
|
|
|
I guess you're referring to Joerg Koenig's <a href="http://www.codeguru.com/dialog/BmpDlg.shtml">CBitmapDialog</a> . If so, I think you only have to change m_HollowBrush creation code, which in the orignal code is
m_HollowBrush.CreateStockObject(HOLLOW_BRUSH) to something like
m_bkbrush.CreateSolidBrush(RGB(255,0,0));
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
Does anyone know where i can find an XML parser, so that I can store settings in an XML file instead of an ini file?
==================================================
When Your Mind Wonders...Where Does It Go???
|
|
|
|
|
Is there a reason you wouldn't just use the Microsoft XML Parser, 3.0 (SP2) or 4.0?
|
|
|
|
|
Well, if he hates COM he can use Xerces, but MSXML is MUCH faster.
I vote pro drink
|
|
|
|
|
I didnt notice there was MSXML in the sp, i havent exploreed it much. Ill have ago using it.
=======================================================================
When Your Mind Wonders....Where Does It Go???
|
|
|
|
|
Hello!
Help me.
How I can write Add-In for Visual C, witch catch all action of manager Visual Studio (e.c. ClassView - "add New class", "add method/property", ...).
***
and where I can read about add-in for visual studio
|
|
|
|
|
I have two object which i want treated the same.
A parent object is going to have a pointer member varible, which will either point to one of the objects or the other. I intended on achieving this by creating a header which defined a virtual interface from which the 2 objects inherit. Allowing the parent object to call standard member function present in both.
My problem is that one function present in both the child objects required different parameters.
How can i achieve this?
Cheers
Rich
|
|
|
|
|
Short answer is "cannot be done". if the functions accept different parameters, then they are not the same function, and you just cannot call them from the same virtual interface function.
However, there's probably a solution to your particular problem, but more info would be needed. Could you please ellaborate on which arguments are required in either case? How will the parent class determine which parameters to use, as it does not know the actual type of its member variable pointer beforehand?
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
Basically i wanted the parent class to be totally unaware of which child object was been used to achieve my task.
Seemed achieveable apart usingpure vritual interfaces apart from one parameter, it's a pointer to a 2d array in one of the object and a pointer to a string in another.
Guess my two option are:
* Use a void* and cast appropiately in each of the objects.
* Use an intermedia object which combines the two child objects.
Any other ideas? Think i am going to have to get my old uni notes out!
Thanks Again
Rich
|
|
|
|
|
* Use a void* and cast appropiately in each of the objects.
This is a no-no in OOP.
* Use an intermedia object which combines the two child objects.
Maybe, but I don't have a clear idea of your general scenario to be able to ellaborate mor on this approach. The basic question here is (IMHO): How does the parent object obtain the argument to its (of unknown type) child object? Depending on the various agents involved in the argument-passing thing, one of several design patterns can be applied.
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
Is there a way to enumerate through the list of available comm ports in the same way as you can enumerate through the list of printers?
Systems AXIS Ltd - Software for Business ...
|
|
|
|
|
Look for PJ Plaugher's library on this site. There is a function in there that will do this. There is a link to it in the left-hand column.
|
|
|
|
|
|
I'm currently having problems with inserting/displaying large amounts of items in a treectrl under XP. It seems that there is a limit on the amount of manageable subitems.
When adding more than 65.000 elements under one node (yes, i know thats too much to be useful for the user), the tree starts to behave strange: items disapear, nodes disapear, focus disapears, the scrollbar is not in sync with the content, etc.
All this under XP build 2600.
If you want to try, just create a simple dialog based application with a treectrl and add the following code into the OnInitDialog() function:
<br />
HWND hTree = ...your handle here;<br />
TCHAR buf1[64];<br />
TCHAR buf2[64];<br />
<br />
TVINSERTSTRUCT is;<br />
is.hParent = TVI_ROOT;<br />
is.hInsertAfter = TVI_ROOT;<br />
is.itemex.mask = TVIF_TEXT;<br />
is.itemex.pszText = _T("Root");<br />
<br />
HTREEITEM hItem = TreeView_InsertItem(hTree, &is);<br />
<br />
is.hParent = hItem;<br />
is.hInsertAfter = TVI_LAST;<br />
<br />
for(int i = 0; i < 5; ++i)<br />
{<br />
sprintf(buf1, _T("SubItem %05i"), i);<br />
is.itemex.pszText = &buf1[0];<br />
<br />
HTREEITEM hSubItem = TreeView_InsertItem(hTree, &is);<br />
TVINSERTSTRUCT is2 = is;<br />
<br />
is.hParent = hSubItem;<br />
is.itemex.pszText = &buf2[0];<br />
for(int n = 0; n < 1024*65; ++n)<br />
{<br />
sprintf(buf2, _T("Item %03i/%06i"), i, n);<br />
TreeView_InsertItem(hTree, &is2);<br />
}<br />
}<br />
And there is no difference between using CTreeCtrl::InsertItem or the SDK macro.
cheers
Andreas
|
|
|
|
|
Here's an interesting problem (I think)...
Our software uses a bunch (tens of thousands) of "slice" objects - each about 10k. Up until this morning, we were allocating them when we load the data file, and deallocating in the DeleteContents(). This causes a serious performance hit - it has been found that the allocation takes over 60% of the load time.
So I figured I'd just throw in a simple cache. I'd allocate a ton of slices up front, and just dish them out when I needed them. Did that, and now slice acquistion at load time is negligable.
The trouble is, I allocate slices in 10000 object chunks - that is, when the cache is exhausted, I run a for-loop 10000 times allocating a new slice each time. For some of our data files, this happens 4 or 5 times each load. I know this is inefficient, so I added another structure in the cache. When I need a new block, I allocate a 10000 * sizeof(slice) chunk, and handle the internal pointers myself.
No problem, right? In theory, this should speed up my load and access and whatnot a whole bunch... if it would just stop crashing.
Turns out, sizeof(object) just gives the size of the data members inside said object. My slice implements a custom interface full of pure virtual methods. sizeof() doesn't take into consideration the vtable and whatnot at the start of the class...
So my question is this: is there some way to determine (programmatically or through the compiler) exactly how large my object is so I can allocate a chunk of blank memory and manage my objects myself? Or should I just revert to the for loop?
Thanks.
J
|
|
|
|
|
sizeof(object) returns the size of the entire object, vtable pointers and all, so your problem should be elsewhere.
If you allow me to do a little of self-publicity, maybe you can give it a try to a block allocator for STL containers I wrote and posted here at CodeProject.
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
I appreciate the correction regarding sizeof() - it means I'm on the right track. I had a look at your allocator, and that's exactly what I'm trying to do, more or less. I think I'd like to try to correct my code before trying your allocator - no offence intended, I like to understand the problem and the solution before I cut and paste.
Having read through your article and your code, I have a feeling my problem is just a casting issue. Here is a small chunk of the code (error checking removed):
class ISlice {
virtual void Something() = 0;
};
class CDataSlice : public ISlice {
...
};
// blocks
std::list<byte *> CDataSliceCache::m_listBlocks;
// free/unused slices
std::list<CDataSlice *> CDataSliceCache::m_listFree;
void CDataSliceCache::AddBlock() {
byte *pBase;
CDataSlice *pSlice;
// allocate and store the block
pBase = new byte[m_nBlockSize * sizeof(CDataSlice)];
m_listBlocks.push_back(pBase);
// add internal pointers to free slice list
for(int i = 0; i < m_nBlockSize; i++) {
pSlice = reinterpret_cast<CDataSlice *>(&pBase[i * sizeof(CDataSlice)]);
m_listFree.push_back(pSlice);
}
}
Does that reinterpret_cast<> look like it will work? If so, maybe my trouble is elsewhere...
Thanks for the input.
J
|
|
|
|