|
Actually what iam doing now means i created one dialog on that iam drawing a image everything is working fine but its flickering continuously.so now my idea was without dialog i want to save that drawing part in memory so that it can be used for showing the report.
modified 15-May-14 5:03am.
|
|
|
|
|
What? Could you please elaborate a bit your scenario?
Veni, vidi, vici.
|
|
|
|
|
You have to be more specific. What does a dialog have to do with how you save an image? And what do you mean by saving the image directly in memory?
|
|
|
|
|
What image and where are you trying to save it?
|
|
|
|
|
|
|
I'm trying to derive from CMFCPropertyGridColorProperty and cannot override the virtual function because my derived class is not a friend of CMFCPropertyGridCtrl .
Here is a minimal representation of the problem.
class CMFCPropertyGridCtrl
{
friend class CMFCPropertyGridColorProperty;
protected:
CRect m_rectList; };
class CMFCPropertyGridColorProperty
{
friend class CMFCPropertyGridCtrl;
public:
virtual void AdjustInPlaceEditRect(CRect& rectEdit, CRect& rectSpin);
protected:
CMFCPropertyGridCtrl* m_pWndList;
};
void CMFCPropertyGridColorProperty::AdjustInPlaceEditRect(CRect& rectEdit, CRect& rectSpin)
{
m_pWndList->m_rectList.left += 20;
}
class MyPropertyGrid : public CMFCPropertyGridColorProperty
{
virtual void AdjustInPlaceEditRect(CRect& rectEdit, CRect& rectSpin);
};
void MyPropertyGrid::AdjustInPlaceEditRect(CRect& rectEdit, CRect& rectSpin)
{
m_pWndList->m_rectList.left += 40; }
trying to compile this, I get the following understandable error :
error C2248: 'CMFCPropertyGridCtrl::m_rectList' : cannot access protected member declared in class 'CMFCPropertyGridCtrl'
1> d:\projects\testfriend\testfriend\testfriend.cpp(21) : see declaration of 'CMFCPropertyGridCtrl::m_rectList'
1> d:\projects\testfriend\testfriend\testfriend.cpp(17) : see declaration of 'CMFCPropertyGridCtrl'
---
I'd like to be able to override the method
virtual void AdjustInPlaceEditRect(CRect& rectEdit, CRect& rectSpin);
void CMFCPropertyGridColorProperty::AdjustInPlaceEditRect(CRect& rectEdit, CRect& rectSpin)
{
ASSERT_VALID(this);
ASSERT_VALID(m_pWndList);
rectSpin.SetRectEmpty();
rectEdit = m_Rect;
rectEdit.DeflateRect(0, 2);
int nMargin = m_pWndList->m_bMarkModifiedProperties && m_bIsModified ? m_pWndList->m_nBoldEditLeftMargin : m_pWndList->m_nEditLeftMargin;
rectEdit.left = m_pWndList->m_rectList.left + m_pWndList->m_nLeftColumnWidth + m_Rect.Height() + AFX_TEXT_MARGIN - nMargin + 1;
AdjustButtonRect();
rectEdit.right = m_rectButton.left;
}
To change the edit box position in the CMFCPropertyGridColorProperty class; but since I do not have access to the CMFCPropertyGridCtrl class (via m_pWndList), I cannot really override it.
Any hints/tips or something else that I might have missed?
Thanks.
Max.
I'd rather be phishing!
|
|
|
|
|
Why don't you inherit from both classes?
Veni, vidi, vici.
|
|
|
|
|
YUCK!!!
A colleague offered the same suggestion.
I tried and it works... but I do not really like it.
I'd rather be phishing!
|
|
|
|
|
Maximilien wrote: I tried and it works... but I do not really like it. You will love multiple inheritance.
Veni, vidi, vici.
|
|
|
|
|
Yeah, but ultimately it does not work.
I cannot inherit from both CMFCPropertyGridColorProperty and CMFCPropertyGridCtrl.
The CMFCPropertyGridCtrl is a UI container class containing instances of CMFCPropertyGridProperty.
the CMFCPropertyGridCtrl is constructed before the CMFCPropertyGridProperty are constructed; and if I multiple inherit from CMFCPropertyGridCtrl , there will be 2 "instances" of the class and there should be only one.
I'm still working on something.
I'd rather be phishing!
|
|
|
|
|
You could make a class inheriting from CMFCPropertyGridCtrl , say MaximilenMFCPropertyGridCtrl which only purpose is being a good friend of MyPropertyGrid .
Veni, vidi, vici.
|
|
|
|
|
Hello. I am trying to write some wave data into pcm file. I pass this data and its length to the write function but it raises this exception An unknown error occurred while accessing file ..... file path + name ....
I am using following line code to open this file and write contents into it
CFile* pFile = new CFile;
pFile->Open("Output.pcm", CFile::modeCreate|modeReadWrite);
pFile->Write((void*)pData, dwLength);
pFile->Close();
What could be wrong here? Thanks for any input.
This world is going to explode due to international politics, SOON.
|
|
|
|
|
Why didn't you check Open return value (see, for instance, the documentation[^])?
Veni, vidi, vici.
|
|
|
|
|
File opens successfully. It is the Write() function that is raising this exception.
This world is going to explode due to international politics, SOON.
|
|
|
|
|
Since the exception is "An unknown error occurred while accessing file ",
Do you still get errors with the unicode syntax _T( ) , e.g CFile file (_T ("File.txt"), CFile::modeReadWrite) );
CFile file;
CFileException e;
if (file.Open (_T ("File.txt"), CFile::modeReadWrite, &e)) {
}
else {
e.ReportError ();
}
|
|
|
|
|
The file opens successfully. The problem occurs when I try to write something using it. Please see me code again, I have commented it there as well.
This world is going to explode due to international politics, SOON.
|
|
|
|
|
The error should be obvious, the inners of write look like this..
virtual void Write(
const void* lpBuf,
UINT nCount
);
Parameters
lpBuf - A pointer to the user-supplied buffer that contains the data to be written to the file.
nCount - The number of bytes to be transferred from the buffer. For text-mode files, carriage return–linefeed pairs are counted as single characters.
Official MSDN example:
CFile cfile;
cfile.Open(_T("Write_File.dat"), CFile::modeCreate | CFile::modeReadWrite);
char pbufWrite[100];
memset(pbufWrite, 'a', sizeof(pbufWrite));
cfile.Write(pbufWrite, 100);
cfile.Flush();
http://msdn.microsoft.com/en-us/library/esb6sz20.aspx[^]
|
|
|
|
|
AmbiguousName wrote: The file opens successfully. How can you be sure of that, since you do not check the return status?
|
|
|
|
|
Supercoder has given you the most likely answer although I agree with Richard you haven't conclusively shown the file is open.
If the file doesn't exist you could have a problem because you probably need to open it with
CFile::modeCreate | CFile::modeReadWrite
Stick a debug point on the fail case and check.
For the write you have a single line
=> pFile->Write((void*)pData, dwLength);
Either
1.) pData is not a pointer to an actual array of data
2.) dwLength has not been set or exceeds the data in pData
So all you have to do is work out which of the three things you got wrong and fix it.
If you can't fix it we need to see how you defined pData and where you set dwLength probably.
In vino veritas
modified 15-May-14 10:36am.
|
|
|
|
|
include wchar.h and try
WCHAR* pData = L"Testing Data";
DWORD dwLength = wcslen(pData);
CFile* pFile = new CFile;
pFile->Open(L"Output.pcm, CFile::modeCreate | CFile::modeReadWrite);
pFile->Write((void*)pData, dwLength * sizeof(WCHAR)); // exception raised here
pFile->Close();
|
|
|
|
|
I am trying to use VTK library into an MFC project ... I had do everything to can compile my project, (add headers and library files to my project), but when I try to run the program, I get follow error:
The program can't start because vtkRenderingCore-1.6.dll is missing from your computer
but I alreay use vtkRenderingCore-1.6.lib file (and his header), why do I need dll file ?
I had used another library once upon a time(PDFlib), but then I had used just header file, and library file ...
So, the question is, do I need a dll file if I am using library (and header file) inside the project ?
|
|
|
|
|
Compiled libraries come in 2 flavors - static libraries and dynamic libraries.
Static libraries are in the form of a .LIB file and dynamic libraries are in the form of a .DLL file.
A .DLL file can also have an associated .LIB file. But this .LIB file only contains the exported function signatures and the name of the .DLL file.
It does not contain any code.
During runtime, the DLL file will be searched in specific folders as mentioned here - Dynamic-Link Library Search Order[^]
«_Superman_»
I love work. It gives me something to do between weekends.
Microsoft MVP (Visual C++) (October 2009 - September 2013) Polymorphism in C
|
|
|
|
|
I want to know the details of linker,do you have any suggestion?
|
|
|
|
|
Superman allready explained in his answer that in general there are two types of libaries (static and dynamic or also called shared libraries).
Now when using VTK you can choose if you would like to use the static libraries or the dynamic ones. Assuming you did build VTK yourself in the CMake configuration you'll have to set the option BUILD_SHARED_LIBS=OFF.
This way VTK will be build as static libraries.
|
|
|
|