|
The 0513C1302602010004065075626C6963A0190201000201000201003003300C06082B060102010105000500 are hex.
The website which I gave is only supported character.
|
|
|
|
|
I have created a View in CView and displayed it in a
child window , now i want to print the data in the view .
So i used the OnFilePrint(); function but i get very
small size of fonts on the print.
I get the satandard Print Dialog & also succesfull printout but
1) How to set the page size for printing .
2) How to set the print dialog parameters.
3) How to add a Page Break .
Thank you
Vikas Amin
Embin Technology
Bombay
vikas.amin@embin.com
|
|
|
|
|
Hi --
I find getline() function to be extremely slow when reading data from a text file. I tried replacing getline with a homemade function called getChunk (shown below) but it's just as slow.
getChunk(std::istream &in, std::string &s, const char terminator)
{
s.erase(s.begin(),s.end()) ;
s.reserve(10) ;
std::string::value_type ch ;
while (in.get(ch) && ch != terminator)
s.insert(s.end(),ch) ;
}
For context, here's the core of my program:
rawData.reserve(numberRecords) ;
int counter=0 ;
do
{
counter=counter+1 ;
std::vector <std::string> record ;
record.reserve(numberVars) ;
for(int i=0; i<numbervars-1; i++)
="" {
="" getchunk(*data,value,',')="" ;
="" std::getline(*data,value,',')="" record.push_back(value)="" }
="" getchunk(*data,value,'\n')="" std::getline(*data,value)="" rawdata.push_back(record)="" ;=""
="" std::vector="" <="" std::string="">::iterator j ;
j=record.begin() ;
record.erase(j, j+numberVars) ; } while (counter < numberRecords) ;
numberRecords=rawData.size() ;
Can anyone help me out here?
Thanks,
Kim Larsen
|
|
|
|
|
webHamlet wrote: while (in.get(ch) && ch != terminator)
it seems u r reading the data one byte at a time, which would slow down the process anyways.
if i were u, i wud've read a large chunk(5-10kb maybe) of data from the file into memory buffer and then read and interpret text data from it.
"Do first things first, and second things not at all."
— Peter Drucker.
|
|
|
|
|
Thanks..
How do I do this? Could I use the read() function, or is there a way to make getline grab larger chunks?
Kim
|
|
|
|
|
Are you sure that it's the file I/O that's the problem?
Maybe you (for testing purposes) should isolate the file reading from the storing of the data. And the compare file read times?
|
|
|
|
|
Hi --
Thanks..
I'm 100% sure it's getline.
Kim
|
|
|
|
|
Hi.
You could try to read the file using the old f-functions, like fopen, fgets, fclose.
Read the data to a char[], and then assign it to the string.
It might help.
Principle:
char buffer[300];
FILE * file = fopen("filename", "rt");
if(file != NULL) {
while(fgets(buffer, 300, file) != NULL) {
string = buffer;
..... Save it here
}
fclose(file);
}
|
|
|
|
|
Hi,
I am writing a DLL in VC++, which needs to send and receive messsages using sockets.
Everything goes until I create the Socket using the Object of the CAsyncSocket derived class.
The error message it gives me is this :
error2248 : Cannot access public member 'Create' of CAsync Socket
I've checked the MSDN Error Code. But all I get is that it needs to keep the same state.
Please reply as soon as possible.
|
|
|
|
|
Show your code section,please
You are the best!Me too!
|
|
|
|
|
That problem has been solved. I was not deriving CAsyncSocket class as public(goofed up).
But still I have a problem. I want to use the socket in an Extension Dll, that is used by the SNMP Service. Yes, I am developing an SNMP Agent. I want to use sockets to send/recieve data, for which I need the services of a socket.
#include "Connector.h" // The file that comprises of the CAsyncSocket derived class
Connector Cn;
// Entry Point for the DLL
BOOL APIENTRY DllMain(...)
..
{
WSADATA wsaData;
long Events = FD_READ | FD_WRITE | FD_CONNECT | FD_CLOSE | FD_ACCEPT;
WSAStartup(MAKEWORD(1,1),&wsaData);
AfxSocketInit();
switch(ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
/* The problem lies here. If I don't use this line tha Agent will send traps correctly. But when I create this socket nothing happens. The Agent does not send traps *1
Cn.Create(128,SOCK_DGRAM,Events,"127.0.0.1");
break;
I dont seem to know what is the problem.
Please Reply as soon as possible as I am working on a project.
Thanks
|
|
|
|
|
You can read follow samples,maybe you can find a solution from them:
http://www.codeproject.com/internet/SNMP_Agent_DLL__Part1_.asp
http://www.codeproject.com/internet/SNMP_Agent_DLL__Part2_.asp
http://www.codeproject.com/internet/mdftpclient1.asp
http://www.codeproject.com/internet/LymingtonPGO.asp
1.You can create class object in your services.
2.In your services,you initialize CSocket,maybe it is useful.
You are the best!Me too!
|
|
|
|
|
Hello!
I cannot solve two problems with my Rich Edit control (that I use in a dialog form):
1. How can I make it accept Tab keys. When I press the Tab key now my Rich Edit just looses focus instead of printing '\t'.
2. When I select some text with images or other OLE objects in some application, copy it and than paste in my Rich Edit, all the copied object (text, images, ole) appears in it. But I need to paste only text. I know of CRichEditCtrl::PasteSpecial(CF_TEXT) but don't know where to use it.
Thank you in advance.
|
|
|
|
|
Reunion wrote: 1. How can I make it accept Tab keys. When I press the Tab key now my Rich Edit just looses focus instead of printing '\t'.
Just a guess, but what does ctrl+tab do?
Reunion wrote: I know of CRichEditCtrl::PasteSpecial(CF_TEXT) but don't know where to use it.
Use it at the point in which you wish to add text to the clipboard.
"Take only what you need and leave the land as you found it." - Native American Proverb
|
|
|
|
|
Ctrl+tab does what I need, but how can I do the same with just tab?
|
|
|
|
|
Try subclassing the control. Then add a handler for the WM_GETDLGCODE message, and return DLGC_WANTTAB from it.
"Take only what you need and leave the land as you found it." - Native American Proverb
|
|
|
|
|
I'll try today. And what about PasteSpecial?
|
|
|
|
|
Reunion wrote: And what about PasteSpecial?
What about it?
"Take only what you need and leave the land as you found it." - Native American Proverb
|
|
|
|
|
First let me thank you for answering my question about tabs. Processing of WM_GETDLGCODE really helped. Thank you!
Well, one more thing I want to do is to control the data that a user pastes to the control (Rich Edit): I want only text to be pasted in the control (even if in clipboard there is other data with text - just like Notepad does it). I know that there is PasteSpecial function that can be called with CF_TEXT parameter. But where to call to control all the pasteing text?
|
|
|
|
|
Reunion wrote: I know that there is PasteSpecial function...
This method actually does the pasting from withing your code. It has no control over what the user might try to paste into it. If you are only interested in text, why not just use a regular edit control?
"Take only what you need and leave the land as you found it." - Native American Proverb
|
|
|
|
|
Because I need to make text colorizing. But it must be text, not tables or images or something else. I know for sure that there is a way to control the "cut-copy-paste" process... But how? MSDN says that PasteSpecial will help, but where to call it? I tried to catch WM_PASTE but my class, derived from CRichEditCtrl, can't catch it. Why???
|
|
|
|
|
In your derived class, add the following:
void CMyRichEditCtrl::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
bool bPasted = false;
if (toupper(nChar) == 'V' && GetAsyncKeyState(VK_CONTROL))
{
if (IsClipboardFormatAvailable(CF_TEXT))
{
if (OpenClipboard() != FALSE)
{
HANDLE h = GetClipboardData(CF_TEXT);
if (h != NULL)
{
LPTSTR lptstr = (LPTSTR) GlobalLock(h);
if (lptstr != NULL)
{
SetWindowText(lptstr);
GlobalUnlock(lptstr);
bPasted = true;
}
}
CloseClipboard();
}
}
}
if (! bPasted)
CRichEditCtrl::OnKeyDown(nChar, nRepCnt, nFlags);
}
"Take only what you need and leave the land as you found it." - Native American Proverb
|
|
|
|
|
Very well done! Thank you! There is only one thing that should be added to
if (toupper(nChar) == 'V' && GetAsyncKeyState(VK_CONTROL))
- its checking for SHIFT-INS combination.
Thank you very much!
|
|
|
|
|
Reunion wrote: There is only one thing that should be added...its checking for SHIFT-INS combination.
Correct. Not once have I ever used that combination to insert text.
"Take only what you need and leave the land as you found it." - Native American Proverb
|
|
|
|
|
One more and final: in your case the new text replaces the whole text in the control. So it's better to use ReplaceSel function instead of SetWindowText. Now everything is correct. Here is the final code:
<br />
void CRichEditCtrlEx::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)<br />
{<br />
bool bPasted = false;<br />
if((toupper(nChar) == 'V' && GetAsyncKeyState(VK_CONTROL)) || (nChar == VK_INSERT && GetAsyncKeyState(VK_SHIFT)))<br />
if(IsClipboardFormatAvailable(CF_TEXT))<br />
if(OpenClipboard() != FALSE){<br />
HANDLE h = GetClipboardData(CF_TEXT);<br />
if(h != NULL){<br />
LPTSTR lptstr = (LPTSTR)GlobalLock(h);<br />
if(lptstr != NULL){<br />
ReplaceSel(lptstr);<br />
GlobalUnlock(lptstr);<br />
bPasted = true;<br />
}<br />
}<br />
CloseClipboard();<br />
}<br />
if(!bPasted)<br />
CRichEditCtrl::OnKeyDown(nChar, nRepCnt, nFlags);<br />
}<br />
Thank you once more!
|
|
|
|