|
Most of the third party ActiveX components I work with return VARIANT , whuch I then access it's particular data member and then cast it to the proper data type. I think this is mainly for compatibility with, well... *whispers* vb
- Nitron
"Those that say a task is impossible shouldn't interrupt the ones who are doing it." - Chinese Proverb
|
|
|
|
|
work_to_live wrote:
Is this possible, or is it a violation of ActiveX design standards?
it's bad design. the proper way is to expose a bunch of get/set or property members that operate on CYourClass. 1. in general, you can't be sure that the container is a C++ app (maybe in a limited use sense you can, but in general it's a bad assumption) 2. you can't assume your object will even be in the same memory space as the container (same assumption as above).
-c
Please stand by
|
|
|
|
|
Point well taken... More specifically, what I want to do is make an array of chars available to the container. As I mentioned before, I'm just starting to look into ActiveX, so my questions obviously expose my inexperience. Continuing with your suggestion, how would you expose an array of chars to a container? BTW, I'm using Visual Studio 6.0, and after doing some research, found that there is a valid return type of byte * that was in error left out of the VS products. Oh well, I'll continue my... studies tomorrow.
|
|
|
|
|
work_to_live wrote:
how would you expose an array of chars to a container?
i think a SAFEARRAY is the standard way of doing this. if it's just an array of chars, you might also be able to sneak it in with a BSTR, but that's not polite.
-c
Please stand by
|
|
|
|
|
I tried the impolite method, since it seemed more straight forward, and I wanted to make some headway... But it may have bitten me.
As I mentioned before, I have a method that wants to return some binary data to a container. The method was created with a return type of BSTR. Here's the last few lines of code that I used to copy the char[] into the BSTR...
// fill a BSTR with the char array
(p_allchars is a pointer to a binary character array)
(totalchars = the number of chars to copy)
BSTR bStr = SysAllocStringByteLen(p_allchars,totalchars);
// delete the allchars variable, now that the data is in bStr
delete[] p_allchars;
return bStr;
When I look at the result in MFC's Control Test Container, it's garbage. I think I misused SysAllocStringByteLen, but I'm not sure. Any hints?
I'm getting an uneasy feeling that I need to read up on UNICODE and related operations...
|
|
|
|
|
hello,
i want to make a real 'break' ('pause') in my mfc program. the program should wait one or two seconds and then it should go on.
how can i do it ?
lucky
|
|
|
|
|
::Sleep will work just fine. You MFC program won't even process any window messages. (In other words, it will seem to be locked up to the user.)
Tim Smith
I'm going to patent thought. I have yet to see any prior art.
|
|
|
|
|
sounds cool. i tried something like
sleep(1000);
but it do not work. (error: program does not know 'sleep')
sorry, but i have no msdn here. how must i use 'sleep'?
sunny
|
|
|
|
|
I believe the S is capitalised, as it was in the example given. 1000 equals one second.
An alternative is the user a timer, but Sleep will do what you want in this instance. A timer will allow your program to keep doing something while it 'waits' for the passage of time.
Christian
No offense, but I don't really want to encourage the creation of another VB developer.
- Larry Antram 22 Oct 2002
C# will attract all comers, where VB is for IT Journalists and managers - Michael
P Butler 05-12-2002
Again, you can screw up a C/C++ program just as easily as a VB program. OK, maybe not
as easily, but it's certainly doable. - Jamie Nordmeyer - 15-Nov-2002
|
|
|
|
|
yes, the S is capitalised.
the sleep is working fine, but i need something else:
the program should only wait, but stop working not completely.
the previous works are to be processed and then the program should go on. unfortunately it is not requestable, whether that the processes completely finished before, thereforei needs a pause, which does not freeze everything.
what can i do?
lucky
|
|
|
|
|
Ah - then Tim's answer was correct, but your question was wrong. You need to do what I said in the last post, set up a timer. I forget the syntax but if you look up WM_TIMER in MSDN you should have no trouble finding it. It's something *like* SetTimer(42, 2000, NULL), where 42 is the number that identifies your timer ( and is passed to the WM_TIMER message handler you'll need to set up with the Class Wizard ), 2000 is the number of milliseconds ( so this one waits for two seconds ) and NULL means you're not specifying your own callback for the timer. I also believe the timer will go off over and over again, so you need to KillTimer(42) when you catch it. But my MFC/Win32 days are long behind me, you should verify the details in MSDN.
Christian
No offense, but I don't really want to encourage the creation of another VB developer.
- Larry Antram 22 Oct 2002
C# will attract all comers, where VB is for IT Journalists and managers - Michael
P Butler 05-12-2002
Again, you can screw up a C/C++ program just as easily as a VB program. OK, maybe not
as easily, but it's certainly doable. - Jamie Nordmeyer - 15-Nov-2002
|
|
|
|
|
hi,
i have a mfc program with a thread:
<br />
DWORD WINAPI ThreadProc (LPVOID pvoid) <br />
{ <br />
while (TRUE) <br />
{<br />
....<br />
} <br />
return 0; <br />
}<br />
<br />
void CDialogMe::OnMy()<br />
{<br />
DWORD WINAPI ThreadProc (LPVOID pvoid);<br />
HANDLE hThread; <br />
DWORD ThreadParam = 1;<br />
DWORD ThreadNr;<br />
hThread = CreateThread (NULL, 0, ThreadProc, &ThreadParam, 0, &ThreadNr);<br />
....<br />
}
but it do not work. what´s wrong????
sunny
|
|
|
|
|
|
That is just a prototype which is perfectly valid.
My question would be is the CreateThread routine even being invoked. If so, what error is it returning. If CreateThread is working, then set a break point in the thread proc.
Tim Smith
I'm going to patent thought. I have yet to see any prior art.
|
|
|
|
|
thank you very much ....but the problem was not the thread......sorry
i found the mistake.....
sunny....
|
|
|
|
|
|
thank you very much ....but the problem was not the thread......sorry
i found the mistake.....
sunny....
|
|
|
|
|
I am trying to Print contents of a CTreeCtrl . I implemented the Print Preview functionality in the OnPrint function . The printing that I require has a constraint.
Whatever i print must be contained within 1 page or else i need to abort printing . I am able to ascertain using pInfo and PDC whether I will be xceeding a page's length or not . I am also able to tell the user that he should change his settings to accomodate more data. What I am not able to do is prevent the Framework from printing a Blank page.
i.e I return immediately from OnPrint once I realize that the page size has been exceeded .
Also when I tried to use other functions before OnPrint such as
OnBeginPrinting() I am not able to get the true size of the page using pInfo. I am getting a garbled negative number when i Check pInfo->m_rectDraw.bottom
I have been trying to solve this for quite some time and would appreciate any suggestions .
Please help
thanks
|
|
|
|
|
I am trying to write a c++ program That will ruan as a service and will reboot the machine at a certain time. here is the problem when it runs as a service it will not reboot it just skips over the system("shutdown -f -r") command. but if I run it out side of SCM (Service control Manager)it will reboot with know problem I think Windows will not let a service reboot a machine. I am using a an XP box.
|
|
|
|
|
how about writing a lil prog to reboot the machine and calling it from the service?
"traffic lights are for people who can't make their own decisions" biz stuff about me
|
|
|
|
|
already tried that and I get the same result as before
|
|
|
|
|
|
I am sorry I am not answering your question infact I am stuck with one problem and I think you have the solution. I have develoed a chat server in VC6.0 now I want to run it as service and I have no idea how to do that I think you will be having some code because you have written that you are running C++ program which is already running as service can you please help me...?
Thanks in advance
Prateeti
|
|
|
|
|
I am using the windows 2000 resource kit have my program to run as a service. If you would give me your email address I will send you the commands along with instructions plus I will send you code telling you how you can do the same thing in c++ but the microsoft way is easier
|
|
|
|
|
I am making a self-updating console application
that downloads a new version of itself, launches
the new version via CreatProcess(), and then
immediatly quits. However, it seems that the old
version DOESN'T quit and both of them run at the
same time, in the same console window and create
problems. (the program is multi-threaded)
So I guess my question is -
Is there a better way to make a program self-upgrade
itself?
Thanks for your help!
|
|
|
|