|
_8086 wrote: That's all about that crazy union
Farout
|
|
|
|
|
lol
----------------------------
286? WOWW!
|
|
|
|
|
Unions are powerful things, but until you realise that the parts share the same memory, you'll struggle. David's picture and Carlo's talk both help, I hope.
They are very powerful in their limited way. Here's a sample of my code (no real secrets here):
union __ChannelsOn
{
BYTE Mask;
struct {
BYTE On1 : 1;
BYTE On2 : 1;
BYTE On3 : 1;
BYTE On4 : 1;
BYTE OnTOF : 1;
BYTE Unused : 1;
BYTE MasterOn : 1;
BYTE ScanOn : 1;
} Bits;
} ChannelsOn;
I have some hardware that has a command I send to it to turn channels on and off. I send a byte made up of flag bits. I could say:
__ChannelsOn c;
c.Mask = 1 << 3 | 1 << 7;
SendChannels (c);
or I say:
__ChannelsOn c;
c.Mask = 0;
c.Bits.On3 = 1;
c.Bits.ScanOn = 1;
SendChannels (c);
Both do the same thing - but which is more readable?
They are also used to make the variant structure, used to talk with COM/VB.
It's equivalent to:
struct VARIANT
{
int nType;
union {
int nInt;
long lLong;
DWORD dwDword;
BSTR bstr;
} Var;
};
I hope that helps a bit,
Iain.
In the process of moving to Sweden for love (awwww).
If you're in Scandinavia and want an MVP on the payroll (or happy with a remote worker), give me a job!
|
|
|
|
|
hi
what is the diffrence, if i write the interface declaration inside library in my .idl file . Are these two implementation serve the same purpose.
for Ex:
library XYZ
{
interface ABC
{
method 1 ;
}
[
uuid(________),
helpstring("_________")
]
coclass PQR
{
[default]interface ABC;
};
};
OR
interface ABC
{
method 1 ;
};
library XYZ
{
[
uuid(________),
helpstring("_________")
]
coclass PQR
{
[default] interface ABC ;
};
} ;
|
|
|
|
|
pandit84 wrote: Are these two implementation serve the same purpose.
Yes, since I interpret that as a question...
"It's supposed to be hard, otherwise anybody could do it!" - selfquote "High speed never compensates for wrong direction!" - unknown
|
|
|
|
|
I defined a ON_UPDATE_COMMAND_UI handler for save and every thing went right. But after making some modification on my project I noticed the menu item "Save" is always disabled and its OnUpdate handler is never called. I removed its handler and removed its declaration in MESSAGE MAP too. But it's disabled yet
any idea?
Thank you masters!
|
|
|
|
|
Jusef Marzbany wrote: any idea?
No, sorry. you bet on the wrong horse.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
Jusef Marzbany wrote: But after making some modification on my project
Jusef Marzbany wrote: any idea?
Yes, my idea is that some of your modification broke your project. Does that help you as much as it helps us?
|
|
|
|
|
Jusef Marzbany wrote: ...and every thing went right.
Does this mean that the OnUpdateCmdUI() handler was getting called correctly?
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
|
That should be a big clue then. Since it is no longer being called, the new code you added is at fault.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
|
Yes. Did you somehow think that once was sufficient? I fully expect to see a similar response to ours shortly.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
|
led mike wrote: It's friday so I'm passing out lots of today!!!
Hey man, I'm waiting.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
Hi,
I have a simple question but I can't find its answer!
"how can I open a TIFF image file and display it?? "
it looks so simple so there is not anywhere about it.
My email: My.wistful@gmail.com
many thanks
|
|
|
|
|
myprojectme wrote: "how can I open a TIFF image file and display it?? "
Display where? Are you using MFC?
|
|
|
|
|
yes, I can use MFC and also any other way to do it.
I want with running my c++ program, a TIFF image in specific address open. that's not important where. any way and where that's possible.
thanks
|
|
|
|
|
[^].
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
Have you looked into CImage ?
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
You open it just as you would any other file. Your best bet is to find some shareware that reads the file into a bmp or dib and use the Win32 API (it used to be bitblb or something like that) or use DirectX to display it. If you feel ambitious, get yourself a a copy of the TIFF file spec and parse out the header, image, etc info yourself. The standard is a book called "File Formats" (or something like that). It gives the specs for any image file you can think of. I spent some time parsing .DWG files and it is no fun at all. Get yourself some code from the net to read the TIFF and turn it into aa BMP or DIB. BTW, watch out for compressed image files - stay away from them unless you feel super ambitious
Tom.
|
|
|
|
|
|
Hi
i am creating a project in which i want to use ActiveX Data Object.
The above file is not available in temp folder ..how should i get this file ..
Please provicde the comment. Do i have to install any active x object first
|
|
|
|
|
I'm building an Array2D template class to hold a custom class (I am testing with int to keep things simple)
Unfortunately I keep running into the same brick wall. I'll show some code first and then outline my problem.
Array2D.h
#pragma once
#ifndef INC_ARRAY_2D
#define INC_ARRAY_2D
typedef unsigned int UINT;
template <class T>
class Array2D
{
public:
Array2D(UINT TheWidth, UINT TheHeight)
{
Width = TheWidth;
Height = TheHeight;
ppArrayColumns = new T*[Width];
pArray = new T[Width*Height];
for(UINT i = 0; i < Width; i++)
{
ppArrayColumns[i] = &pArray[i*Height];
}
}
Array2D(UINT Size);
~Array2D();
T* operator[] (UINT Index)
{
return ppArrayColumns[Index];
}
private:
T **ppArrayColumns;
T *pArray;
UINT Width;
UINT Height;
};
#endif
Array2D.cpp
#include "Array2D.h"
template <class T>
Array2D<T>::Array2D(UINT Size)
{
Array2D(Size, Size);
}
template <class T>
Array2D<T>::~Array2D()
{
delete[] *ppArrayColumns;
*ppArrayColumns = 0;
delete[] ppArrayColumns;
ppArrayColumns = 0;
pArray = 0;
}
ppArrayColumns is an array of pointers to type T , of size Width . pArray is an array of type T . The constructor for Array2D sets each element of ppArrayColumns to the address of the appropriate element of pArray . The end result should allow us to access pArray like a regular 2D array, but it doesn't!
Each element of ppArrayColumns only points to one element of pArray . As such, when we use the [] operator, the whole thing falls apart because we've managed to walk into funny memory.
Is there any way I can make ppArrayColumns point to one element of pArray , yet still be able to access the next n elements (where n = Height )
Here is a diagram I have made for reference.[^]
modified on Friday, April 3, 2009 8:46 AM
|
|
|
|
|
If all you want is a 2-d array, then Boost.MultiArray[^] might help.
Otherwise -
Sauce! wrote: Each element of ppArrayColumns only points to one element of pArray. As such, when we use the [] operator, the whole thing falls apart because we've managed to walk into funny memory.
I think you'll find that's the way C/C++ arrays work - they are just pointers really. Your code works fine - when I run this code, it prints out addresses that are 40 bytes apart, which is what I'd expect for rows of 10 ints.
Array2D<int> arr(10, 10);
int main(int, char**)
{
for (int i=0;i<10;++i)
std::cout << (int)arr[i] << std::endl;
return 0;
}
Also - your template class won't really be usable, as your client code won't be able to instantiate the size constructor or destructor - you don't define template class methods in .cpp files!
Also - I don't like your destructor code - I prefer to deexplicitly deallocate the things I allocated rather than going through intermediaries:
~Array2D()
{
delete []ppArrayColumns;
delete [] pArray;
}
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|