|
Is there a known bug with CString's find. I read a file into a CString and then used CString::find to locate some escape characters (MyText.Find("\n", start_loc) ). I tried the version without the starting location and it seems to work fine. However, the version with the starting loction returns a negative one. Is there a problem with the member function or am I just using it wrong??
|
|
|
|
|
Be careful of how you use the second parameter, the starting location. MSDN defines this as
nStart
The index of the character in the string to begin the search with, or 0 to start from the beginning. The character at nStart is excluded from the search if nStart is not equal to 0.
This implies that for a string value of :
<br />
CString strValue("0123456");<br />
int nPos = strValue.Find('3',3);<br />
..This will fail to find the '3', as the starting location is excluded from the search (apart from location zero.
I Dream of Absolute Zero
|
|
|
|
|
LINK : fatal error LNK1181: cannot open input file "fltk.lib"
I alredi included this file in the "include file " but still got this error
help me thx a lot
|
|
|
|
|
This linker error means that the linker is unable to open the designated file. The most common cause is that it cannot find the file.
You don't use #include with library files. If you need to link against a library, you add this library to the 'Additional dependecies' option of your project settings (Found in Project Settings->Linker). Then make sure that the library exists in one of the paths specified for the Visual Studio environment. If it doesn't, you need to copy it to any one directory specified there or add a new directory to the list.
-Antti Keskinen
----------------------------------------------
The definition of impossible is strictly dependant
on what we think is possible.
|
|
|
|
|
Hi there!
This is my first time here, so please be kind if I do something wrong
I've got a tree ctrl with a customized background, and nearly everything works fine.
let me show you a pic of what i intend to do:
http://www.msuling.de/pics/whatiwant.gif[^]
I have nearly everything done, let me show you what I've got:
http://www.msuling.de/pics/whatigot_1.gif[^]
or
http://www.msuling.de/pics/whatigot_2.gif[^]
I have no clue how to make the lines and the boxes visible WITH a colored background.
If anyone outthere has an idea, I would be very pleased !
Oh, right, this is the code I use in OnPaint() my MultiColorTree-Class:
void CMultiColorTree::OnPaint()
{
CPaintDC dc(this);
CDC memDC;
memDC.CreateCompatibleDC( &dc );
CRect rcClip, rcClient;
dc.GetClipBox( &rcClip );
GetClientRect(&rcClient);
CBitmap bitmap;
bitmap.CreateCompatibleBitmap( &dc, rcClient.Width(), rcClient.Height() );
memDC.SelectObject( &bitmap );
CRgn rgn;
rgn.CreateRectRgnIndirect( &rcClip );
memDC.SelectClipRgn(&rgn);
rgn.DeleteObject();
CWnd::DefWindowProc( WM_PAINT, (WPARAM)memDC.m_hDC, 0 );
HTREEITEM hItem = GetFirstVisibleItem();
int n = GetVisibleCount()+1;
while( hItem && n--)
{
CRect rect;
UINT selflag = TVIS_DROPHILITED | TVIS_SELECTED;
Color_Font cf;
if ( m_mapColorFont.Lookup( hItem, cf ))
{
{
CFont *pFontDC;
CFont fontDC;
LOGFONT logfont;
if( cf.logfont.lfFaceName[0] != '\0' )
{
logfont = cf.logfont;
}
else
{
CFont *pFont = GetFont();
pFont->GetLogFont( &logfont );
}
if( GetItemBold( hItem ) )
logfont.lfWeight = 700;
fontDC.CreateFontIndirect( &logfont );
pFontDC = memDC.SelectObject( &fontDC );
if( cf.color != (COLORREF)-1 )
memDC.SetTextColor( RGB(0,0,0) );
CString sItem = GetItemText( hItem );
GetItemRect( hItem, &rect, TRUE );
CRect tmpRect;
tmpRect.SetRect(rect.left,rect.top,rect.right,rect.bottom);
CBrush brush;
brush.CreateSolidBrush(cf.color);
memDC.FillRect(&tmpRect,&brush);
memDC.SetBkColor(cf.color);
memDC.TextOut( rect.left+2, rect.top+1, sItem );
memDC.SelectObject( pFontDC );
}
}
hItem = GetNextVisibleItem( hItem );
}
dc.BitBlt( rcClip.left, rcClip.top, rcClip.Width(), rcClip.Height(), &memDC,
rcClip.left, rcClip.top, SRCCOPY );
}
Thank you very much!
greetz
Tiberius
Is there a way to include pictures here?
----------------------------------------------------------
I once had a nightmare in binary --- I think there was a 2
|
|
|
|
|
Hi everyone,
The problem I've got is that I need to open a database (*.mdb, the filename is choosen by the user) and then write rows (recordset?) of data to different tables within the database (the names of the tables will never change, but the tables will not contain any data at the start of the run apart from the field names).
However there are some constraints:
1) I cant use anything to do with JET
2) I can include <afxdb.h> and <afxdao.h> as these cause compilation errors with the main library the software is built on. (the error is to do with GetTickCount, which is MFC even though its not used in the program and no methods exist in our code called GetTickCount!)
not sure if I've made this clear enough.... but if anyone has any suggestions and can provide links to websites which contain non-mfc database code samples.
many thanks
Andy McSherry
|
|
|
|
|
Hi,
Your post does not state clearly what the problem is. However, if you want to use non-mfc based database library, you can try using ADO.
Try:
http://www.developerfusion.com/show/4033/1/[^]
Hope, it helps.
Pankaj
Without struggle, there is no progress
|
|
|
|
|
cheers Pankaj
it looks like the link you gave me has what I need to do! (I did look at ADO before but all the examples talked about JET, which meant I didnt delve too far into it)
many thanks,
Andy
|
|
|
|
|
mcsherry wrote:
I did look at ADO before but all the examples talked about JET, which meant I didnt delve too far into it)
The Microsoft Access Databases uses the JET engine, so you cannot avoid this. You will have to interact with the JET engine to communicate with the database no matter what method you use. Maybe your boss was taking about not using a specific technology (MFC's DAO classes, for example)?
I Dream of Absolute Zero
|
|
|
|
|
2) should read
2)I can't #include <afxdb.h> and <afxdao.h> as these cause compilation errors with the main library the software is built on. (the error is to do with GetTickCount, which is MFC even though its not used in the program and no methods exist in our code called GetTickCount!)
|
|
|
|
|
Sorry, replied above before reading this ammendment.
Those include files are MFC's database classes CDAOXXXX. ADO is definitely the way to go. You can find one or two very good ADO wrapper classes right here in CP to use in your project.
I Dream of Absolute Zero
|
|
|
|
|
About GetTickCount errors, maybe it has to do with the macro GetCurrentTime which is defined as GetTickCount for backward compatibility.
If that's the case, simply undefing the macro will do the job.
|
|
|
|
|
How to disable all ASSERTs in Debug mode?I am using a memory leak tool called as entrek, and the recurring ASSERTs make it difficult to execute the program. (I am getting timecore.cpp asserts every 1 sec as there is one thread which sets the timer every 1 sec, i haven't checked the details as to y these asserts r coming)
This is very urgent. Any help appreciated.
|
|
|
|
|
If you are using some memory leak prog thats great, but if you are getting asserts then your prog is not even ready to pass the first test of "good program" then comes the memory leak test.
I would suggest to find and rectify the problem that is causing the assert.
I Touched Osama Bin Ladens Bushy Beard
|
|
|
|
|
Thnks ,
I have no idea and time to look into the ASSERT problem. Its in timecore.cpp.
I need to send this urgently.
|
|
|
|
|
write in your code:
_CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_DEBUG);
The message will be written to the debugger's output window.
|
|
|
|
|
Hello,
in my VC++ application, I use ODBC dbf files driver to access a file.dbf.
In my code, I open the data the database connection (it works normaly).
Then I do my request : "SELECT Field1,Field2 FROM tab WHERE (Field0 = value)".
Here, I recieve an ODBC error message "Impossible de trouver le fichier memo xBase Demande", in english it can be traduced by "impossible to find the requested xBase memo file" ....
1) what does ODBC want to say with this message ?
2) what is the cause of this message
What is strange : I just open the file dbf with Excel (no modification in file, no save of file, just open to view the content), I restart my VC++ application and the Select returns me some rows ... just as the fact to have the file opened makes it work ...
I tried several times and without Excel, I have the msg, with excell it works ...
Any idea appreciated
DD
|
|
|
|
|
I am using VC++ 6.0. I used the app wizard to create an MFC application without socket support, but later found that socket communications was necessary. I manually added the call to 'AfxInitSocket()' to the application's 'InitInstance()' method. Since doing this the entire CDocument based document class is reported as a memory leak when socket communications takes place. The document class is properly deleted when the socket subsystem is not used.
Did I miss a step when I added the socket support?
|
|
|
|
|
You did correct in initializing the socket routines, so there's nothing initially wrong with adding socket support.
Could the error lie in the way you use the sockets ? Naturally, you could post a bit more information of the way you use them. I haven't noticed any memory leaks in the communications applications I have used, but I also generally just send and receive raw data. Remember that if you send a CDocument-derived object, the receiving end must also be aware of the new object's size. So send the size first, reserve memory for the object, then fill the designated memory area with the data.
Post more details, such as a piece of code from your communication routines, and perhaps we can help you more.
-Antti Keskinen
----------------------------------------------
The definition of impossible is strictly dependant
on what we think is possible.
|
|
|
|
|
I use a CSocket class object for very simple communications. This frees me from attending to synchronization
on the sockets. A CSocketFile object is created and attached and CArchive object for reading and wtiting are
created and attached to the file.
// clear the file/archive pointers
m_pFile = NULL;
m_pArchiveIn = NULL;
m_pArchiveOut = NULL;
// if the socket is created and connected
if (m_Socket.Create() && m_Socket.Connect(m_csServer, (UINT)m_nPort))
{
// build the file
m_pFile = new CSocketFile(&m_Socket);
// and archives for communication
m_pArchiveIn = new CArchive(m_pFile,CArchive::load);
m_pArchiveOut = new CArchive(m_pFile,CArchive::store);
// set the obejct status to ok
m_Status = PCCO_NO_ERROR;
}
There is usually no problem here.
An HTTP POST message is formatted and sent over the socket.
// write the passed message to the socket
// as an http post message
CString csString;
csString.Format("POST /cgi-bin/%s.cgi HTTP/1.1\r\n", csApp);
m_pArchiveOut->WriteString(csString);
m_pArchiveOut->WriteString("Accept: text/html\r\n");
m_pArchiveOut->WriteString("User-Agent: Mozilla/4.0\r\n");
m_pArchiveOut->WriteString("Content-Type: application/x-www-form-urlencoded\r\n");
csString.Format("Host %s:%d\r\n", m_csServer, m_nPort);
m_pArchiveOut->WriteString(csString);
m_pArchiveOut->WriteString("Cache-Control: no-cache\r\n");
csString.Format("Content-Length: %d\r\n\r\n", csMessage.GetLength());
m_pArchiveOut->WriteString(csString);
m_pArchiveOut->WriteString(csMessage);
m_pArchiveOut->Flush();
The response is received in the form of an HTML page, and parsed.
// if we're here we have data
CString csApproval,
csTransID,
csCvv2Resp,
csAccountNo,
csInput; // POST message header inputs
char *pszPage = NULL; // the HTML page response
bool bError = false;
// read the POST header
m_pArchiveIn->ReadString(csInput);
// if there is no problem (code 200)
if (csInput.Find("200") > -1)
{
// read the content length
m_pArchiveIn->ReadString(csInput);
// read the length value from the string
csInput = csInput.Right(csInput.GetLength() - csInput.Find(':') - 1);
// and store as an integer
int nPageLen = atoi(csInput);
// and read the type
m_pArchiveIn->ReadString(csInput);
// read the blank line before the data
m_pArchiveIn->ReadString(csInput);
// get room for the HTML page
// if there is memory for the page
if (pszPage = new char[nPageLen + 1])
// read the HTML page response
m_pArchiveIn->ReadString(pszPage, nPageLen);
.The string pointer 'pszPage' is deleted if allocated. The snippet includes only the socket communications.
Thanks!!!
|
|
|
|
|
There doesn't seem to be any coding issues here, as long as you remembered to clear the archive and CSocketFile objects and call Close on the socket object.
You said that your CDocument-derived object reports a memory leak at this point ? Could it be that you've forgotten something back there ?
Your last chance would be to invest to some memory validator tool and run your code through step-by-step, especially in the point where the memory leak is considered. If nothing else fits the pattern, then this may be also a bug in the VC++ debugger. I've encoutered such a problem once before in my coding, when I created a view without a document object. It reported that the document object was leaking memory even though it was never created.
-Antti Keskinen
----------------------------------------------
The definition of impossible is strictly dependant
on what we think is possible.
|
|
|
|
|
Does any body know the control type that pops up when highlight text and right click. I want to include clipboard functionality into my program and want it to look like standard MS programs.
|
|
|
|
|
hello pals, i'm new guy to this forum. im doing project in VC++ and also new to VC++. interestingly i have to develop a small scripting language using vC++ for performing graphical functions.
that is creating a small graphical package using VC++. consider the user doen't know anything about the syntax for performing graphics using VC++. we are defining a new set of our control with syntax and one looping statements to perform grp.o/p
1. suppose user writes a code for displaying a multicircle on the screen.but he doesn'nt know anything about the VC++ circle ...etc.
but using our script he can perform his job.
ex:
# start
drawcirle 123,233
.
.
.
# end
but our VC++ program should acts as an interpreter to convert our defined scrts to appr..vc++ graphical routines.that is developing a compiler using a VC++ compiler.
pleassse help me to work out my module given by my guide.Atleast suggest me where i have to start and in which part of VC++ i have to concentrate.
First he told me spec it out the project, but i do know what to spec it out.
my module include,
#1. defining a few datatypes,graphical scripts and anyone looping stmt.
2. using (module #1) the programmer writes his code.
3. We have to execute the code by interpreting to VC++ grahical function.
i posted in many forums, but one of my friend gave this site..
with regards,
Mahesh
|
|
|
|
|
If you are trying to build a complete scripting engine, you're in too deep.
I'd suggest that you first attempt to create a simple program that reads text files and draws graphic according to those. When you succeed in this, just implement text-editing and row-manipulation routines to your program and you have precisely what you need.
For a start, first create the specification. Decide what graphic routines you are planning to use: Win32, DirectX, OpenGL or what. Then decide what drawing routines your scripting language supports: can you draw a circle, a rectangle, a triangle or all of these ?
If you resort to Win32, then your task becomes even simpler: just create a parsing function that is able to intepret the scripting language's commands. Then the intepreter calls the appropriate Win32 routine to draw the requested graphic. As the program itself will worry about creating the target window, pencils, brushes etc, then the parser should be quite simple.
For more complex object support, just add a more logic to the parser and make it call several drawing routines if required.
If you are new to Windows-programming, then I suggest purchasing a book by Charles Petzold called Programming Windows. This book is "The Bible" of Windows-programming: it explains every little detail deeply enough for anyone familiar with C/C++ to understand.
If you're out of luck and can't get this book, there are several articles available here at CodeProject. Here is a good place to start looking http://www.codeproject.com/gdi/[^]
-Antti Keskinen
----------------------------------------------
The definition of impossible is strictly dependant
on what we think is possible.
|
|
|
|
|
Dear Developers!
Recently I've been looking for a tool that will do the subj, I've found some links, the software was a bit diffenrent, but it's price was about $699!
Yeah I smiled too That's why I decided to create my own tool.
The main problem is I don't know how to save in SWF(it's Macromedia Flash) format. That's why I'm asking for assist in creating of new and of course *free* tool. Please join.
Thanks a lot. ths@smtp.ru
P.S.: The tool will be a virtual printer driver(it's ready) that will convert
the data you send to print to an swf file. That how you can publish it on your web site without using any soft that costs.
P.S.S: Please don't give me links to a ready to use software. As I've mentioned it will be public, source free stuff!
Thanks again. Bye.
|
|
|
|
|