if you read something in the registry, then windows is already loaded.
if you use a Win32 API to rename files, then windows is already loaded.
if you want to rename a file in pure C/C++, then open your file, read the content, then create another file with the new name, write the content of the other file in it, close them, delete then old file, and you've got it.
I have to make a copy of pagefile.sys file,
and we cannt access it because system is using it.
An option I see, is to copy the pagefile.sys file using Native application when session manager loads while booting.
Since Native applications use Native APIs and cannt be run in Win 32 or DOS mode.
Thatswhy I need to rename pagefile.sys file,( so that I could have a copy) and when if Memory management key doesnot find pagefile.sys then it will initialize new one.
So please tell me how to rename file using Native APIs only.
I have implemented Drag and drop from "My NameSpace Extension" (which reflects the actual data in a database server)and Desktop folders. I have handled the CF_HDROP format only in my GetData() function. Presently, it is working only from the explorer right pane. ie user cannot Drag and drop a file in one of the folders in the explorer right pane.
Is there anything extra that I need to do to provide this capability? Do I need to handle some other format also??
I have an activex(simple custom edit) that i place on a dialog. If i call SetWindowPos or MoveWindow of CWnd, the control is moved ok. But if i use SetWindowPos or MoveWindow of the SDK (like ::MoveWindow) the activex is moved in the right position, but after it gains focus it automaticly changes coords to the initial position.
I have tested this with various Activex, even the Microsoft ones. They all behave like this. But i have another activex (i don t have the source code for that ) that behaves correctly.(even if i call ::Movewindow and click on the control it won't go to the initial position).
In short : I have to make my activex not to move back to the initial position on focus gain (after i call ::Move window for ex.)
Thx. in advance.
I have to manage a part of my user interface (dialogs) in a separate thread.
I've created a CWinThread derived class and I've tryed to show a dialog
in the PreTranslateMessage method but when I close the dialog an
exception is fired.
The exception is fired in WINCORE.CPP at this point:
// should be a normal window<br />
// should also be in the permanent or temporary handle map<br />
CHandleMap* pMap = afxMapHWND();<br />
ASSERT(pMap != NULL);<br />
CObject* p;<br />
ASSERT((p = pMap->LookupPermanent(m_hWnd)) != NULL ||<br />
(p = pMap->LookupTemporary(m_hWnd)) != NULL);<br />
ASSERT((CWnd*)p == this); // must be us<br />
// Note: if either of the above asserts fire and you are<br />
// writing a multithreaded application, it is likely that<br />
// you have passed a C++ object from one thread to another<br />
// and have used that object in a way that was not intended.<br />
// (only simple inline wrapper functions should be used)<br />
// In general, CWnd objects should be passed by HWND from<br />
// one thread to another. The receiving thread can wrap<br />
// the HWND with a CWnd object by using CWnd::FromHandle.<br />
// It is dangerous to pass C++ objects from one thread to<br />
// another, unless the objects are designed to be used in<br />
// such a manner.
So... I've seen is not easy to manage dialogs in threads...
How can I do that ?
You cannot share GUI elements across different threads, maybe your problem is coming from there. But why do you want to use another thread for that ? And why to manage that in the PreTranslateMessage function ?
My problem is the following:
a part of the user interface must be sinchronized with an external
interface, some dialogs must be shown when a message is received and must
be blocked until another message is received.
While this part of the user interface is running (pay attention.. it may be
blocked waiting for some events) the rest of the application have to do other
things and Windows messages must be processed. So I supposed to let a separate
thread to manage that part of the user interface in order to don't block
the main thread while waiting for external events.
Do you know what's a good way to solve this problem ?
It is difficult to help you because we don't know what are those two 'parts' of your app. Is that dialog boxes or what ?
Anyway, I think a better option is to start a thread that will only look for the specific message of the other interface (again, we don't know how they 'communicate' together). Then, when you need to lock a part of the GUI, you send a user define message to the GUI message loop. There, you can manage how the GUI needs to react and you can disable part of it. But again, I cannot help you more without knowing how you manage your GUI. Please post some more information.
Here I try to give you more information.
My application manages an Ethernet interface with 2 other applications.
It has to send periodic messages and to manage messages received through
Ethernet interfaces. Ethernet interfaces are multi-thread and talks with
the CMainFrame instance through Windows messages so Dialog boxes are
updated with received data when the CMainframe receives the Windows message
sent by Ethernet interfaces threads.
For a specific functionality of my software I have to show and hide some modal
windows when I receive specific Ethernet messages and my flow of operations
must be blocked waiting to next messages. Then I've to send some messages when
the user sets some data and closed the dialog boxes. As you can see, in this case,
the GUI and the Ethernet interface are synchronized in a unique flow of operations.
If it'd be possibile a thread would be the better way to implement this functionality
but I think it is not possible....
Maybe I should let a thread to manage the flow of operations (messages, events,
waits) and post messages to the main thread in order to let it show the dialog
boxes but I've also to use modless dialogs instead of modal dialogs.