|
hello ranjani
In modular programming like C++ and VC++ the control o fprogram passes from one area to another based on certain conditions . usually u do it with goto function in C but here in OOPS the control transfers from one line to another by message ids . ie when the user clicks on a menu a message like WM_COMMAND(menuitem , handler) -- here the first param in the WM_COMMAND is the menu item which the user clicked and the second item is the function name which will be fired once the message is fired . So U write whatever u want to do in the menu item here inside the handler that way the control of program gets transferred to the handler function . also other type of messages are also there like
system messages like WM_CLOSE , ON_FILE_OPEN like that but the handlers r already written for them . another type is POST_THREAD_MESSAGE ( MESSAGE) here the message can be posted by any object of a Class CWinThread and the handler function can be written for this mesasge also as mentioned above . hope u will find more info from msdn ( clumsy huh??) dharanibabus@hotmail.com
|
|
|
|
|
Hi there,
I need to select multiple files in an openfiledialog in MFC, but I use this:
CFileDialog *cfd=new CFileDialog, true, ...., NULL, OFN_FILEMUSTEXIST | OFN_ALLOWMULTISELECT, .... , NULL)<br />
<br />
CString x;<br />
cfd->DoModal();<br />
x=cfd->GetPathName();<br />
How can I convert this code to get more then one file???
|
|
|
|
|
Hi student
To allow the user to select multiple files, set the OFN_ALLOWMULTISELECT flag before calling DoModal. You need to supply your own filename buffer to accommodate the returned list of multiple filenames. Do this by replacing m_ofn.lpstrFile with a pointer to a buffer you have allocated, after constructing the CFileDialog, but before calling DoModal. Additionally, you must set m_ofn.nMaxFile with the number of characters in the buffer pointed to by m_ofn.lpstrFile.
Vitali
|
|
|
|
|
Talik wrote:
Do this by replacing m_ofn.lpstrFile with a pointer to a buffer you have allocated, after constructing the CFileDialog, but before calling DoModal. Additionally, you must set m_ofn.nMaxFile with the number of characters in the buffer pointed to by m_ofn.lpstrFile.
I don't understand this part (I've read it to in the MSDN); that's why I put it on CP. Can you give me some code, jsut for initializing the buffer, and filling it with those files?
|
|
|
|
|
Dear BoudewijnEctor,
Look at the following link with full src code and sample:
http://www.codeproject.com/dialog/PJA_MultiSelect.asp
Vitali
|
|
|
|
|
|
Try these two previous discussions:
http://www.codeproject.com/script/comments/forums.asp?msg=574273&forumid=1647&mode=all&userid=52727#xx573787xx
http://www.codeproject.com/script/comments/forums.asp?msg=574178&forumid=1647&mode=all&userid=52727#xx573924xx
|
|
|
|
|
Hi,I am a beginner in MFC of VisualC++.now i have a problem to be solved.
Somebody can help me?
I want to draw some text in CEditView via DrawText function,but it display nothing on CEditView.
some code below:
void CTPlatformView::OnDraw(CDC* pDC)
{
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CRect rect;
GetClientRect(&rect);
pDC->DrawText("hello",&rect,DT_LEFT);
}
Thanks!!
|
|
|
|
|
Hi,
Look what MSDN say about:
==
virtual int DrawText( LPCTSTR lpszString, int nCount, LPRECT lpRect, UINT nFormat );
...
This member function uses the device context’s selected font, text color, and background color to draw the text. Unless the DT_NOCLIP format is used, DrawText clips the text so that the text does not appear outside the given rectangle. All formatting is assumed to have multiple lines unless the DT_SINGLELINE format is given.
If the selected font is too large for the specified rectangle, the DrawText member function does not attempt to substitute a smaller font.
If the DT_CALCRECT flag is specified, the rectangle specified by lpRect will be updated to reflect the width and height needed to draw the text.
==
Hope, now youself can do checks and find answer.
Vitali
|
|
|
|
|
Thank you Vitali!
if i let CMyView to derive from CView,it can directly display "hello".but it cann't if derived from CEditView.
why?
|
|
|
|
|
Check under debugger what values have settings pointed above
in the first and second variants.
hope it will help.
Vitali
|
|
|
|
|
I think you should use the GetEditCtrl () method to acces the CEdit object associated with the CEditView . Then write text in the CEditView just like you were using CEdit .
Best regards,
Alexandru Savescu
P.S. Interested in art? Visit this!
|
|
|
|
|
OnDraw() doesn't get called for a class derived from CCtrlView , such as CEditView . You have to do it in OnPaint() .
Hope this helps,
Ryan "Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late" John Nichol "Point Of Impact"
|
|
|
|
|
Hi,Ryan Binns and all of you
Thank you very much! I've solved it via OnPaint() function.
|
|
|
|
|
Hi,
I've created a directory selection dialog (thanks to some people here at CP), but I thought it's nice to have some of creating a folder from this dialog. I you can't, you have to creat one yourslef, using explorer. I know how to create a folder in MFC, but you can use that function from the dialog!
Help me please,
|
|
|
|
|
Why can't you create a folder? What is happening?
Who is 'General Failure'? And why is he reading my harddisk?!?
|
|
|
|
|
No,
I just need to get a button (called new directorie, or something) to create a new directory, without having to rewrite this diialog.
So, do you know wether there is some kind of flag to enable this sort of feature?
|
|
|
|
|
What dialog are you using?
A standard one or a homegrown dialog?
Who is 'General Failure'? And why is he reading my harddisk?!?
|
|
|
|
|
Here's my code, it's very standard (got parts of it from people at CP )
BROWSEINFO* b=new BROWSEINFO(); <br />
LPTSTR buf=new TCHAR[MAX_PATH]; <br />
<br />
int image=-1; <br />
b->hwndOwner=this->m_hWnd; <br />
b->iImage=image; <br />
b->lpszTitle="Please select a directory for your input:"; <br />
b->pidlRoot=NULL; <br />
b->pszDisplayName=buf; <br />
b->ulFlags=BIF_BROWSEINCLUDEFILES; <br />
<br />
LPITEMIDLIST x=SHBrowseForFolder(b); <br />
if(x==NULL)<br />
{<br />
return;<br />
}<br />
<br />
<br />
LPTSTR buf2=new TCHAR[MAX_PATH]; <br />
<br />
<br />
bool gelukt=SHGetPathFromIDList(x,buf2);<br />
<br />
<br />
CString pad=buf2;<br />
<br />
if(!gelukt)<br />
{<br />
error_scherm e;<br />
e.set_text("It seems that the directory you've selected is corrupt, if this problem persists please contact the developer.");<br />
e.DoModal();<br />
return;<br />
}<br />
<br />
delete [] buf;
delete [] buf2;<br />
|
|
|
|
|
You need to include the style BIF_NEWDIALOGSTYLE with your SHBrowseForFolder.
simply AND it into the ulFlags :
b->ulFlags=BIF_BROWSEINCLUDEFILES & BIF_NEWDIALOGSTYLE;
You then get a slightly different dlg, but that is newer one.
Who is 'General Failure'? And why is he reading my harddisk?!?
|
|
|
|
|
Thanks, but this isn't working (altough i'm using win2k and the newest IDE (.NET 2003)), is there some other way to do this?
|
|
|
|
|
You can try this[^] article.
Or this[^] one.
Sorry, I do not have much time to help you today, but with reading MSDN, code examples from the links I gave and own experiments you should be able to force the 'New Dir' button on the folder open dlg.
Who is 'General Failure'? And why is he reading my harddisk?!?
|
|
|
|
|
I am writing a network program using winsocket. i use udp protocol.
my question is:
when client send the username and password to server and wait for server reply, how can i deal with time out?
could anyone give me some idea??
thanks.
|
|
|
|
|
Hi,
UPD protocol can't establish chenell and does not guarantee server rceiving of packages, therefore you can just use any predefined "time delay".
(server response time).
Vitali
|
|
|
|
|
thank you
but how can i use predfined "time delay"?
can you plz tell me more?
|
|
|
|