|
bikram singh wrote:
"Wrong" is not the right answer.
Yes, it is. He said
bikram singh wrote:
CLASSES are similar to structures except you can have them public or private
That is wrong. It implies that struct members cannot be changed between public or private. Protected didn't even get a mention, but that's another story. As I pointed out, all that changes is what the default is, the meaning of default is the value you get if you don't specify one, so it was implicit in my answer that they could be changed.
Christian
I have drunk the cool-aid and found it wan and bitter. - Chris Maunder
|
|
|
|
|
You would idd better buy a book, but here some answers by examples:
statements:
x = y + z;
Object.SomeFunction(int parameter1, CString parameter2);
CString str = "Some stupid text here.";
Definition:
int x;
double y;
CString str2;
Declaration:
x = 3;
y = 12.3;
str2 = "Hello World!";
(mind definition and declaration can come in 1 line: int x = 4;)
assignment: (see above assignments enough)
Function:
you can call a sequence of code again and again (more specific, a part of code that does something convenient)
int AddTwoInts(int x, int y){
int z = x + y;
return z;
}
Structures generally do not have functions (but they can have them) They mostly only contain data that is part of something bigger. (eg. Struct person could contain a CString name, int height, double weigth);
classes mostly do have functions.
you can consider classes like objects. Objects have data(properties) like integers, doubles and strings. And Objects can do something -> functions.
private, public: Acces level for other classes.
Note: mind ";" => STATEMENTS!
this is probably not entirely correct but gives you some idea to start with I think.
hope this helps.
"If I don't see you in this world, I'll see you in the next one... and don't be late." ~ Jimi Hendrix
|
|
|
|
|
I am having problems with using MSFlexGrid Control. The problem is that i am trying to input in the cells of the FlexGrid at run time by using a floating edit box which pops-up when the user double clicks a pariticular cell. The problem is that edit box is drawn in pixels while the cells of MSFlexGrid are in TWIPS. I couldn't found any conversion formula.
Please tell me how could i change the units of a dialog box (or a particular control) in TWIPS or suggest another way to solve the problem.
Thanks
Naveed
|
|
|
|
|
CMSHFlexGrid m_Table;
CDC *hDC;
hDC = GetDC();
long twips;
CRect aRect;
twips = m_Table.GetCellLeft();
aRect.left = MulDiv( twips, hDC->GetDeviceCaps( LOGPIXELSX ), 1440);
twips = m_Table.GetCellTop();
aRect.top = MulDiv( twips, hDC->GetDeviceCaps( LOGPIXELSY ), 1440);
twips = m_Table.GetCellWidth();
aRect.right = MulDiv( twips, hDC->GetDeviceCaps( LOGPIXELSX ), 1440)\
+ aRect.left;
twips = m_Table.GetCellHeight();
aRect.bottom = MulDiv( twips, hDC->GetDeviceCaps( LOGPIXELSY ), 1440)\
+ aRect.top;
this->ReleaseDC( hDC );
I hope that this works for you.
|
|
|
|
|
Sorry, but I forgot to mention that this code was handled after you click on a cell.
// Afterall, I realized that even my comment lines have bugs
If the sun were to blow up, it would take us 7-8 minutes to realize it.
|
|
|
|
|
Some general info:
- TWIPS = 1/1440 inch
- POINTS = 1/72 inch
- in normal WINDOWS text: 1 pixel = 12 twips
On my PC this conversion works quite well. To be exactly right you would want to know your screen size in inches(don't know if you can know this via code) and your screen resultion. (via ::GetSystemMetrics function)
Hope this helps a little.
"If I don't see you in this world, I'll see you in the next one... and don't be late." ~ Jimi Hendrix
|
|
|
|
|
I have a question.
I have some headers files in a directory which has been created inside the project directory. When I want to include the header file from a .cpp file the compiler says "no such file or directory"
My question is where to add (projects settings) a path to the headers??
Please help me
|
|
|
|
|
Project | Settings | C/C++ | Preprocessor | "Additional include directories"
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
Hello all,
Got a small problem that I was hoping I could get some help on. Using the CView class I need to get the current screen DPI. I know that I can use the GetDeviceCaps method in the CDC class to get the current DPI. The problem is that I want to retreive the values and store them somewhere in a variable BEFORE CView's OnDraw method. For example I tried this in CView's constuctor:
CTestView::CTestView()
{
CDC *Test;
Test = GetDC();
PixPerInchX=Test->GetDeviceCaps(LOGPIXELSX);
PixPerInchY=Test->GetDeviceCaps(LOGPIXELSY);
ReleaseDC(Test);
}
PixPerInchX, and PixPerInchY are defined elsewhere as an INT.
When I run this, it ASSERT fails. I think that my Test pointer is coming up NULL. Any ideas?
(P.S. I'm not a very good programmer yet, so if this is stupidly obvious I apologize.)
Thanks,
JD
|
|
|
|
|
Look at the assertion that is failing for an idea of what MFC was testing for.
When the CTestView constructor runs, it's not yet a window, it's just a C++ object, so any window-related functions that operate on the view window (like GetDC() ) will fail. CView::OnInitialUpdate() is a good place for initialization.
--Mike--
Personal stuff:: Ericahist | Homepage
Shareware stuff:: 1ClickPicGrabber | RightClick-Encrypt
CP stuff:: CP SearchBar v2.0.2 | C++ Forum FAQ
----
Wizard needs food, badly!
|
|
|
|
|
Okay, that worked. However when the code runs inside of OnInitalUpdate GetDeviceCaps returns garbage. (Well, the variable contains garbage when I look at it, anyways). When I run the same code inside the OnDraw it returns the expected value. (96) Any ideas on that one?
Thanks, JD
|
|
|
|
|
hi,
in my code i do myRS->AddNew() and after that i do myRS->MoveFirst().
when i do that i get exception... why is that?
|
|
|
|
|
Is the new record being added successfully? Have you checked the database for that? Sometimes you get an exception because you are doing something illegal but it will not appear right away.
// Afterall, I realized that even my comment lines have bugs
If the sun were to blow up, it would take us 7-8 minutes to realize it.
|
|
|
|
|
Use this to find out what the exception is really about:
<br />
try<br />
{<br />
pSet->AddNew...<br />
pSet->Move....<br />
} <br />
catch(_com_error &e)<br />
{<br />
_bstr_t bstrSource(e.Source());<br />
_bstr_t bs = _bstr_t(" Error: ") + _bstr_t(e.Error()) + _bstr_t("Message: ") <br />
+ _bstr_t(e.ErrorMessage()) + _bstr_t("\nDescription:\n") <br />
+ _bstr_t(e.Description()); <br />
MessageBox(0,bs,bstrSource, MB_OK);<br />
}<br />
I hope this helps!
Well... I am a beginner ...
|
|
|
|
|
Hi,
You also might want to check how you're opening the recordset. The recordset must not be opened as forwardOnly, otherwise it will be a read-only recordset which can only move in one direction, so it would not support calls like MoveFirst().
The other problem might be that, if your recordset is previously empty, and then you call AddNew() but fail to call Update(), then your recordset will still be empty and MoveFirst() will fail. MSDN states that you must call Update() after calling AddNew(), otheriwse no changes will be made and no warning will be given. Thus, if your recordset is empty, the exception will be thrown on the MoveFirst() call.
So two things:
1) Make sure the recordset is not opened with type forwardOnly
2) Make sure you are calling CRecordset::Update() AFTER you call AddNew(), otherwise no record will actually be added.
Hope that helps.
Sincerely,
Alexander Wiseman
Est melior esse quam videri
It is better to be than to seem
|
|
|
|
|
I am trying to write to a bitmap in order to create graduated irregular shapes and this means changing the colour many times.
I am trying to do this with CreatePen but when I try to access properties of the created LOGPEN there is an exception.
Any suggestions ?
Elaine
The tigress is here
|
|
|
|
|
I got it working - use
<br />
pen1.CreatePen(PS_SOLID, 3, i*8);
pDC->SelectObject(pen1);
rect2.left++;
rect2.right--;<br />
pDC->Ellipse(rect2);
pen1.DeleteObject();
The tigress is here
|
|
|
|
|
Heh, sorry I didn't see your post because I had the browser open for a while and didn't refresh the page.
Sincerely,
Alexander Wiseman
Est melior esse quam videri
It is better to be than to seem
|
|
|
|
|
You forgot to select the pen out of the device context before calling DeleteObject().
"You're obviously a superstar." - Christian Graus about me - 12 Feb '03
"Obviously ??? You're definitely a superstar!!!" mYkel - 21 Jun '04
Within you lies the power for good - Use it!
|
|
|
|
|
Hello,
Are you using the CPen class, or simply the Win32 GDI function CreatePen?
If you are using the CPen class, you get a LOGPEN like this:
<br />
CPen myPen;<br />
myPen.CreatePen(PS_SOLID, 1, RGB(255,0,0));<br />
<br />
LOGPEN myLogPen;<br />
myPen.GetLogPen(&myLogPen);<br />
If you then wanted to change the color of the pen, you could change the LOGPEN property, delete the CPen object and then use FromHandle or CreatePen, passing the LOGPEN back to the object.
If you are using the Win32 GDI function, I think it returns an HPEN, in which case I'm not very clear about what your question is.
I realize the stuff I said in here is pretty basic and that you probably have a more complicated question, so maybe I just misunderstood it. In any case, if you can explain a little more I'll see if I can help you.
Sincerely,
Alexander Wiseman
Est melior esse quam videri
It is better to be than to seem
|
|
|
|
|
template <class T> LPVOID GetPtrFromRVA( DWORD rva, T* pNTHeader, PBYTE imageBase )
{
PIMAGE_SECTION_HEADER pSectionHdr;
INT delta;
pSectionHdr = GetEnclosingSectionHeader( rva, pNTHeader );
if ( !pSectionHdr )
return 0;
delta = (INT)(pSectionHdr->VirtualAddress-pSectionHdr->PointerToRawData);
return (PVOID) ( imageBase + rva - delta );
}
These lines of code were taken from Matt Pietrek's PEDump (http://www.wheaty.net/[^]). This function takes an RVA and gives you an actual memory address where this RVA is located.
imageBase - is the image base where the PE file being viewed is mapped.
pSectionHdr - is a pointer to a section where the rva falls in.
Now I don't understand the last line of the function. Wouldn't imageBase + rva be enough? Why would we factor in this delta variable? On top of that, pSectionHdr->VirtualAddress and pSectionHdr->PointerToRawData point at the same information but in two different contexts. The VirtualAddress is the RVA of the section and PointerToRawData is the file offset of the section. Therefore, the load offset cannot always be the same as the file offset.
// Afterall, I realized that even my comment lines have bugs
If the sun were to blow up, it would take us 7-8 minutes to realize it.
|
|
|
|
|
|
Hi, i am developing a mini server using the CAsyncSocket class to allow communication between a Macromedia flash based front-end application and a VC++ back-end on the same PC.
I assumed the server should run on port 80, however i was not sure whether i should use 'localhost' for the server name or create a new one. I used the ffg code sequence to start the server however it fails on the specifed port.
// Create the server
m_csLocalServer = "";
m_nLocalPort = 80;
BServerStatus = GetPeerName(m_csLocalServer,m_nLocalPort);
m_BServerStatus = MainServer.Create(m_nLocalPort,SOCK_STREAM,FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE,m_csLocalServer);
if(m_BServerStatus != 0)
{
m_csServerResponse = "The server has been started";
}
I'll appreciate if anyone can tell me what im doing wrong
cheers,
femi.
|
|
|
|
|
So class MainServer is derived from CAsyncSocket?
Kuphryn
|
|
|
|
|
Hi!
I'm looking for a way to change a directory creation date.
I tried SetFileTime API function, it works well for files, but doesn't work for directories...
How to change the creation date of a directory?
Thks in advance!
Appstmd
http://www.atlence.com
|
|
|
|