|
I believe when you install Acrobat Reader an ActiveX component is also installed. Perhaps you could use that ?
Elaine
The tigress is here
|
|
|
|
|
The problem is that I don't know exactly how to embed a component into and MFC application .
Could you give me some example?
Best regard.
Nothing is impossible!!!
But human's ability can never pass 50% of themselves.
|
|
|
|
|
Create a dialog based MFC application and on the dialog right click and choose 'Insert ActiveX object'.
That brigns up a list of the objects registered on your PC.
When do do this you will be prompted to allow Visual C++ to create a class for the object (say yes).
Then go to the class wizzard, go to member variables and create a member variable for the ActiveX object on the dialogue.
Elaine
The tigress is here
|
|
|
|
|
Firstly, Thanks a lot.
But another question :-> : in order to control that component (open a PDF file, close, ... dynamically ) what should I do???
|
|
|
|
|
Sorry, I haven't used PDFs myself just ActiveX components in general.
Elaine
The tigress is here
|
|
|
|
|
Hi, i know this question has probably been asked 1 million times (but i cant seem to find an answer)
How can you read the ID3 tag (track name, artist, etc) from an mp3 file WITHOUT using COM, Media player extensions, etc. ONLY whats in the C++ std lib and the W32 API?.
i figure that this information is probably written in all mp3 files at a fixed position (the start probably?) along with its lenght, if so, i guess it would be realatively easy to just open the file the "raw" mode (via fopen(), CreateFile() or whatever), read the lenght of the info, create a buffer with the proper size, and put the info itself in the buffer. Can anyone point me in the proper direction?
Thanks!
|
|
|
|
|
It's at the end, ID3 v1 is clear text, v2 is compressed. There's a number of free classes on the web that do it, I don't have any of them anymore, sorry.
Please don't use fopen, unless you're using C and not C++. Use iostreams where you can.
Christian
I have drunk the cool-aid and found it wan and bitter. - Chris Maunder
|
|
|
|
|
|
Go to http://www.wotsit.org and search for "MP3".
Best regards,
Dominik
_outp(0x64, 0xAD);
and
__asm mov al, 0xAD __asm out 0x64, al
do the same... but what do they do??
(doesn't work on NT)
|
|
|
|
|
|
|
|
Thank you all for your answers, i think ill go with the id3lib.
Thanks!
|
|
|
|
|
Not sure where this belongs since it is a programming question:
Given a set S of n axis parallel rectangles, defined by their top-left and bottom right points, describe and analysis an efficient algorithm for determining the area of the union of S. Note that since the rectangles my overlap the answer in not simply the sum of the areas of the rectangles. Hint: Imagine sweeping a line over the rectangles and performing operations on a data structure when the line hits either the start or end of a rectangle.
From here[^]
|
|
|
|
|
It's a brave man indeed who posts a homework question with a link to the homework. It looks like you're past your due date tho ?
And I agree with the hint, try making an array of the points, sort them and then pass over them, keeping track of when you're in at least one rectangle.
Christian
I have drunk the cool-aid and found it wan and bitter. - Chris Maunder
|
|
|
|
|
Do you really expect us to take your 'take home quiz' for you?
Software Zen: delete this;
|
|
|
|
|
Apparently he does. But at least he's got the guts to link to the original question, so there's no doubt what it is...
Christian
I have drunk the cool-aid and found it wan and bitter. - Chris Maunder
|
|
|
|
|
Hi,
it should be no problem. Sort x coords (starting and ending) of rectangle,
then proceed from left to right. And consider each point as an event. When you come to starting point of rectangle A, add rectangle A to list and test its y coords against all other rectangles in list. When you come to end point of rectangle A, remove rectangle A from the list. This should help you to determine total overlap area.
This algorithm should run in O(N*Log N + K), where N is number of rectangles and K is number of overlap areas. So note, this algorithm is
only good, when there is not great number of overlapping rectangles, because
it gets asymptotically to O(n^2). In such case, it's better to use
brutal force algorithm.
Pavel Celba
|
|
|
|
|
As I'm a network administrator in my full time job and a programmer in my spare time, I'm curious about Buffer Overflow's.
I've seen many security vulnerabilty's released as an exploit of a Buffer Overflow. What exactly does this mean, and how can I as a programmer prevent them from happening?
Thanks!
Frank
"Keyboard Error - Press F1 to Continue"
|
|
|
|
|
consider this old practice.
char input[20];
scanf("%s",input);
if you enter upto 20char its ok, but over 20chars causes the buffer to overflow and exception is raised.
|
|
|
|
|
In terms of prevention, look for strsafe.h on the MSDN web-site.
99.9% of the time, the buffer overflow attack is possible because someone was lax about checking what was being copied into a buffer, either because their routine doesn't know how big a buffer it's been given, or they just didn't bother.
It has to be said that the new features of the VS.NET C++ compiler help, but the problem is that the developer is likely to take the view that their code is safe because it didn't flag up as an overrun when it was tested. The real question is: can it be made to overrun?
Steve S
|
|
|
|
|
A buffer overflow is simply when you write past the end of a buffer. This typically means that you overwrite whatever was on the stack before the buffer. The major problem here is how the program stack is organised on an x86 system. The return address of a called function is stored on the stack by the CALL instruction. Overwriting the return address can cause the program to jump to a different address. If the attacker knows where the buffer is located in memory, he can write program code to the buffer, and cause the program to jump to an address in the buffer, executing the code he put there. Strictly speaking this is a stack buffer overflow.
The return address gets overwritten because the stack grows downwards in memory (towards lower addresses), whereas string operations proceed upwards in memory (towards higher addresses).
It's also possible to cause a heap buffer overflow, but this is usually less serious. However, if the attacker manages to overwrite a C++ object's vtable pointer, and the program calls a virtual function, he can again redirect the program's execution.
You can avoid buffer overflows by checking your buffer code. Be wary of calls to strcpy or any other function that performs an uncounted copy operation. Check that the sizes you've passed to counted copy operations are correct - some Windows functions take counts of elements, while others take counts of bytes. If you're working with WCHAR s or TCHAR s, remember that they can be 2 bytes in size (and therefore you need to divide the result of sizeof by sizeof(WCHAR) for an element-oriented function).
If you ensure that you only ever write an amount of data less than or equal to the size of the buffer, you will never have a buffer overflow.
Stability. What an interesting concept. -- Chris Maunder
|
|
|
|
|
Thanks for the info. Very good explanation.
Frank
"Keyboard Error - Press F1 to Continue"
|
|
|
|
|
Hello,
This is perhaps not a c++ question, although I am coding in c++.
I wish to write frames to an avi file while allowing another program to access this file simutanously for encoding and streaming.
I am calling:
- AVIInit
- AVIFileOpen Write
then looping:
- AddFrames.....
end loop
then calling
- AVIStreamClose
- AVIFileClose
- AVIFileExit
The file does not become available until after I close it.
Is there a better way to do this so that I can access as I write.
I have tried OF_SHARE_DENY_NONE with no success (it is an architecture issue)
Thanks,
|
|
|
|
|
Hi. I have a question with regards to processing windows messages. I have a block of pseudo code below:
while (TRUE)<br />
{ <br />
<br />
responded = get_response() ;<br />
<br />
if (responded == FALSE)<br />
<br />
else<br />
{<br />
threshold_found = process_success();<br />
<br />
if (threshold_found == FALSE)<br />
<br />
else<br />
{<br />
record_threshold() ;<br />
<br />
restart = restartTest() ;<br />
if(restart == FALSE)<br />
break ; <br />
}<br />
}<br />
}
I want to be able to receive keyboard messages while this while loop is executing and also to be able to detect any other messages like button clicks, etc...
I've tried to use PeekMessage :
while(iCheck == BST_CHECKED)<br />
{ <br />
gen_sound(0, 0.02, 1, current_frequency, duration) ;
<br />
while(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))<br />
{<br />
TranslateMessage (&msg) ;<br />
DispatchMessage (&msg) ;<br />
<br />
if(msg.message == WM_COMMAND)<br />
{<br />
if(msg.wParam == IDC_START)
iCheck = (int) SendMessage(hCtrl, BM_GETCHECK, 0, 0) ;<br />
<br />
break ;<br />
}<br />
<br />
}<br />
}
but I can't seem to get it to retrieve any messages. I've implemented this code in a callback function that is subclassed from the main window so that it can intercept the window messages. Any insight on what I maybe doing wrong or any kind of advice on the matter would be greatly appreciated.
Fazly
|
|
|
|