|
Yes, I designed the dialog, so I have the source files. I will look into CFormView, but how will this attach to the Child Form?
|
|
|
|
|
Hi, all
I got 14 warning look like this: anybody know what caused them? thanks!
Linking with coreLibraryAfxD
c:\program files\microsoft visual studio\vc98\include\xtree(199) : warning C4503: 'rbegin' : decorated name length exceeded, name was truncated
c:\program files\microsoft visual studio\vc98\include\map(46) : see reference to class template instantiation 'std::_Tree<class std::basic_string<char,struct="" std::char_traits<char="">,class std::allocator<char> >,struct std::pair<class std::bas
ic_string<char,struct="" std::char_traits<char="">,class std::allocator<char> > const ,class std::list<class std::basic_string<char,struct="" std::char_traits<char="">,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct="" std::ch
ar_traits<char="">,class std::allocator<char> > > > >,struct std::map<class std::basic_string<char,struct="" std::char_traits<char="">,class std::allocator<char> >,class std::list<class std::basic_string<char,struct="" std::char_traits<char="">,class std::allocato
r<char> >,class std::allocator<class std::basic_string<char,struct="" std::char_traits<char="">,class std::allocator<char> > > >,struct std::less<class std::basic_string<char,struct="" std::char_traits<char="">,class std::allocator<char> > >,class std::allocato
r<class std::list<class="" std::basic_string<char,struct="" std::char_traits<char="">,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct="" std::char_traits<char="">,class std::allocator<char> > > > > >::_Kfn,struct std::less<cla
ss std::basic_string<char,struct="" std::char_traits<char="">,class std::allocator<char> > >,class std::allocator<class std::list<class="" std::basic_string<char,struct="" std::char_traits<char="">,class std::allocator<char> >,class std::allocator<class std::basic
_string<char,struct="" std::char_traits<char="">,class std::allocator<char> > > > > >' being compiled
c:\dev\c++\billing\taxreport\abscommbuffer.h(113) : see reference to class template instantiation 'std::map<class std::basic_string<char,struct="" std::char_traits<char="">,class std::allocator<char> >,class std::list<class std::basic_string<char,
struct="" std::char_traits<char="">,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct="" std::char_traits<char="">,class std::allocator<char> > > >,struct std::less<class std::basic_string<char,struct="" std::char_traits<char="">,c
lass std::allocator<char> > >,class std::allocator<class std::list<class="" std::basic_string<char,struct="" std::char_traits<char="">,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct="" std::char_traits<char="">,class std::all
ocator<char> > > > > >' being compiled
c:\program files\microsoft visual studio\vc98\include\xtree(201) : warning C4503: 'rbegin' : decorated name length exceeded, name was truncated
|
|
|
|
|
|
probably u may forgot to add the required namespace check it
|
|
|
|
|
This has got to be so obvious I cannot see it. Consider a sample code snippet:
.
.
.
CMyDialog myDlg(currentWindow);
myDlg.doModal();
.
.
.
Okay, if I have current window, how do I determine the immediate child that it is managing? If I had myDlg, I'd just say GetParent or some such call..... there has to be a direct hook. I've tried the GetWindow calls, but I'm iterating all over the place, and I don't want to do that, I just want the one immediate child. I know it is there.
frustrated
C. Gilley
Will program for food...
My son's PDA is an M249 SAW.
|
|
|
|
|
Will the EnumChildWindows function work for you? Perhaps the order the window handles are returned will be the z order and you can take the first?
|
|
|
|
|
I thought about going that route and promptly started deleting sibling windows rather than the children. What I did was use GetWindow, but this marched through top level windows. It seems absurd to me that that I simply reference the parent of a window but not the immediate child.
C. Gilley
Will program for food...
My son's PDA is an M249 SAW.
|
|
|
|
|
You could add a WM_USER function to the dialog code so that it can respond with its own handle. Then just post a broadcast message to get the handle from your window.
|
|
|
|
|
Okay, another good suggestion which leads me to believe that there is no direct access to what should be already there?
C. Gilley
Will program for food...
My son's PDA is an M249 SAW.
|
|
|
|
|
If the window was created by the parent why would you not have its handle?
|
|
|
|
|
An excellent question! In this case, I have a stack of dialogs:
Frame -> A
A -> B
B -> C and so on.
The frame window knows about A but not about B (in the pure sense of the discussion). If I want to be able to walk down the tree, I would think I go do so in a fashion as in using GetParent(). Having said all that, I know there are workarounds, and you have provided a good one. My question was more of a rant than anything else (being honest here).
For example, I could have each dialog save it's immediate child, and walk it in an application fashion. Just seems redundant to me.
C. Gilley
Will program for food...
My son's PDA is an M249 SAW.
|
|
|
|
|
|
sigh - 4th time I've tried to reply....
You would think that it would, but the GetWindow does not distinguish (in my limited testing) between windows, it just gets one that matches it's criteria. So I found myself grabbing windows on the dialog that had nothing to do with the entire sub-dialog I just created....
C. Gilley
Will program for food...
My son's PDA is an M249 SAW.
|
|
|
|
|
Not sure this will be entirely helpful given the circumstance.
http://support.microsoft.com/default.aspx?scid=kb;en-us;131994[^]
However, if the Frame knows of 'A' the you could have Frame tell A to close its child 'B', before 'B' closes it could close any childs it has so on and so forth.
If you want to close the top most window, have you tried CWnd::GetActiveWindow?
DEBUGGING : Removing the needles from the haystack.
|
|
|
|
|
Hi,
Is long double ANSI-stand legal data type? I thought short and long only apply to int?
On VS.Net /w WinXP, the sizeof(long double) returns 8,
on GCC4 /w FC4 Linux, the sizeof(long double) returns 12,
on GCC4 /w MacOS X (G4), the sizeof(long double) returns 16.
Why would every different OS return different values?
Thanks
|
|
|
|
|
I believe the standard sets MINIMUM sizes for types. For example, in VC6 at least int and long were the same thing, both were the minimum acceptable size for a long.
I don't know if long double is standard or not, but that's the answer to your other question, anyhow.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
|
I've read the discussion, but I still don't understand why would different OS produces different result.
For example, both my intel-P4-based PC and PowerPC-based MacOS X run GCC 4, and the result on the Linux is 12 and MacOS X is 16. Both are 32-bit processors and 32-bit OS (Macs uses the G4, not G5).
|
|
|
|
|
i need to "scan" some sites and to get some text out of the html code
my question is what is the best and the fastest way to do it
i tried to us wininet but it very slow
and i need that the scan will work fast
what can i do?
|
|
|
|
|
i used CHtmlView class, as i had to display
some site ,where i use to search the code
for small data ,
But cant say it will be faster ......
U can get the TCP/IP packet & get the
data from the packet .
Vikas Amin
Embin Technology
Bombay
vikas.amin@embin.com
|
|
|
|
|
morning,
this app runs fine on debug mode, but got access violation at the exiting dialog in release, I checked the thread, it was trying to close [CCallsmDbf::~CCallsmDbf]....here is part of the code that causing problem, but I am not sure what need to be fixed, thanks!
CCallsmDbf::CCallsmDbf(char *dbfname, int exclusive)
: CB_DBF_NTX(dbfname, exclusive)
{
if (validDBF())
{
ptrIdxName = m_csIdxFile.GetBuffer( L_tmpnam + 1 );
GetTempFileName( ".", "callsm", 0, ptrIdxName );
index_on( ptrIdxName, "ANI" );
m_csIdxFile.ReleaseBuffer();
top();
BindFieldOrdinals();
}
}
CCallsmDbf::~CCallsmDbf()
{
}
in header file,
protected:
CString m_csIdxFile;
char* ptrIdxName;
|
|
|
|
|
Hi,
ptrIdxName = m_csIdxFile.GetBuffer( L_tmpnam + 1 );
This line looks dangerous! L_tmpnam may not be initialized.
which would assign an unpredictable amount of mem. in release mode.
The memory pointed to by ptrIdxName might easily be corrupted by the
"GetTempFileName" call on the next line... the problem might only manifest itself when the class destructor deallocates the memory at object destruction time.
Why not try a simpler way of doing this instead of GetBuffer/ReleaseBuffer like...
TCHAR filename[MAX_PATH];
GetTempFileName( ,,, filename );
m_csIdxFile = filename;
Cheers,
Dave
|
|
|
|
|
But it's still crashes at the same spot.
when the access violation message show up, there were two threads [CCallsmDbf::~CCallsmDbf] and [CDialog::EndDialog], I gess the problem could be at the CDialog as well....
and it's not crash every single time of on release mode, every now and then it works......
thanks for your time!
|
|
|
|
|
Problem could be still suggested by Dave. I think one or more extra bits are accessed somewhere.
Try to keep track of character pointer used.
use strcpy() wherever needed, and with care
|
|
|
|
|
thanks for your info, here is another function that from same file, somehow, it's done deifferently.....
CFavNatDbf::CFavNatDbf(int exclusive)
: CB_DBF_NTX("DATA\\FAVNAT.DBF", exclusive)
{
if (validDBF())
{
char* ptrIdxName = m_csIdxFile.GetBuffer( L_tmpnam + 1 );
GetTempFileName( ".", "favnat", 0, ptrIdxName );
_strupr( ptrIdxName );
memmove( ptrIdxName, ptrIdxName + 2, strlen( ptrIdxName ) - 2 );
*strstr( ptrIdxName, ".TMP" ) = '\0';
index_on( ptrIdxName, "CUST_NUM + LOCATION" );
m_csIdxFile.ReleaseBuffer();
top();
BindFieldOrdinals();
}
}
CFavNatDbf::~CFavNatDbf()
{
}
void CFavNatDbf::BindFieldOrdinals()
{
}
|
|
|
|
|