|
Ahh, thats more clear - I didn't understand that part. So if you have an plain old C-style ascii string, do you want to use CP_ACP or CP_UTF8? Or does it really matter?
¡El diablo está en mis pantalones! ¡Mire, mire!
Real Mentats use only 100% pure, unfooled around with Sapho Juice(tm)!
SELECT * FROM User WHERE Clue > 0
0 rows returned
|
|
|
|
|
If you have a single-byte string in the local code page (I think that's what you have in mind), you first have to convert to UTF-16 with MultiByteToWideChar* then back to UTF-8 with WideCharToMultiByte.
I was looking into this myself last week, so it's fresh in my mind. The docs are vague in that they list CP_UTF8 as a code page, but don't actually say how to use it. Basically, UTF-16 is "Unicode" and "wide chars" in Win32, everything else is mult-byte.
* or an equivalent method, like using _bstr_t or A2W
--Mike--
Ericahist | CP SearchBar v2.0.2 | Homepage | 1ClickPicGrabber | RightClick-Encrypt
|
|
|
|
|
Well the reason I'm asking is that I'm adding locale support interfaces to the VCF. And rather than simply write a whole boatload of code that does all this stuff I am trying to have a locale peer that simply calls the underlying OS's API's for this. So I want to make sure that if I claim the conversion being done from char* to wchar_t* is UTF16, that this is, in fact, true.
¡El diablo está en mis pantalones! ¡Mire, mire!
Real Mentats use only 100% pure, unfooled around with Sapho Juice(tm)!
SELECT * FROM User WHERE Clue > 0
0 rows returned
|
|
|
|
|
|
Strictly speaking, you can't have UTF16 on Windows - only its subset known as UCS2 or BMP.
|
|
|
|
|
Whats the difference? And why no UTF16?
¡El diablo está en mis pantalones! ¡Mire, mire!
Real Mentats use only 100% pure, unfooled around with Sapho Juice(tm)!
SELECT * FROM User WHERE Clue > 0
0 rows returned
|
|
|
|
|
Take a look at this page[^]. Windows supports only 2-byte subset of UTF-16 (no surrogate pairs) which is called BMP or UCS-2.
|
|
|
|
|
If i draw a line
pDC->MoveTo(x,y);
pDC->LineTo(x1,y1);
How do i know if user clicks on this line ?
do i have to write my own line drawing algo and then check for X,Y , i'd hate that
C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, it blows away your whole leg
|
|
|
|
|
|
You don't.
Drawing a line does just that. To determine whether the user has clicked on it requires you to put code in your window's mouse event handlers, store off the coordinate of the line some how, and then check accordingly.
¡El diablo está en mis pantalones! ¡Mire, mire!
Real Mentats use only 100% pure, unfooled around with Sapho Juice(tm)!
SELECT * FROM User WHERE Clue > 0
0 rows returned
|
|
|
|
|
You could also try someting like GetPixel to find the colour at the mouse pointer.
|
|
|
|
|
As others mentioned you can peek at the pixel under the line but this is crude since you can't distinguist between any same colored line.
The best solution is to create "control" like objects where events are passed down just like any container-to-control. Let your Line object determine if it was clicked on or if clicking a special part of it warrents different behavior (ie. handles).
|
|
|
|
|
bool AmICloseToLine(CPoint p, CPoint start, CPoint stop, double Sensitivity)<br />
{<br />
<br />
CSize va,vb,vc;<br />
double a,b,c,s;<br />
<br />
va = start - p;<br />
vb = stop - p;<br />
vc = start-stop;<br />
<br />
a = sqrt(va.cx*va.cx+va.cy*va.cy*1.0);<br />
b = sqrt(vb.cx*vb.cx+vb.cy*vb.cy*1.0);<br />
c = sqrt(vc.cx*vc.cx+vc.cy*vc.cy*1.0);<br />
<br />
s = (a+b+c)/2.0;<br />
<br />
double h = 4*s*(s-a)*(s-b)*(s-c)/(c*c);<br />
<br />
return (h<=Sensitivity);<br />
}
Paul Hooper
If you spend your whole life looking over your shoulder, they will get you from the front instead.
|
|
|
|
|
Wonderful piece of code
Thanks
C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, it blows away your whole leg
|
|
|
|
|
No problems. Two small caveats though.
First, the "sensitivity" is the distance you want the user to click within SQUARED. This saves calculating a sqrt.
Secondly, I forgot to mention in the original post that this code calculates the perpendicular distance to the line defined by the two points - extended to infinity in both directions. In other words
.
.
X
\ *
\
\
X
.
.
.
* .
if your line is defined by the X's then BOTH points marked with * would return true. If you want to restrict the result to only the top asterisk, you will need to add extra checking to the routine. The last line would need to be
return (h < Sensitivity && a < c && b < c);
I should also explain what the code is doing. It assumes that your start point, stop point and the click point form a triangle
*
|h
X------------------------X
the code calculates h - the perpendicular distance. First, we calculate the length of each side. Second, we use the three side lengths to calculate the area of the triangle using Heron's formula
Area = sqrt(s(s-a)(s-b)(s-c)) where s is (a+b+c)/2;
Third, we use the other formula for area of a triangle
Area = 1/2 base * height.
We know the area, we know the base, we can find the height. The code actually calculates h squared as described above.
Finally, the && a < c && b < c part of the modified last works this way.
*
|h
X-----------c------------X............
c is the distance between the X's and a would be the distance between the first X and the *. Because a > c, we know that the * is on the "extended" line.
I hope this all makes sense. Sorry I didn't explain it better the first time.
Paul Hooper
If you spend your whole life looking over your shoulder, they will get you from the front instead.
|
|
|
|
|
Hi..
What is the code i will need to connect to another computer
in my network and retrive files stored in directory at that
machine..
thanks
|
|
|
|
|
i think ur wrong here... this is not a "do my homework" forum!
Don't try it, just do it!
|
|
|
|
|
What's the code?
Try this resoucrce! Reading, you'll be amazed at what you'll learn.
msdn.microsoft.com[^]
|
|
|
|
|
Buy SAMS MFC Programming with Visual C++ 6 UNLEASHED
It's got a fair bit on communicating between networked computers....I think?!
I read only the bits that interest me.
Ashman
|
|
|
|
|
If the drive you want the data on is shared and you have the proper permissions it might be as easy as copying a file on the local machine. Lookup UNC paths. Basically it is \\<ip address>\<share name>\<file name>
John
|
|
|
|
|
There is this wonderful thing called MSDN and if you would have did a search for "copy files" you probably would have discovered this wonderful object called File which has a memeber Copy .
I suppose it is always faster just to ask in an open forum than to do a little work searching.
|
|
|
|
|
hi
i m new to MFC ..
i want to creat my own toolber in my dialog.
how can i do it
thanx
|
|
|
|
|
|
|
Ok, I'm really new to this so please be gentle. I just started taking a C++ course and I was wondering how could I have the user input some form of information but on the screen only see an asterix or a blank, sorta like when a password is entered. Right now we're only writing VERY basic code and using the win32 non-gui cosole. We're not even gonna get to objects this semester. Can anyone help? If so thanks, if not thanks for listening.
Pakled
|
|
|
|