|
I know there isn't a function in win32 API that can do this transparently, which is why I was asking here about how to do the actual CONVERSION as I don't know how to do it.
It's good to see kids turning their minds to wholesum activities such as programming, instead of wasting their lives in the hedonistic disciplines of Sex, Drugs, & Rock & Roll... or Sex with Drugs, or Sex with Rocks while Rolling in Drugs, or whatever new-fangled perversions you little monsters have thought up now...
[Shog9 on Kid Programmers]
|
|
|
|
|
There are at least two ways I know of to convert a number to its binary value, like the windows calculator does.
(1) Set up a bit structure and access each of its members just like any other structure.
typedef union
{
struct bits
{
unsigned short bit1:1;
unsigned short bit2:1;
// etc.
} bits;
unsigned short theNumber;
}BITS;
BITS b.theNumber = 365;
int bit1 = b.bits.bit1;
(2) A much more efficient way is to compute the bit pattern using the >> operator. If you look at the assembly code produced by the compiler from the method shown above, you will see that it actually uses the right shift operator to get the value out of the structure.
int x = 365;
for(int i = 1; i <= 16; i++)
{
int n = (x >> i) & 1;
printf("%d\n", n);
}
|
|
|
|
|
Have a look at std::bitset and its to_string.
|
|
|
|
|
would I be able to take a string using one of the above methods and use this kind of progression on it? See Below:
string > individual characters > binary value > string?
the reason why i want to get a string of binary values is so that I can run an rle algorithem on the resultant string and compress it down REALLY tight. I figure I'm more likely to get a really long run with rle if I'm dealing with either a 1 or 0 bit value as opposed to hex, octal, etc.
It's good to see kids turning their minds to wholesum activities such as programming, instead of wasting their lives in the hedonistic disciplines of Sex, Drugs, & Rock & Roll... or Sex with Drugs, or Sex with Rocks while Rolling in Drugs, or whatever new-fangled perversions you little monsters have thought up now...
[Shog9 on Kid Programmers]
|
|
|
|
|
John Aldrich wrote:
the reason why i want to get a string of binary values is so that I can run an rle algorithem on the resultant string and compress it down REALLY tight.
And you expect to get a "REALLY tight" compression using this? Make it easy on yourself and have a look at zlib or LZO.
|
|
|
|
|
Ok I know this is kinda simple, but why doesn't this produce a linefeed (or carrage return) ?
CFile cFoo;
cFoo.Open("bar.txt",CFile::modeCreate | CFile::modeWrite );
{
cFoo.Write(_T("TEST\n"), 5);
cFoo.Write(_T("TEST2\n"),6);
cFoo.Write("TEST3\n",6);
}
cFoo.Close();
Thanks
Regardz
Colin J Davies
Sonork ID 100.9197:Colin
More about me
|
|
|
|
|
Maybe you need to add the \r carrage return?
cFoo.Write(_T("TEST\n\r"), 6);
Does that work??
|
|
|
|
|
Hey Colin
I just noticed when you open the file the option CFile::typeText is not specified.
MSDN:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_mfc_cfile.3a3a.write.asp
Also:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_mfc_cfile.3a3a.cfile.asp
"CFile::typeText Sets text mode with special processing for carriage return–linefeed pairs (used in derived classes only)."
You should get your carrage returns then. Also carrage return\linefeed is counted as one character. Hope I helped.
|
|
|
|
|
|
Because a "newline" in DOS/Windows is "\r\n" not just "\n". FYI, if you use CStdioFile::WriteString(), it converts "\n" to "\r\n" on the fly.
--Mike--
Just released - RightClick-Encrypt v1.3 - Adds fast & easy file encryption to Explorer
My really out-of-date homepage
Sonork-100.19012 Acid_Helm
|
|
|
|
|
|
I have
void CMainFrame::SaveOptions2()
{
CRect rc2;
GetWindowRect(&rc2);
HKEY key;
DWORD size, type, disposition;
if (RegOpenKeyEx( HKEY_CURRENT_USER,APPLICATION_KEY,0,
KEY_WRITE,&key)!=ERROR_SUCCESS)
{
RegCreateKeyEx(HKEY_CURRENT_USER,APPLICATION_KEY,0,"",
REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,
&key,&disposition);
}
// int
type = REG_DWORD;
size = 4;
m_height = rc2.Height();
RegSetValueEx( key,OPTIONHEIGHT_KEY,0,type,(LPBYTE)&m_height,size );
type = REG_DWORD;
size = 4;
m_width = rc2.Width();
RegSetValueEx( key,OPTIONWIDTH_KEY,0,type,(LPBYTE)&m_width,size );
m_top = (int)rc2.top; //because .top is long
RegSetValueEx( key,OPTIONTOP_KEY,0,type,(LPBYTE)&m_top,size );
// m_lft = (int)rc2.left;
// RegSetValueEx( key,OPTIONLEFT_KEY,0,type,(LPBYTE)&m_left,size );
If I uncomment the last two lines, biiig crash! m_left is just declared a simple int, just like the rest.
?????
Appreciate your response,
ns
|
|
|
|
|
|
Nope, Its not a typo! I found that the trouble is I am not allowe dto add any kind of member variable (private or public - DWORD, CString, int I tried). as soon as I add one, it crashes. Remove the variable and alls well. Creating a local variable is fine. I dont understand this......any ideas? Thank you,
ns
|
|
|
|
|
Two things:
For some reason I had two .h files of the same class in the project even though the workspace didnt indicate it. Found it out by accident.
Second: it was still being flaky so I did a rebuildALL - now it works like a charm!
|
|
|
|
|
|
Hi,
I have a drived CArray structure defined as follows:
----------------------------------------------------
The structure MMM and the class A is defined in a main dialog (such as MyDialog.h)
Typedef struct
{
int x;
double y;
}MMM;
typedef CArray<mmm, mmm&=""> CMmmArray;
In one class called class A, I have
class A
{
....
CMmmArray m_mdata;
....
}
-----------------------------------------------------
Now, I want to access into the m_mdata from another
class (child dialog). This is MyChildDialog.h
class B
{
.....
}
How can i access and get the m_mdata in this child dialog?
Thanks in advance!
chen
|
|
|
|
|
First of all, you'd do better to use vector. Secondly, put your typedef, etc. into stdafx.h, so that the whole project knows what they are, then you'll be able to access it in the usual ways.
Christian
come on all you MS suckups, defend your sugar-daddy now. - Chris Losinger - 11/07/2002
|
|
|
|
|
Thanks ! but when i put the following typedef into the
stdafx.h, it contains errors in the line:
typedef CArray<mmm, mmm&=""> CMmmArray.
Typedef struct
{
int x;
double y;
}MMM;
typedef CArray CMmmArray;
How should i change this?
chen
|
|
|
|
|
I don't know anything about CArray apart from that it sucks. You also do not need the typedef.
struct MMM
{
int x;
double y;
}
is just fine.
Try that for the struct, and it's also my opinion that you should forget the typedef, which is just confusing. I also think you should use vector, but CArray will probably work fine for what you want to do.
Christian
come on all you MS suckups, defend your sugar-daddy now. - Chris Losinger - 11/07/2002
|
|
|
|
|
I need to know the algorithm used to fill a triangle with a color gradient given the position and color of the three vertices.
I need it so I can port the GradientFill function for Windows 95.
Peter O.
|
|
|
|
|
That's usually Gouraud shading...
here's a link
and another.
|
|
|
|
|
I saw a project the other day that colored the
background of an aboutBox up to the faint blue
lines in the resource editor. How do you do that?
I can use OnCtrColor to color the background, but
it colors everything. How can I make the background
white up to the light blue lines, then a grey
edge and a border?
Please, any response any one can give me will be
greatly appreciated.
Sincerely,
Danielle (an overworked graduate student)
|
|
|
|
|
|
Do you have an example by chance? I just
want a simple white background color filled
in up to the faint blue lines in the dialog
resource.
Please, please, please, please, please,
please, please, please, please, please,
please, please, any response, any code you
can give me will be greatly appreciated.
Sincerely,
Danielle (an overworked graduate student)
|
|
|
|
|