|
If you have administrative rights on the machines in the network, you can copy files to them using their administrative shares. If the machine name is "MachineX ", for example, the C: drive on that machine may be accessed using "\\MachineX\C$ ". Note that the administrative shares aren't normally visible in Windows Explorer. This lets you copy an application to each machine in the network. This lets the server put the client application (or at least an installer for it) onto each client.
The other part of the problem is getting each client to run the client application or the installer. There are several possibilities here.
1. You can access the client machine's registry remotely. Use the RegConnectRegistry function to connect to the client's registry, and then create a 'RunOnce' key that will run your application/installer on the next restart. You could conceivably even force the client machine to restart using the InitiateSystemShutdown function.
2. You can use the task scheduler service to create a job on the client machine. The job would run the application.
3. Create your own service that runs the application. Your server can install, start, and stop the service using the service control manager functions.
Software Zen: delete this;
|
|
|
|
|
Hello,
What is the use of the keyword __declspec in C++?
Can u please give an example?
Thnks in Advance
ShijuCK
|
|
|
|
|
According to google[^], it specifies[^] storage class information.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
Respected All
I have a problem in ListBox
"I have a few bitmaps name in a list box now i want that when i select a name of any bitmap in this listbox i get the name(which is in string form) of the selected bitmap becasue i need to pick the name of the selected bitmap,
Hope + response
david
|
|
|
|
|
GetWindowText will give you the text of the selected string.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
Hi, for the configuration setting of my application (where i store them all in a global object), i let the user change the setting through a tree property page.
however, i am facing some problem with the UpdateData. This is because UpdateData actually first save, then validate the data. However, this behavior is a bit dangerous for my case.
I associate my configuaration setting directly to the controls of the property page.
Assume
1. User enter invalid data.
2. User click apply.
3. UpdateData called. A warning box come out to tell the user that the value is not valid.
4. User re-enter valid data.
5. User click apply.
6. Everything just work fine
However, problem comes here.
1. User enter invalid data.
2. User click apply.
3. UpdateData called. A warning box come out to tell the user that the value is not valid.
4. User immediately close the property page dialog box.
This time, the invalid data had been written to the global object although user had once be warned about the invalid data.
Is there any way I can first validate the control data, before the control data written in the variable?
Thank you very much!
|
|
|
|
|
yccheok wrote:
Is there any way I can first validate the control data, before the control data written in the variable?
I'd have assumed for starters that your dialog close method would only work if valid data was entered. The way I'd handle this is, if the data is not valid, change the focus to the textbox that is invalid, and check validity when the textbox loses focus.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
The problem is, the user still can close the dialog by the X button or escape key. Look like I should have a trap in closing message handler......
|
|
|
|
|
|
Yes.
A typical DoDataExchange is a bunch of DDX_??? and DDV_??? calls.
If you place an if block ahead of all these and check pDX->m_bSaveAndValidate to be true, you can do any checking you want to prior to the 'collection' of the data from the control's back into your member variables. If you don't like something, then you can call pDX->Fail()
The UpdateData is not supposed to be called if the user 'cancels' the dialog box, but it will be called if they press OK. You can then handle the validation in the DoDataExchange. If the DoDataExchange fails, then the dialog will not exit with the OK button.
You can also write your own DDV_ routines and then use them within your project. I have written all sorts of different ones to verify files exist, folders exist, numbers within a certain range, strings don't contains certain characters, etc. They work great. Just use the ones within the MFC source code as a starting point to guide you on creating your own.
|
|
|
|
|
I write a class by C++, in this class use string. For exsample:
#include "string"
using namespace std;
int exsample{}
{
string strTest;
......
}
I compile by Visual C++.NET. I get a lot of errors:
(Compile by Visual C++ 6, no Errors)
Compiling...
wmutility.cpp
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\XUTILITY(862) : error C2143: syntax error : missing ';' before '<'
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\XUTILITY(935) : see reference to class template instantiation 'std::istreambuf_iterator<_Elem,_Traits>' being compiled
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\XUTILITY(862) : error C2238: unexpected token(s) preceding ';'
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\XUTILITY(863) : error C2143: syntax error : missing ';' before '<'
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\XUTILITY(863) : error C2238: unexpected token(s) preceding ';'
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\XUTILITY(866) : error C2143: syntax error : missing ')' before '*'
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\XUTILITY(866) : error C2143: syntax error : missing ';' before '*'
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\XUTILITY(866) : error C2864: '_Sb' : only const static integral data members can be initialized inside a class or struct
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\XUTILITY(866) : error C2501: 'std::istreambuf_iterator<_Elem,_Traits>::_Sb' : missing storage-class or type specifiers
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\XUTILITY(866) : error C2143: syntax error : missing ';' before 'throw'
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\XUTILITY(866) : error C2334: unexpected token(s) preceding ':'; skipping apparent function body
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\XUTILITY(871) : error C2143: syntax error : missing ')' before '&'
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\XUTILITY(871) : error C2143: syntax error : missing ';' before '&'
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\XUTILITY(871) : error C2059: syntax error : ')'
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\XUTILITY(871) : error C2143: syntax error : missing ';' before 'throw'
Please help me this problemp.
Thank you very much!
|
|
|
|
|
Best guess - your code is not standards compliant, but VC6 allowed it, in error. You're saying all you need to do is include the string class and these errors occur ?
EDIT
Apparently, if your file is named .c, instead of .cpp, you can get this error because the compiler will assume it's c and not C++.
/EDIT
EDIT3
#include "string" is wrong. It's #include<string>
/EDIT3
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
Thank for your reply!
My file is name .cpp, but it write flowing C standard. It run very best with Visual C++6. But when I convert to Visual C++.NET (open file .dsp by Visual C++.NET), I get a lot of errors:
I think so it errors at:
#include<string>
using namespace std;
I don't understand why?
Have you any idea for this problem?
My file
#include<stdio.h>
#include<malloc.h>
#include<string.h>
#include<math.h>
#include<string>
using namespace std;
#include "utility.h"
typedef unsigned char u_char;
#define for if ( 0 ) ; else for
int bmp_flag;
int encode( )
{
string data;
..............
}
|
|
|
|
|
SAKURAVN wrote:
#include<malloc.h>
Why ? You should NEVER malloc in a C++ program without good reason.
SAKURAVN wrote:
#include<string.h>
#include<math.h>
These are deprecated
SAKURAVN wrote:
#include<string>
using namespace std;
You've just pulled ALL of std:: into the global namespace. Although it's generally better to only pull in what you need, in this case it is moot. string.h would include string as a class, and string is now conflicting with it. Get rid of the non standard header ( and replace the others with standard ones by dropping the .h ) and see how you go.
SAKURAVN wrote:
typedef unsigned char u_char;
BYTE is a typedef for unsigned char. unsigned by itself also defaults to unsigned char, I believe.
SAKURAVN wrote:
#define for if ( 0 ) ; else for
What is this ?
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
If I ignore //#include<string>
//using namespace std;
It not errors.
I don't write by C standard very much, I can not understand.
Can you advise me the way fix it.
|
|
|
|
|
SAKURAVN wrote:
I don't write by C standard very much, I can not understand.
Sure, no worries.
Basically, before there was a C++ standard, classes like string.h and iostream.h contained what existed of what eventually became the standard library. When the standard was ratified, the new headers were named without the .h. These new headers wrap everything in a namespace, called std. So, by including string.h AND string, you include two classes with the same name. If you used std::string everywhere and got rid of the using statement, you could do this. Otherwise, you have two classes of the same name trying to co-exist in the global namespace. Drop all references to string.h, replace them with string. So, reverse what you did above to make your code compile. The .h headers are deprecated, which means that in theory they could disappear one day, because they are not standard. Do the same with math.h and iostream, if you use it. Basically, anything in <>, try dropping the .h to see if it's deprecated.
Now, moving on, why do you include malloc.h ?
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
Sorry! I don't use malloc.h
if in .cpp file oly have #include <string>
using namespace std;
It still errors:
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\XUTILITY(862) : error C2143: syntax error : missing ';' before '<'
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\XUTILITY(935) : see reference to class template instantiation 'std::istreambuf_iterator<_Elem,_Traits>' being compiled
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\XUTILITY(862) : error C2238: unexpected token(s) preceding ';'
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\XUTILITY(863) : error C2143: syntax error : missing ';' before '<'
|
|
|
|
|
SAKURAVN wrote:
Sorry! I don't use malloc.h
Great - remove it then
SAKURAVN wrote:
if in .cpp file oly have #include <string>
using namespace std;
Then you must have other cpp files that include the wrong thing. If I create a project that includes the right headers, it's not a problem. When I try to use the right headers on legacy projects I inherit, I get this same issue, and it's because someone else has written crappy code elsewhere in the system. You need to search for string.h throughout the project, and correct it every time.
Personally, I tend to include standard libraries in the stdafx and put the using statements I need in my cpp files.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
//I create a table A in the Oracle.Please see the follow
CREATE TABLE A
(
ID NUMBER(7) primary key
);
//Now ,I want to insert a reocrd in the table A;
_ConnectionPtr pConn=NULL;
pConn.CreateInstance(__uuidof(Connection));
_RecordsetPtr pRst=NULL;
pRst.CreateInstance(__uuidof(Recordset));
pConn->Provider="OraOLEDB.Oracle.1";
try
{
pConn->Open("","ISVISION","ISVISION",NULL);
pRst->CursorLocation=adUseClient;
pRst->Open("A",pConn.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdTable);
pRst->AddNew();
pRst->Fields->Item[0L]->Value=100L; //But it throw a excpetion here. I dont know the reason. If I alter the datatype of ID to CHAR(10) ,it is all right.
//这里就会出现异常,如果表A的ID的数据类型是CHAR(10)的,又不会出错?
pRst->Update();
pRst->Close();
pConn->Close();
}
catch (_com_error& e)
{
MessageBox(e.Description(),"error",MB_OK|MB_ICONWARNING);
return ;
}
if (pConn)
pConn.Release();
if (pRst)
pRst.Release();
|
|
|
|
|
How many times were you intending to ask this question ?
What is the type of Value ? Is it a VARIANT ? If so, try setting up a variant, perhaps _variant_t (100L) will work. Or otherwise, it's possible that it's looking for a BSTR.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
szcococut wrote:
lpCmdLine
This is the string that is passed in.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
The really odd thing about command line argument handling is that MFC itself uses __argc and __argv to parse its arguments but gives it to apps as one single string. It makes no sense at all to me. Any app can include stdlib.h and access each individual argument if it wants to.
|
|
|
|
|
Hi all,
I am a Visual C++ Developer using V6.0. Mostly I deal with MFC creating windows application.
What are your opinions about me upgrading to Visual C++.Net 2005? It seems to be quite different from V6.0 from what I see. If I develop applications using MFC in .Net 2005, are there any issues that I should watch out for?
What about manage and unmanaged code and the .Net framework? When I distribute my software, do I need to distribute the .Net framework for older OS such as Win98?
Please give me your comments.
|
|
|
|
|
desmondling78 wrote:
If I develop applications using MFC in .Net 2005, are there any issues that I should watch out for?
Yeah, lots.
1. VC6 is TERRIBLE at standards conformace. You've missed two iterations, there is a lot of stuff that used to compile and now will not, due to being non-conformant. How well do you know/code to the C++ standard ? One obvious example is this
for (int i = 0; i != 6; ++i)
{
}
int x = i;
According to the standard, this code should fail, i is not visible outside the scope of the loop. VC6 will accept it.
2. MFC has changed a bit in the years between as well, but all for the better as far as I can tell, and not too much ( the focus is on C#/Winforms IMO ).
desmondling78 wrote:
What about manage and unmanaged code and the .Net framework? When I distribute my software, do I need to distribute the .Net framework for older OS such as Win98?
No, C++ is the only language that you can use the .NET compiler for and not require the runtime. You can choose to use/require it if you want to, but you don't have to.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
Hi,
Thanks for your reply.
How well do you know/code to the C++ standard ?
Well, I do a fair bit of development in C++. I suppose I would rate myself an average developer? Currently, I'm learning VB.Net including ASP.Net. And I have a basic understanding on .Net framework. (.Net's Quite cool actually!) For the example you gave, luckily I don't do that. (Phew). Since .Net has changed a lot, where do you think I should start so as to get myself up-to-date?
No, C++ is the only language that you can use the .NET compiler for and not require the runtime. You can choose to use/require it if you want to, but you don't have to.
I'm a little bit confused. Because there are people telling me this:
If I develop an application that uses the .Net framework (such as the Systems namespace), then I need to ensure Win98 has the .Net framework installed before it will run. is that right?
|
|
|
|
|