|
baerten wrote: Is the best way to let the Frames & Views in the standard thread
and create only for the "hard working functions" a Worker-Thread ?
To put it short: Yes!
The most common reason to use worker threads is to keep the GUI responsive during operations that will take a lot of time. The task is handed over to a thread that usually posts(!) a message to the main thread when it's done. The main thread is the one that also handles the GUI.
The use of worker threads for solving other kind of problems should be carefully considered in order to prevent design flaws and performance bottlenecks.
The most common mistake related to multithreading is the use of ::SendMessage() between threads. As Mike said "it will block the sending thread and cause a context switch to the receiver, which nullifies the point of making the app multi-threaded". This will cause a deadlock, it's just a matter of time.
The remedy for this is to use ::PostMessage() instead.
This is also the reason that the GUI shall never be manipulated from a secondary thread using MFC since those calls will result in a call to ::SendMessage().
Keep in mind that multithreading is not the same as real multitasking.
My point is that if you post a message to a thread, the message will not be handled until the receiving thread is given a time slice to run in by the OS.
This means that you have to expect a latency before action is taken on the request that is represented by the posted message. Nowdays you can assume this time to be about 10ms under normal circumstances. For Win95 it was about 55ms.
Regarding your initial post there might be other design flaws or bugs that are not related to the use of multiple threads. Aqueel's post points out one. Even if your variable could hold a value that big, you can expect your application to freeze and the GUI to be non-responsive since your burning a lot of MIPS in a UI-handler for a button click event.
Hope this helps
--
Roger
"It's supposed to be hard, otherwise anybody could do it!" - selfquote
"No one remembers a coward!" - Jan Elfström 1998 "...but everyone remembers an idiot!" - my lawyer 2005 when heard of Jan's saying above
|
|
|
|
|
I am afraid, i can not accommodate 100000000000.
We Believe in Excellence
www.aqueelmirza.cjb.net
|
|
|
|
|
Before you get to deep into threads, and unable to surface, read here and here.
"Approved Workmen Are Not Ashamed" - 2 Timothy 2:15
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
Hi,
How to check in registry whether a software is installed?
Please give me some examples using VC++(MFC).
Many Thanks,
Vijay
|
|
|
|
|
|
Many thanx brahmma,
Now i am able to check from registry & it's working fine.
Rgds/Vijay
|
|
|
|
|
Well there are no direct answers to this, softwares don't *have* to create a registry entry when they install, so some softwares might not create a registry entry.
Install the software you want to check and see what registry keys or files it creates consistantly and then use those entries to check on target system.
I can only please one person a day... today is not your day
|
|
|
|
|
Hi,
I want to develop a CAD application which should includes features like,
1. Displaying a design,
2. Scaling,
3. Panning,
4. Should be capable of drawing both Concave and Convex Polygons,
5. Capable of saving the displayed design in PDF Format,
6. Viewing layers individually / at once,
7. Allowing the user to add lines, polygons,
8. Allowing the user to draw lines at a specified angle according
to some design rules,
Above all the processing should be fast. But i can assure that it no more a 3D
application. Its a pure 2D application.
I already used OpenGL API for this application. But i faced problems in displaying the lines whose widths are less than one pixel. Since am new to this, still i didnt know how to solve that problem.
Can anyone suggest me in which type of graphics API i can use so as to achieve all the above mentioned features..?
With Regards,
Sangeetha.
|
|
|
|
|
Have a look at OpenCascade,
For PDF output, you need to use another library though.
|
|
|
|
|
Give me some of your known links regarding OpenCascade
With Regards,
Sangeetha.
|
|
|
|
|
More info :
To store any element , be it line or arc or circle you need to write a base class called CElement which should comprise of minimum
1) start point
2) end point
3) slope (m=tan(angle))
4) element type - line or arc (remember arc is same as circle or ellipse - only deiffernce being for a circle start point = end point)
Some tips ...
1)
Given length , start point and angle of X axis , then the end points are
x2= length*sin(angle)
y2= length*cos(angle)
Now with CClientDC dc(this);
dc.MoveTo(x1,y1);
dc.LineTo(x2,y2);
you should be able to draw a line (no need for bresenham algorithm etc)
2) Given slope , you can calculate angle by
m=tan(angle);
angle = tan inverse(m);
3) To find point of intersection of two lines ..remember m1*m2=-1;
To arrive at point of intersection solve m1x+c1=m2x+c2 with values of m1 and m2 ...etc
To start with start learning about Device Context in VC++ . CDC , ClientDC etc
redindian
|
|
|
|
|
Hi
As it is a 2D application do not use OpenGL .
Sangeetha_J wrote: 1. Displaying a design,
First of all , try to learn more about document view architecture , how to archive elements in document
Sangeetha_J wrote: 2. Scaling,
Sangeetha_J wrote: 3. Panning,
This you will learn later
4. Should be capable of drawing both Concave and Convex Polygons,
5. Capable of saving the displayed design in PDF Format,
I have no knowledge of
Sangeetha_J wrote: 6. Viewing layers individually / at once,
With MDI , you should be able to view the same CAD drawning in multiple views - no issues
Sangeetha_J wrote: 7. Allowing the user to add lines, polygons,
To draw lines you should devise algorithms according to the way lines or arcs or circles are drawn
For example , you should provide in the user interface (ie view) , by capturing mouse coordinates , the following possibilties of input for drawing a line
1) Given start point , angle to X axis , length of line
2) start point , angle to Y axis , length of line
3) angle , length and Y intercept
4) angle to X or Y axis and the line being tangential to another circular element etc
5) Line being tangential to two cicular elements
Above all , first you should map your application to proper map modes and split the window by 4 quqdrants (All Silver Tea Cups , map mode ISOMETRIC etc) . And this will bring your windows origin to the center of window
If you need more info contact me at dharanibabu@gmail.com
Wish you all the best with campus and protector ....
redindian
|
|
|
|
|
Hi Dharani,
Thank you for your response. I will contact you through mail.
Thank you.. Wishing you all the best..
With Regards,
Sangeetha.
|
|
|
|
|
dharani wrote: With MDI , you should be able to view the same CAD drawning in multiple views - no issues
no, having different views is different than having multiple layers in the model; in CAD models, layers show or hide different aspects of the model, for example, for an architectural CAD model, you can have a model with a structural layer, with an electrical layer, with a plumbing layer that are all part of the same "view".
|
|
|
|
|
this is a big project you have there.
I think you have a LOT of thinking and designing to do before even thinking about what exact API you will need to use.
one part of your design is to define the different data structures for your CAD project, how to define a line, define a polygon, ... how to be able to logically composite the different objects to draw the entire model, how layers are defined within your model. after that, start defining how you will be able to load and save your model ( NOT yet about how you are going to export to PDF ).
This the above steps, you could try building a dummy CAD application without graphics, just create objects, lines, polygon, layers, ... and load them and save them.
AT the same time, someone will have to work on the graphic engine, the layer above either OpenGL, DirectX or even GDI/GDI+, how to display the objects according to physical dimensions, with all the goodies, view scaling, view panning, view rotations, ...
|
|
|
|
|
Maximilien wrote: AT the same time, someone will have to work on the graphic engine, the layer above either OpenGL, DirectX or even GDI/GDI+, how to display the objects according to physical dimensions, with all the goodies, view scaling, view panning, view rotations, ...
Why do you talk about a "layer abive OpenGL or DirectX" when the project does not need any of them as it is concerned with only 2D drawing ?!
I agree she is on to a big project which should minimum consume 2 man years , nevertheless there is no need to worry about "view rotations" for the same reason that its only 2D
I have been part of a CAD product development and we have not used anything more than Device context , 6 hours a day with campus and protector and 2 hrs coding . A sound knowledge in trignometry will do things here
redindian
|
|
|
|
|
A good start would be the MyDraw application that comes with the MSDN lessons to figure out MS Visual C++. It does the basic shapes and storing classes. Learnt much from it myself many moon ago.
Cheers
Colin
Internet forums rock.
|
|
|
|
|
A reasonable start would be the MyDraw application that comes with the MSDN learn how to program Visual C++(its free). It has basic shapes, and polygons, and sets up the storing classes, serialization, Print Preview, and more. Learnt much from it myself many moons ago.
Cheers
Colin
|
|
|
|
|
Thank you all for your valuable response.. Am start with studying about device context and go through the MYDRAW example from MSDN
With Regards,
Sangeetha.
|
|
|
|
|
|
I gone through that site.. But i didnt find any related information, Whitesky. Please excuse me to say this..
With Regards,
Sangeetha.
|
|
|
|
|
Not problem I guess maybe It will helpful for you
|
|
|
|
|
Sorry Whitesky, as seeing your name, i thought its the reply for my another post "Regarding SQL execution using MFC", and so i replied like that.
Sorry..
With Regards,
Sangeetha.
|
|
|
|
|
I want to replace Third party controls Sheridan & Farpoit which I have used for Spreadshit and splittcontrol how it is possible?
My Application is in VB6.
pl. give me solution for this.
email: nileshjs@hcl.in
nilesh
nilesh
|
|
|
|
|
Nilesh J Suryavanshi wrote: My Application is in VB6.
Then why on earth are you asking in the C++ forum ?
Nilesh J Suryavanshi wrote: email: nileshjs@hcl.in
Posting your email address to a public forum will result in spam from third parties, no-one is going to mail you a solution, come back to the forum for your answer. In fact, if you registered with this address, any response will be mailed to you anyhow.
|
|
|
|
|