|
Yes, it would have been better if I posted the code without the flags.
When I do not use the Flags it`s the same thing: My Custom control is not be resized and not moved, and this is what I want it to do...
|
|
|
|
|
If you want to move and resize, just use MoveWindow().
The other problem may be where you're doing it from.
The view may not get a WM_SIZE message after the child window
you're moving is created (until the next time the view is resized).
Put a breakpoint on the SetWindowPos() call to check.
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Hi Mark,
thank you. With MoveWindow() it works!
|
|
|
|
|
I have two programs that share a pipe, a server and a client.
The server creates the pipe and then calls
ConnectNamedPipe(pipe_name, NULL);
The client opens the pipe
CreateFile(
pipe_name,
GENERIC_READ |
GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL);
But I need to know if the pipe exists even if the server has not called ConnectNamedPipe. Then I need the client to wait forever until the server calls ConnectNamedPipe. But if the pipe is not there at all, it should skip. Any way to do that?
There is sufficient light for those who desire to see, and there is sufficient darkness for those of a contrary disposition.
Blaise Pascal
|
|
|
|
|
Why don't you try calling CreateFile without the server running and see what you get? I bet that CreateFile returns something like ERROR_FILE_NOT_FOUND since the pipe doesn't exist yet and you are correctly specifying OPEN_EXISTING. Once you have that "doesn't exist" error, simply loop and repetitively call it until it returns success.
Judy
|
|
|
|
|
Hi, my problem is that if the pipe doesn't exist my program shouldn't call anymore. But CreateFile might fail because the server has not called ConnectNamedPipe yet, in which case I should wait until it does, and there lies the problem - the client program is called by third party software which in turn might be requested by my server program or not. If not, then it means that my server program will never create that pipe.
My problem is that the client has to distinguish between 1) the pipe not existing, and 2) the pipe existing but not waiting for connection.
There is sufficient light for those who desire to see, and there is sufficient darkness for those of a contrary disposition.
Blaise Pascal
|
|
|
|
|
sashoalm wrote: My problem is that the client has to distinguish between 1) the pipe not existing, and 2) the pipe existing but not waiting for connection.
To do that, the client has to make some API call. Make that call be CreateFile and examine the return value and/or the error code. If the call succeeds and you don't want to use the pipe, simply close it after you open it via CloseHandle .
Judy
|
|
|
|
|
I'm in process of moving a large app from VS 2003 to 2008 (also moved to Vista).
Seems my tree controls are no longer receiving WM_NOTIFY messages (particularly TVN_SELCHANGED) through my message map in my main dialog window. They worked fine in 2003.
I've been searching all over, and also looking for any good tutorials on porting apps to the new platform, but haven't come up with much.
Anybody have any ideas...?
Thanx,
Rick
|
|
|
|
|
What code are you using to handle the messages?
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Pretty standard stuff in my main dialog:
ON_NOTIFY(TVN_SELCHANGED, TREE_MYCOMPUTER, OnTvnSelchangedMainFoldertree)
That worked fine in VS 2003, but doesn't work with 2008 and the latest SDK/Framework.
It's a skin based app, so all controls are created dynamically, and there are defines for each control, and a multitude of maps to contain everything.
So, what I did:
My tree is a class derived from the standard CTreeCtrl. I put a handler in that class for ON_NOTIFY_REFLECT, and it will get the notification now.
What worries me, is I have hundreds of hand coded handlers in my main message map, and now I'm going to have to test them all, and try to find workarounds, or just go back to building on 2003...
|
|
|
|
|
Here's the wizard-generated code for a TVN_SELCHANGED handler.
Any differences from yours?
ON_NOTIFY(TVN_SELCHANGED, IDC_TREE1, &CMyDlg::OnTvnSelchangedTree1)
afx_msg void OnTvnSelchangedTree1(NMHDR *pNMHDR, LRESULT *pResult);
void CMyDlg::OnTvnSelchangedTree1(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMTREEVIEW pNMTreeView = reinterpret_cast<lpnmtreeview>(pNMHDR);
*pResult = 0;
}</lpnmtreeview>
Note the way the method pointer is passed in the message map entry
(this change and its effect is still being debated on other forums).
Also make sure you don't have a OnNotify() override that's not calling the
base class OnNotify().
That's all I can think of at the moment.
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
|
Hi everyone!
I want to make a C++ service (that runs constantly in the background) and what it does is every few seconds, it checks the content of a folder. If the folder is empty it does nothing and if it has some files in it it will execute a script (that will be written, a batch file)
Can anyone help me make something like that? It's supposed to be quite simple.
Thanks!
Jonathan
|
|
|
|
|
|
|
Hai every one ,
I am developing an application in vc++ for video conversion.I need to convert mpeg to mpeg4.Please any one help me to find a solution.I searched a lot for some third party libraries .But i didn't yet found a solution.I know no free libraries will be available ,please any one help me.
Thanks in advance.
sree
|
|
|
|
|
Have you checked if Media Coder[^] could be of help to you?
Many are stubborn in pursuit of the path they have chosen, few in pursuit of the goal - Friedrich Nietzsche
.·´¯`·->Rajesh<-·´¯`·.
[Microsoft MVP - Visual C++]
|
|
|
|
|
maybe check out "VLC" too.
|
|
|
|
|
http://en.wikipedia.org/wiki/Ffmpeg[^]
...cmk
The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.
- John Carmack
|
|
|
|
|
u can try total video converter. That might help u.
|
|
|
|
|
Hi, Here is singleton class. I have written destroy function to destoy the instance. But it is giving me error like test::~test' : cannot access protected member declared in class 'test'.
<br />
class test<br />
{<br />
protected:<br />
static test* m_instance;<br />
test(){}<br />
virtual ~test(){}<br />
<br />
public: <br />
static test* Instance()<br />
{<br />
return m_instance;<br />
}<br />
<br />
};<br />
test* test::m_instance = NULL;<br />
<br />
class test1 : public test<br />
{<br />
protected:<br />
test1(){}<br />
virtual ~test1()<br />
{<br />
destroy();<br />
} <br />
static void destroy()<br />
{<br />
if(m_instance)<br />
{<br />
delete m_instance;<br />
m_instance=NULL;<br />
}<br />
}<br />
public:<br />
static test1* instance()<br />
{<br />
if(!m_instance)<br />
{<br />
test:: m_instance = new test1();<br />
}<br />
return (test1*) m_instance;<br />
}<br />
<br />
void disp()<br />
{<br />
cout<<"hi"<<endl;<br />
}<br />
};<br />
<br />
int main()<br />
{<br />
test1::instance()->disp();<br />
return 0;<br />
}<br />
Pleae correct me where should I delete this instance.
|
|
|
|
|
I guess you are using VC6 ? This is a bug in the VC6 compiler. It is a very old compiler so I suggest that you upgrade to a more recent Visual Studio.
If you want to stick with VC6, make the destructors public, this should fix the problem.
|
|
|
|
|
|
I have a dialog box which in the OnInitDialog function scans for some system resources and performs a variety of checks to find those which match some criteria - those that match the criteria are added as text to a combo box on the dialog.
The dialog box then appears, with the combo box populated. The user can select a combo box entry and click the dialog's OK button (or Cancel button).
Because all of the checks are done in OnInitDialog, the dialog box does not appear at all until all of the checks are complete. There is only a brief delay in the dialog's appearance on a fast PC, but on older PCs the delay may make the user think nothing is happening.
I think what is needed is for the dialog to appear immediately with a "Scanning resources..." message written on the dialog, and the OK button disabled. The resources are then checked (I'm not sure which function where this could be done) and when complete the combo box is populated and the OK button enabled.
It would be good to allow the user to click the Cancel button while the resource checking is being performed, and this would stop the checking immediately and close the dialog box. This suggests that the resource checking should be done in a separate thread so that the Cancel button would be immediately responsive.
Is there an off-the-shelf CDialog based class available which does this or something similar?
If not, what CDialog function would be the correct place to put my resource checking. It would have to run AFTER the dialog has been fully painted.
|
|
|
|
|
Start a separate worker thread in OnInitDialog, passing to the thread (among other things, probably) the HWND of the dialog, and let OnInitDialog return. Do your work in the thread procedure, and post a message back to the dialog (that's what the HWND is for) to tell the dialog to redraw itself with the new information.
Don't forget to handle the case where the user closes the dialog while the worker thread is still running.
|
|
|
|