|
Hello
Thanks for your reply
|
|
|
|
|
I've created a very simple one-button MFC dialog app that attempts to utilize a callback function. The app complies and runs just fine, but the callback routine never gets triggered.
What needs to be modified in order to get the callback to trigger properly?
You can download the test.zip file here (the test app is in VS 2003 to ensure more people can try it out): http://tinyurl.com/testfile-zip
The code utilizes an alarm class posted here on CodeProject, and the callback function in the test app is suppsed to get triggered every 3 seconds (as determined by the code being passed in).
Thanks!
--
Edward Livingston
(aka ExtraLean)
--
"I still maintain that seeing a nipple is far less disturbing than seeing someone get their brains blown out." -- Chris Maunder
|
|
|
|
|
ExtraLean wrote: The code utilizes an alarm class posted here on CodeProject
Why not post a message on that article's message thread?
[edit]Also - you've got the source yourself - break out the debugger and try tracing through the source[/edit]
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
i have some problem like when i communicate between application i need through pipe its happened
and another problem like when i read and write through pipe its not happened properly
can any body help me
|
|
|
|
|
AshNis wrote: can any body help me
If you provide enough information, then maybe. Anyway, with the information (lack of information would be a better word I guess) you provided here, nobody will be help to help you...
|
|
|
|
|
As Cedric said, you've not really given us anything to help you with.
I did a named pipe application (accurately, two applications!) using named pipes, and I just followed the samples on MSDN in the documentation.
Both from MSDN:
Multithreaded Pipe Server[^]
Named Pipe Client[^]
Enjoy!
One problem I had was making a named pipe accessible across the network by any user.
DWORD CNamedPipeServer::ServerThread ()
{
SECURITY_ATTRIBUTES sa;
SECURITY_DESCRIPTOR sd;
if (!InitializeSecurityDescriptor (&sd, SECURITY_DESCRIPTOR_REVISION))
return 0;
SetSecurityDescriptorDacl (&sd, TRUE, NULL, FALSE);
sa.nLength = sizeof (sa);
sa.bInheritHandle = FALSE;
sa.lpSecurityDescriptor = &sd;
BOOL bLog = FALSE;
char pipename [512];
lstrcpy (pipename, "\\\\.\\pipe\\");
lstrcat (pipename, m_PipeName);
m_hPipe = ::CreateNamedPipe (pipename,
PIPE_ACCESS_DUPLEX | FILE_FLAG_WRITE_THROUGH | FILE_FLAG_OVERLAPPED,
PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | PIPE_WAIT,
1, 0, 0, 100000, &sa);
You don't have to use overlapped I/O - but it fitted my application. Just note the sa and sd variables.
Good luck,
Iain.
In the process of moving to Sweden for love (awwww).
If you're in Scandinavia and want an MVP on the payroll (or happy with a remote worker), give me a job!
|
|
|
|
|
Hi All
How can i prevent to enter space in Edit box?
|
|
|
|
|
Check EN_CHANGE notification. Get the string from the edit box and store it if it does not contain space. When the user changes the string by entering a char, take the updated string and check if there is a space. If affirmative, replace the string with the old one that did not have space.
Hope this helps
You need to google first, if you have "It's urgent please" mentioned in your question.
_AnShUmAn_
|
|
|
|
|
hi,I'm sorry i dot not know!
|
|
|
|
|
Either subclass your own edit control and do the filtering there, or be lazy and search and download source for a masked edit control. There are plenty of those around on a website near you.
Edit: Spelling
|
|
|
|
|
can anybody explain how can i read from a file in CString onject using fstream.
CString str
fstream fin
fin.open(^);
fin.read((char *)str.GetBuffer(0),str.GetLength()* sizeof(TCHAR));
fin.close
this code is not working while m able to write the same way in file but not able to read
fin.write((char *)str.GetBuffer(0),str.GetLength()*sizeof(TCHAR));
plz help thank u
|
|
|
|
|
You must specify a proper length .
How many bytes do you want to read?
«_Superman_»
I love work. It gives me something to do between weekends.
|
|
|
|
|
well i cant depict that before as it is a path.and may change in my application. so i dont knw about its length
|
|
|
|
|
You have to specify a length.
That is why that parameter exists in the read function.
I think you should first read it using a normal array. (Without CString).
«_Superman_»
I love work. It gives me something to do between weekends.
|
|
|
|
|
In that case, you should probably read a character at a time, adding them to the CString , until you reach some character that indicates the end of the path.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Two things I see, your read:
fin.read((char *)str.GetBuffer(0),str.GetLength()* sizeof(TCHAR));
str.GetLength() in this case will be 0 since the string is empty, so you're telling the read to get 0 characters!
You most likely know the maximum size you need, in which case you can use something like
fin.read((char *)str.GetBuffer(1024),1024 * sizeof(TCHAR));
You must also call str.ReleaseBuffer(), and if the data you read is not null terminated, you'll need to set the length by using
str.ReleaseBuffer(iBytesRead);
Hope that helps.
Karl - WK5M
PP-ASEL-IA (N43CS)
PGP Key: 0xDB02E193
PGP Key Fingerprint: 8F06 5A2E 2735 892B 821C 871A 0411 94EA DB02 E193
|
|
|
|
|
Hi All,
I am creating one popupdialog from mainwindow. The dialog gets poppedup and iam using one timer function to popup. I am using one edit control in mainwindow . My problem is after getting poppedup the focus on the main window loses and also on the edit control in mainwindow. How to avoid this stealing of focus by a popup dialog??
Regards,
Spk
|
|
|
|
|
When I click a hot key combination (Ctrl+Shift+P) my program do copy some text to the clibboard,
So I can paste it to any window by holding Ctrl+V
Now I like to automate this and be able to do the Ctrl+V programatically,
Lets assume I just want to paste just anything to other windows - so I can get started,
I have tried this, but I guess I'm missing something:
SendMessage(WM_PASTE, 0,0);
also tried:
BroadcastSystemMessage(BSF_POSTMESSAGE | BSF_IGNORECURRENTTASK,
BSM_ALLCOMPONENTS,
WM_PASTE,
(WPARAM)NULL,
(LPARAM)NULL);
I'd like to broadcast a "paste" message (or "Ctrl+V") so I will not have to find the current active window and get its focus,
Any suggestions ?
Best Regards - Yovav Gad
CEO and founder of MicroMighty, Inc.
modified on Thursday, April 2, 2009 11:58 PM
|
|
|
|
|
I tried something similar a few yeras back to aid in filling in forms that required the same data over and over, and as far as I can remember, different applications needed different handling. You have to try sending keystrokes to some, and WM_PASTE to some, and some applications do not even use a window, but a custom made input and cannot be manipulated at all.
Sorry, but to my knowledge there is no universal method that works everywhere.
|
|
|
|
|
Yea, you are probably right,
I made some progress, however - it only works in some places (like notepad...)
POINT pt;
GetCursorPos(&pt);
CWnd* editControl;
editControl = WindowFromPoint(pt);
editControl->GetFocus();
editControl->SendMessage(WM_PASTE, 0, 0);
I also tried to programatically click Ctrl+V and cause a paste like this:
::SendMessage(GetForegroundWindow()->m_hWnd, WM_CHAR, 22, 0x56);
But it seems to have the same problem - only works in some places (like notepad...)
I wonder how can I better send the Ctrl+V and make the window/control think he got Ctrl+V clicked and do the paste for me (to which ever CEdit / CView control being used)
Please let me know if you have any suggestions.
Best Regards - Yovav Gad
CEO and founder of MicroMighty, Inc.
|
|
|
|
|
Yovav wrote: I wonder how can I better send the Ctrl+V...
Have you tried keybd_event() ?
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
In addition to Niklas' comments, I can see another problem.
I'll pretend your idea works. You would then make EVERY top level window receive a paste message, so they'd all perform a paste. That includes explorer, Invisible windows controlling tray notification icons... And that may be a BAD THING(tm).
Is it really so bad to have the user in control of their own PC? They spent the money on it, after all...
Iain.
In the process of moving to Sweden for love (awwww).
If you're in Scandinavia and want an MVP on the payroll (or happy with a remote worker), give me a job!
|
|
|
|
|
Well, its not really a problem - because I am sending the "WM_PASTE" message only to that specific control on which the user had put the cursor on,
POINT pt;
GetCursorPos(&pt);
editControl = WindowFromPoint(pt);
editControl->GetFocus();
editControl->SendMessage(WM_PASTE, 0, 0);
Also - the user is not going to lose control over anything,
This program gonna help users run and paste data exactly like they want it.
Best Regards - Yovav Gad
CEO and founder of MicroMighty, Inc.
|
|
|
|
|
Iain Clarke wrote: Is it really so bad to have the user in control of their own PC?
Well, yes and no . In my specific case my friend got so tired of filling identical data (like company name and address) in some text fields over and over so I offerd a way to just put the cursor in the right place and hit a user defined short-cut-keystroke, et voila: User defined text -> clipboard -> edit control.
I'm just saying there could be a good reason for doing this.
|
|
|
|
|
Well, my comment was more about the broadcast idea...
I'll trust your domain expertise on this though. Or you mercenary desire for a customer to give you money!
Iain.
In the process of moving to Sweden for love (awwww).
If you're in Scandinavia and want an MVP on the payroll (or happy with a remote worker), give me a job!
|
|
|
|