|
Greven wrote:
What exactly do you mean by this? What is a user defined service control code?
Using the ControlService() API you can send control codes to a services' handler function. Besides the predefined control codes (SERVICE_CONTROL_STOP, SERVICE_CONTROL_PAUSE, etc.) the range 128-255 is reserbed for user-defined control codes.
Greven wrote:
Also, if I do use normal socket code, is it common to have a looping thread that just sits there waiting to receive something?
Yes, there must be some thead that waits for recieving something. However, you could use overlapped IO so the thread is not blocked and can do also something else. You could even use the services' main thread for that purpose (the thread that starts in your ServiceMain).
--
Daniel Lohmann
http://www.losoft.de
|
|
|
|
|
My web project allows a user to navigate to a word document. My task is, not to allow the user to modifify the document. I can have the word document read only. But, user is still allowed to type-in the keys from keyboard, though he can not save it.
I do not want the user to press any key that modifies the text on the word document while it is being displayed in IE. Is it possible?
|
|
|
|
|
Srini Kella wrote:
I can have the word document read only. But, user is still allowed to type-in the keys from keyboard, though he can not save it.
I do not want the user to press any key that modifies the text on the word document while it is being displayed in IE. Is it possible?
What is the problem with the read only setting? I'm not sure what purpose you would be solving as the user would not be able to modify the source file at all.
Nick Parker
|
|
|
|
|
From MSDN I got
// Look for "Open" menu item from the File menu. Insert a new
// menu item called "Close" right after the "Open" menu item.
// ID_CLOSEFILE is the command id for the "Close" menu item.
pos = FindMenuItem(submenu, "&Open...\tCtrl+O");
if (pos > -1)
submenu->InsertMenu(pos + 1, MF_BYPOSITION, ID_CLOSEFILE, "&Close");
But the compiler says ID_CLOSEFILE is undefined. I dont know what I need to do in this case....I thought that hereafter that item would be identified with ID_CLOSEFILE, since I didnt make it in the resource editor....
Thanks
ns
|
|
|
|
|
Its ID_FILE_CLOSE, Generally they follow the format:
ID_ is the lead characters
FILE the name of the menu the item resides in
CLOSE the name of the menu item
So for example ID_VIEW_TOOLBAR would allow toggling of the toolbar in view of an app.
Roger Allen
Sonork 100.10016
If I had a quote, it would be a very good one.
|
|
|
|
|
Thank you very much. I guess MSDN messed up! Works Fine.
However, if its a custom menu item I want to add, which has no ID defined in the class wizard (since I didnt put in into the design resource since I'm adding it programmatically), how would I make that work? I found ID_VIEW_TOOLBAR in the class wizard so its been predefined, but in
pos = FindMenuItem(submenu, "&Open...\tCtrl+O");
if (pos > -1)
submenu->InsertMenu(pos + 1, MF_BYPOSITION, ID_FILE_ARBITRARY, "&Arb");
whats ID_FILE_ARBITRARY? I didnt actually create a menu item in the resource editor else it would show up anyways at runtime. I dont see a way to make it invisible so that I only see it where I insert it and not where I positioned it in the resource editor menu layout.
Appreciate your insight,
ns
|
|
|
|
|
ID_FILE_ARBITRARY would be the ID of the WM_COMMAND message you woule need to map. Once in the menu, you would have to write the handlers for them manually.
afx_msg void OnArbitrary() ;
ON_COMMAND(ID_FILE_ARBITRARY, OnArbitrary)
void CMyClass:OnArbitrary()
{
}
You will have to make sure that ID_FILE_ARBITRARY is #defined in resource.h and doesn't clash with an existing menu ID.
Roger Allen
Sonork 100.10016
If I had a quote, it would be a very good one.
|
|
|
|
|
I hadn't ever looked into resource.h (thats how new and splotchy my MFC experience is). So all I need to do is assign my arb ID a number thats not in there and I'm good to go, it seems. Theres no mention of ID_FILE_CLOSE etc so I guess they are taken care of somewhere else.
Okay if I use numbers from:
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_3D_CONTROLS 1
#define _APS_NEXT_RESOURCE_VALUE 131
#define _APS_NEXT_COMMAND_VALUE 32783
#define _APS_NEXT_CONTROL_VALUE 1007
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
or avoid these as well? eg. #define ID_FILE_ARB 131?
Thanks so much.
ns
|
|
|
|
|
ns wrote:
Okay if I use numbers from:
These are ... housekeeping definitions used by the resource editor when adding new resources. The values are the ones used by the next resource of a given type added.
A good way to get a new, unique symbol defined is to use the View->Resource Symbols menu option in Visual Studio; this brings up a dialog letting you view existing symbols and add new ones, without having to manually edit resource.h (which could be troublesome if you're not careful and then later use the resource editor to add new resources).
--------
PMGRE --Shog9 --
|
|
|
|
|
ID_FILE_CLOSE and other standard MFC menu commands etc are defined inside the MFC headers. These shouldn't be changes otherwise you stop the MFC from working so that why thier not in your resource.h.
When adding your own ID's manually (unlike what Shog9 said), if you were to use the next available ID specified by
#define _APS_NEXT_RESOURCE_VALUE 131
You would have to increment this #define in the file so that the next autmatically added one would not clash with the one you just added manually.
#define ID_FILE_MYCOMMAND 131
#define _APS_NEXT_RESOURCE_VALUE 132
Roger Allen
Sonork 100.10016
If I had a quote, it would be a very good one.
|
|
|
|
|
My thanks to both of you. I appreciate your input tremendously,
ns
|
|
|
|
|
Hi
Is there anyway that i can make my application have the looks of Outlook?? If yes, then where will i get that class?
Thanks alot!!!
|
|
|
|
|
how about searching this site for articles that have "outlook" in the title?
--
Help me! I'm turning into a grapefruit!
|
|
|
|
|
sorry, i should've done this before!!!
Thanks for the advise
|
|
|
|
|
I checked all the doc/view classses but didnt find a handler for the pre-existing VC ID_FILE_OPEN menu item. Which class handles the COMMAND for this ID? If it were the view class, and I wanted to remotely trigger this menu, could I say:
AFxGetMAinWnd()->SendMessage(WM_COMMAND, ID_FILE_OPEN)?
Does it matter who is handling this command? CAn this work even if any class were to be handling it?
Thanks,
ns
|
|
|
|
|
CWinApp does, or your CWinApp derived class does.
You should find these entries in your CWinApp derived class's message map
// Standard file based document commands
ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
Roger Allen
Sonork 100.10016
If I had a quote, it would be a very good one.
|
|
|
|
|
Thank you. So why do we send a message to the AfxGetMainWnd() object rather than AfxGetApp()? THe former works. Havent tried the latter.
One odd thing I found is that if my menu item is handled locally by the class thats sending the message, I dont have to Afx -> sendmessage it, just a direct sendmessage (since its to this->). So looks like the message has to be sent to the class that handles the command. In retrospect thats obvious....
So why AfxGetMainWnd (which returns the mainframe right? )and not AfxGetApp who is handling the ID?
Thanks,
ns
|
|
|
|
|
I got the error:
C:\swanke\A20\WzdView.cpp(124) : error C2039: 'SendMessageA' : is not a member of 'CWinApp'
So I suppose we have no choice but to send it to MAinWnd......I wonder why we cant send messages to the app???
|
|
|
|
|
The CWinApp object itself is not a window and cannot "receive the message" itself. What happens I think is that the CMAinFrame command router pass's it through a message map belonging to the app/mainframe/doc/view (these may not be in the right order here) in order looking for the first one that handles the call.
So AfxGetMainWnd()->SendMessage() will get to the app object due to the internal MFC routing mechanism.
Roger Allen
Sonork 100.10016
If I had a quote, it would be a very good one.
|
|
|
|
|
MAny thanks. I need to read more about the message passing mechanism. SO I'm gathering that AfxGetMAinWnd is giving us back an object even hif=gher than the app object (which I thought was the highest) . The name makes it sound like its going to give back a CMAINFRAME * object, which I thought was aminframe object. Anywaqys sorry if this sounds confused...I'll do some reading. APpreciate your help!
ns
|
|
|
|
|
Both CWnd s and CWinApp s are CCmdTarget s and are therefore capable of providing handlers for commands. Note that true window messages (WM_mumble ) can only be sent/posted to CWnds . The command routing mechanism of the doc/view architecture works like this:
- The
CView object gets first dibs at handling the message.
- If it doesn't handle it, the enclosing frame window gets a chance.
- If it doesn't handle it, the
CDocument attached to the view gets a chance.
- If it doesn't handle it, the
CWinApp object gets the message. Many standard commands are "automagically" handled because CWinApp provides handlers for them. Examples are File|Open,Save, Exit, Help, etc.
/ravi
Let's put "civil" back into "civilization"
http://www.ravib.com
ravib@ravib.com
|
|
|
|
|
Actually, the order is like this:
1. The active view gets the first shot at processing the message
2. Then the document associated with the view gets it's chance
3. The document template is next.
4. The mainframe get's its chance now.
5. Finally, the application object gets it's chance.
6. If noone handled this message it goes to ::DefWndProc( );
This applies to WM_COMMAND and WM_NOTIFY messages.
|
|
|
|
|
Ooops - you're right! Thanks!
/ravi
Let's put "civil" back into "civilization"
http://www.ravib.com
ravib@ravib.com
|
|
|
|
|
Hello,
I need to implement database access in my application. MS SQL server will be used. What are your reccomanadtions about technology to use: ODBC, OLEDB, ADO?? What something else MS Platform provide?
I thinked about ADO, but frankly I preffer to avoid the COM stuff in my app.
But, I think OLEDB is also a COM thing, is it true?
And if I shall use ODBC, I should need a long development time?
Please send me your advice.
Thanks,
MN
|
|
|
|
|
Ok Don,
Since your looking for answers. Can you handle the truth?
I finally decided to go with ADO for a recent project. I'm pretty new to database stuff in C++ and wanted to go with one of the technologies that should be around for at least another month or two. Our company already had an out of date ODBC library that I hated and DAO is simply going the way of the birds. One big reason for going with ADO was Carlos Antollini's fine ADO libraries or articles on this site. It is a great starting place and the class structures work well with my application. ADO just seemed like the right strategy for my work. Take a look at Carlo's articles and see if it is right for your project.
|
|
|
|