|
Since you will have a splitter, you first use CView to create the base view on which you create the splitter.
In the left pane you can use CTreeView for the tree.
In the right pane you can use CFormView to place the grid control.</pre>
|
|
|
|
|
Thank you Superman.
The difficult we do right away...
...the impossible takes slightly longer.
|
|
|
|
|
Start with a CSplitterWnd [^], then use the tree and form view as suggested by Superman.
Veni, vidi, abiit domum
|
|
|
|
|
Thank you, Richard. I was unaware of the CSplitterWnd class, but it ought to make the job much easier.
The difficult we do right away...
...the impossible takes slightly longer.
|
|
|
|
|
That's the problem with modern systems, they have so many ready made classes it's impossible to know them all.
Veni, vidi, abiit domum
|
|
|
|
|
First MIDL compiler is invoked then C++ compilation starts compiling source code for all the projects to generate .OBJ file. Then Linker is invoked to create entire application.
Isn't that right?
If it is right, then, why does linker has MIDL options?
|
|
|
|
|
Because, for instance, the linker generates type libraries (TLB files), see MSDN [^].
Veni, vidi, vici.
|
|
|
|
|
MSDN documentation is very poor for this subject.
I think, according to MSDN, linker calls IDL compiler to build, .c, .h and .tlb files. But it doesn't make any sense either.
I think before linking process begins, all of the files must be ready.
So I still don't understand why linker calls idl compiler.
A detailed description or reference to compilation and linking process is highly appreciated.
|
|
|
|
|
fb_serwe wrote: A detailed description or reference to compilation and linking process is highly appreciated. That information is provided by Microsoft at MSDN. If you don't find it good enough then you need to try the Microsoft forums.
Veni, vidi, abiit domum
|
|
|
|
|
i develop a update .exe and its on a web server. when i start my main program,
it'll query the version first.if there is a new version on the web server, it'll create a process and execute the update .exe. whats the update doing is that downloading the new setup.msi and setting up automatically.i use the the api MsiInstallProduct(path,"action=install"). but there's someting unfriendly,
it'll popup the setup dialog and make the user to choose to restore or to delete. how can i make it to execute reinstallation action directly. msdn says the second parameter mapping to an action,but i just dont find anyting userful. help me .plz
thank u in advance.
|
|
|
|
|
Instead of updating your application with an MSI, you're supposed to create a "patch". The MSI is only for installing, repairing and removing the application.
If you are only distributing an update, then use a patch instead.
What software are you using to author your MSI's?
The difficult we do right away...
...the impossible takes slightly longer.
|
|
|
|
|
there'r 2 cases. one maybe means a "patch" for adding some more resources.
in the other case , i need an entirely new version. my question is about the second case.
so i want to take a solution of reinstallation,though, im not sure whether its resonable or not...
and i cant understand whats ur mean about authoring my msi's.
|
|
|
|
|
Try running the installer with the "\quiet" option. This prevents any user interface.
See: Installer Command Line Options[^]
The difficult we do right away...
...the impossible takes slightly longer.
|
|
|
|
|
yes,it works.there's also a doubt why i cant run the uninstall .exe if it has a different productcode from setup.msi.
and how can i get the productcode.
thank u for ur reply,its very useful
|
|
|
|
|
If you need to get the product code from the MSI, you could use the tool called Orca.
It's part of the Windows SDK: Orca[^]
You can see the contents of the MSI file with this tool.
The difficult we do right away...
...the impossible takes slightly longer.
|
|
|
|
|
You might want to look into this function:
MsiSetInternalUI[^]
The difficult we do right away...
...the impossible takes slightly longer.
|
|
|
|
|
|
I have a self-signed CA Root. An intermediate certificate was signed by this CA Root, and my server is the 3rd level which is signed by the intermediate certificate. What i have is like:
CA Root --> Intermediate Cert --> Server Cert
What i'm using is the function soap_ssl_client_context() to connect to the server and calling its web services. The function soap_ssl_client_context() requires one certificate file with PEM format as the cert file of the server.
The fact i'm facing is that, if i only put the CA Root certificate only (without the intermediate cert and server cert) in the PEM file, all the connection and web service calling are succeed. Is that reasonable? I mean it can pass the verification if only CA Root was provided. Is there anyway to make it verify the full certificate chain instead just the CA root?
The code looks like bellow:
try
{
soap_ssl_init();
soap_init(soap);
if (soap_ssl_client_context(
soap,
SOAP_SSL_DEFAULT,
NULL,
NULL,
"C:\\certfiles.pem",
NULL,
NULL
))
{
isSucceed = false;
}
} catch (...) {
isSucceed = false;
}
Any comment will be appreciated. Thanks.
|
|
|
|
|
|
I do not know why?
one program works with srand(time(NULL));
, but the other one not working.
What do I need to make srand(time(NULL)) work ?
Please help.
|
|
|
|
|
You have to define what you mean by "not working."
Is there a crash? Do you have an error code? What goes wrong?
The difficult we do right away...
...the impossible takes slightly longer.
|
|
|
|
|
Hi,
i need some help with CRegKey to read from registry
Here what works fine:
<br />
int *target = NULL;<br />
AfxGetApp()->GetProfileBinary(m_strKey, _T("key"), (BYTE **)&target, &bytes);<br />
but i need to do this with registry key, like:
<br />
int *target = NULL;<br />
myregkey.QueryBinaryValue(_T("key"), (BYTE**)&target, &bytes);<br />
Error is allways ERROR_MORE_DATA what means they are more information to read as i do?
To write binary data to registry works fine to, only read is my problem now.
Only for example here how i write binary to registry:
<br />
int *value = new int[count];<br />
myregkey.SetBinaryValue(_T("key"), (BYTE*)value, sizeof(int) * count);<br />
Can somebody help me how to read binary from registry with CRegKey::QueryBinaryValue??
Thanks in advance
bosfan
|
|
|
|
|
ERROR_MORE_DATA usually means your buffer is not large enough. Call the function with a buffer that is large enough to receive the binary value.
The difficult we do right away...
...the impossible takes slightly longer.
|
|
|
|
|
Hi,
thanks for answer, yes the buffer was wrong and i corrected this
and now works.
regards
bosfan
|
|
|
|
|
As per the notes for the RegQueryValueEx function[^]
Quote: If the buffer specified by lpData parameter is not large enough to hold the data, the function returns ERROR_MORE_DATA and stores the required buffer size in the variable pointed to by lpcbData. In this case, the contents of the lpData buffer are undefined. So set your variable bytes to zero and make the call, then when it returns it will contain the required size. You then allocate a buffer of the required size and repeat the call.
Veni, vidi, abiit domum
|
|
|
|