|
|
If you use ShellExecuteEx() or CreateProcess() , you can then employ WaitForSingleObject() to wait for the process to finish before starting another.
"Approved Workmen Are Not Ashamed" - 2 Timothy 2:15
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
Hi,
A few days before i asked about a library or document link to handle polygons, so far without answer, so I think I'll ask some more specific questions, and see if anyone can help me...
Current problem is how to select and activate a polygon. I built up a CTypedPtrList that holds Polygons, which consist mainly in a CList of CPoints (like in the scribble tutorial, but instead of CStrokes I use my own Polygon class). That helps me as far as drawing the polygons with CDC::Polygon command, but to move and manipulate the Polygon the next step is to let the user select one by mouseclick.
And here the big problem comes to light: how can I select a polygon (whose data structure exists as a series of points) by only knowing where the user clicked? Are there special commands (like drawing the polygon with CDC:Polygon) to know wether a given point is in the "inner" area of a polygon giving the clicking position and an array of CPoints? Do some special commands exist that can detect the whole polygon by giving a point in or near the polygon?
And with editing a polygon some similar questions arise when trying to detect which vertex of the polygon was chosen to move/delete or which line to insert a new vertex.
And one more question about drawing the polygon: is there a way to fill the polygon with a transparent brush, e.g. a hatching that let the structure of polygons below that shine through?
Can anyone help with these problems or suggest any good readings in that topic? Any help is appreciated, but please keep in mind that I'm still learning programming under Windows/MFC, so don't expect knowledge too deep in MFC technology.
Martin Dietz
|
|
|
|
|
Finding if a point lies within a polygon is not an easy task. There are some algorithms that exist and you can have a look here[^] for example (or just google for "point inside polygon").
What I would typically do, is adding a method to your polygon to check if a point is inside itself (something like IsPointInside(CPoint point) ). Then, you can iterate through your polygon list and call this function for each polygon and stop once you find one.
|
|
|
|
|
Hello,
I am just writing out what i have in my memory, so i wont be able to give exact references.
First of all, i think in GDI regions might help you since it should have PointInside method as far as i remember. If you want to use an algorithm, check Point inside polygon methods on Internet, Graphics Gems and Computational Geometry in C by Rourke and other books can help. I believe Chris Maunder has a polygon class and implements a method, check codeproject for Computational Geometry Classes by Chris Maunder.
i dont have much experience on the selection of points and lines, but there should be an article in MSDN explaining it.
Hope this helps.
Bekir.
|
|
|
|
|
I found under CRgn the possibility to create a Region by polygon (same way as to draw one) so I can use the PtInRegion-function. For the selecting points and lines parts, I'll look for the articles you mentioned. Thanks so far.
Martin Dietz
|
|
|
|
|
For simple hit-testing, CreatePolygonRgn() and PtInRegion() work well.
Mark
|
|
|
|
|
Please Refer Here[^]
This doesn't work there:
if (mySObj_iter != lst_mySObj.end())
{
lst_mySObj.erase(*mySObj_iter);
}
How do I do it?Overload any other operator?
Error:
<br />
error C2664: 'std::list<_Ty>::_Iterator<_Secure_validation> std::list<_Ty>::erase(std::list<_Ty>::_Iterator<_Secure_validation>)' : cannot convert parameter 1 from 'myStruct' to 'std::list<_Ty>::_Iterator<_Secure_validation>'<br />
with<br />
[<br />
_Ty=myStruct_t,<br />
_Secure_validation=true<br />
]<br />
*
|
|
|
|
|
Astricks wrote: lst_mySObj.erase(*mySObj_iter);
Did you even bother to read the MSDN helptext?
Or a good Book?
Josuttis, "The C++ Standard Library" and
Myers, "Effective STL"
are always within arms lenght here.
The correct parameter is the iterator, not the object.
So stop dereferencing the iterator and write
lst_mySObj.erase(mySObj_iter);
-- moified at 4:43 Monday 12th February, 2007
Clarification
"We trained hard, but it seemed that every time we were beginning to form up into teams we would be reorganised. I was to learn later in life that we tend to meet any new situation by reorganising: and a wonderful method it can be for creating the illusion of progress, while producing confusion, inefficiency and demoralisation."
-- Caius Petronius, Roman Consul, 66 A.D.
|
|
|
|
|
Thanks. I'm handling struct objects inside vectors for the first time. So the panic.
*
|
|
|
|
|
Astricks wrote: So the panic.
No Problem. I followed your link only after my post, to see that you are actually caring for the answers. Therefore I was pointing you to the documentation before answerinf your question.
But really, the Josuttis helps greatly when working with the STL.
And the Myers is great in giving lectures about dos and donts with the STL.
"We trained hard, but it seemed that every time we were beginning to form up into teams we would be reorganised. I was to learn later in life that we tend to meet any new situation by reorganising: and a wonderful method it can be for creating the illusion of progress, while producing confusion, inefficiency and demoralisation."
-- Caius Petronius, Roman Consul, 66 A.D.
|
|
|
|
|
I voted you up, but it greyed
*
|
|
|
|
|
I dont know why you get low vote I give 5 to you
|
|
|
|
|
Someone does not share my taste in books?
Anyway - thanks!
"We trained hard, but it seemed that every time we were beginning to form up into teams we would be reorganised. I was to learn later in life that we tend to meet any new situation by reorganising: and a wonderful method it can be for creating the illusion of progress, while producing confusion, inefficiency and demoralisation."
-- Caius Petronius, Roman Consul, 66 A.D.
|
|
|
|
|
Sometimes I going to meet of new ideas on your mail you answer and suggest a book to him its worth
|
|
|
|
|
or maybe just the way you suggested it, implying that the OP didn't search first.
i personnaly found the tone of your post a bit aggressive, so i can understand someone else did too...
|
|
|
|
|
have you tried using this :
lst_mySObj.erase(mySObj_iter);
if i remember well, erase() gets an iterator, not an element of the vector
also, if you're cleaning the whole vector, use clear() instead
|
|
|
|
|
Thanks toxcct
*
|
|
|
|
|
hi..
I hve design .net based C++ class library. I want to use it in vb.net proj.
My class library code compile without an error. But when i access that library in vb.net proj it gives me an error (its run time error)
error discription:
Unhandled Exception: System.BadImageFormatException: Could not load file or asse
mbly 'Appa, Version=1.0.2598.12775, Culture=neutral, PublicKeyToken=null' or one
of its dependencies. An attempt was made to load a program with an incorrect fo
rmat.
File name: 'Appa, Version=1.0.2598.12775, Culture=neutral, PublicKeyToken=null'
at Anna.MyModule.Main()
WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\M
icrosoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure lo
gging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fus
ion!EnableLog].
===========================================================
// Appa.h
#pragma once
using namespace System;
namespace Appa
{
public ref class MyClass
{
public:
int Add(int x, int y);
};
}
===========================================================
// This is the main DLL file.
#include "stdafx.h"
#include "Appa.h"
namespace Appa
{
int MyClass :: Add(int x, int y)
{
int k = x+y;
return k;
}
}
=================================================
//MyModule.vb
Module MyModule
Sub Main()
Dim obj As New Appa.MyClass
Console.WriteLine(obj.Add(10, 15))
End Sub
End Module
=================================================
plz help me guys
|
|
|
|
|
Where is your DllMain function ? And how did you create your dll project ?
|
|
|
|
|
// This is the main DLL file.
#include "stdafx.h"
#include "Appa.h"
namespace Appa
{
int MyClass :: Add(int x, int y)
{
int k = x+y;
return k;
}
}
and abt dll in vs2005
just select new project
visual c++
CLR --> class library
in this way... and i also add referece of this proj in vb.net proj.
MyClass is my classs
and add is my main dll fuction
|
|
|
|
|
dalbhide bipin wrote: CLR --> class library
Isn't CLR managed C++ (I know nothing about managed C++ so I'm not sure). If yes, you'd better ask this forum[^]
|
|
|
|
|
Hi all,
I'm writing a program using VC++ 6.0. The program is send and receives messages - string - via serial port. I used Overlapped mode for the communication. The program does not know when the data will come. i.e. if there is a data coming from the serial port at any time, read it. I used MFC in this project, so where is the best place for ReadFile() so that it checks if there is any data coming from serial port?? Thanks in advance
What I learned is still a dot in the programming world
|
|
|
|
|
I also have the same problem to read the file from the serial port.
Regards,
Ram
|
|
|
|
|
Have a look at Joe Newcomer's article about a threaded solution to serial programming: clickety[^].
In the article Joe uses UI threads. I've developed my own with worker threads.
In addition to Joe's article you have to use ::SetCommState() in order to set baudrate and such. You should also set the timeouts for the read and write operations with ::SetCommTimeouts() . I usually set ReadIntervalTimeout and ReadTotalTimeoutMultiplier to MAXDWORD to get a special behaviour where a read operation expires after ReadTotalTimeoutConstant ms even if nothing has been received. In my opinion a reasonable value for ReadTotalTimeoutConstant would be 50 ms.
Read more here:
::SetCommState()[^]
::SetCommTimeouts()[^]
"It's supposed to be hard, otherwise anybody could do it!" - selfquote
|
|
|
|