|
Thank you all for your answers, i think ill go with the id3lib.
Thanks!
|
|
|
|
|
Not sure where this belongs since it is a programming question:
Given a set S of n axis parallel rectangles, defined by their top-left and bottom right points, describe and analysis an efficient algorithm for determining the area of the union of S. Note that since the rectangles my overlap the answer in not simply the sum of the areas of the rectangles. Hint: Imagine sweeping a line over the rectangles and performing operations on a data structure when the line hits either the start or end of a rectangle.
From here[^]
|
|
|
|
|
It's a brave man indeed who posts a homework question with a link to the homework. It looks like you're past your due date tho ?
And I agree with the hint, try making an array of the points, sort them and then pass over them, keeping track of when you're in at least one rectangle.
Christian
I have drunk the cool-aid and found it wan and bitter. - Chris Maunder
|
|
|
|
|
Do you really expect us to take your 'take home quiz' for you?
Software Zen: delete this;
|
|
|
|
|
Apparently he does. But at least he's got the guts to link to the original question, so there's no doubt what it is...
Christian
I have drunk the cool-aid and found it wan and bitter. - Chris Maunder
|
|
|
|
|
Hi,
it should be no problem. Sort x coords (starting and ending) of rectangle,
then proceed from left to right. And consider each point as an event. When you come to starting point of rectangle A, add rectangle A to list and test its y coords against all other rectangles in list. When you come to end point of rectangle A, remove rectangle A from the list. This should help you to determine total overlap area.
This algorithm should run in O(N*Log N + K), where N is number of rectangles and K is number of overlap areas. So note, this algorithm is
only good, when there is not great number of overlapping rectangles, because
it gets asymptotically to O(n^2). In such case, it's better to use
brutal force algorithm.
Pavel Celba
|
|
|
|
|
As I'm a network administrator in my full time job and a programmer in my spare time, I'm curious about Buffer Overflow's.
I've seen many security vulnerabilty's released as an exploit of a Buffer Overflow. What exactly does this mean, and how can I as a programmer prevent them from happening?
Thanks!
Frank
"Keyboard Error - Press F1 to Continue"
|
|
|
|
|
consider this old practice.
char input[20];
scanf("%s",input);
if you enter upto 20char its ok, but over 20chars causes the buffer to overflow and exception is raised.
|
|
|
|
|
In terms of prevention, look for strsafe.h on the MSDN web-site.
99.9% of the time, the buffer overflow attack is possible because someone was lax about checking what was being copied into a buffer, either because their routine doesn't know how big a buffer it's been given, or they just didn't bother.
It has to be said that the new features of the VS.NET C++ compiler help, but the problem is that the developer is likely to take the view that their code is safe because it didn't flag up as an overrun when it was tested. The real question is: can it be made to overrun?
Steve S
|
|
|
|
|
A buffer overflow is simply when you write past the end of a buffer. This typically means that you overwrite whatever was on the stack before the buffer. The major problem here is how the program stack is organised on an x86 system. The return address of a called function is stored on the stack by the CALL instruction. Overwriting the return address can cause the program to jump to a different address. If the attacker knows where the buffer is located in memory, he can write program code to the buffer, and cause the program to jump to an address in the buffer, executing the code he put there. Strictly speaking this is a stack buffer overflow.
The return address gets overwritten because the stack grows downwards in memory (towards lower addresses), whereas string operations proceed upwards in memory (towards higher addresses).
It's also possible to cause a heap buffer overflow, but this is usually less serious. However, if the attacker manages to overwrite a C++ object's vtable pointer, and the program calls a virtual function, he can again redirect the program's execution.
You can avoid buffer overflows by checking your buffer code. Be wary of calls to strcpy or any other function that performs an uncounted copy operation. Check that the sizes you've passed to counted copy operations are correct - some Windows functions take counts of elements, while others take counts of bytes. If you're working with WCHAR s or TCHAR s, remember that they can be 2 bytes in size (and therefore you need to divide the result of sizeof by sizeof(WCHAR) for an element-oriented function).
If you ensure that you only ever write an amount of data less than or equal to the size of the buffer, you will never have a buffer overflow.
Stability. What an interesting concept. -- Chris Maunder
|
|
|
|
|
Thanks for the info. Very good explanation.
Frank
"Keyboard Error - Press F1 to Continue"
|
|
|
|
|
Hello,
This is perhaps not a c++ question, although I am coding in c++.
I wish to write frames to an avi file while allowing another program to access this file simutanously for encoding and streaming.
I am calling:
- AVIInit
- AVIFileOpen Write
then looping:
- AddFrames.....
end loop
then calling
- AVIStreamClose
- AVIFileClose
- AVIFileExit
The file does not become available until after I close it.
Is there a better way to do this so that I can access as I write.
I have tried OF_SHARE_DENY_NONE with no success (it is an architecture issue)
Thanks,
|
|
|
|
|
Hi. I have a question with regards to processing windows messages. I have a block of pseudo code below:
while (TRUE)<br />
{ <br />
<br />
responded = get_response() ;<br />
<br />
if (responded == FALSE)<br />
<br />
else<br />
{<br />
threshold_found = process_success();<br />
<br />
if (threshold_found == FALSE)<br />
<br />
else<br />
{<br />
record_threshold() ;<br />
<br />
restart = restartTest() ;<br />
if(restart == FALSE)<br />
break ; <br />
}<br />
}<br />
}
I want to be able to receive keyboard messages while this while loop is executing and also to be able to detect any other messages like button clicks, etc...
I've tried to use PeekMessage :
while(iCheck == BST_CHECKED)<br />
{ <br />
gen_sound(0, 0.02, 1, current_frequency, duration) ;
<br />
while(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))<br />
{<br />
TranslateMessage (&msg) ;<br />
DispatchMessage (&msg) ;<br />
<br />
if(msg.message == WM_COMMAND)<br />
{<br />
if(msg.wParam == IDC_START)
iCheck = (int) SendMessage(hCtrl, BM_GETCHECK, 0, 0) ;<br />
<br />
break ;<br />
}<br />
<br />
}<br />
}
but I can't seem to get it to retrieve any messages. I've implemented this code in a callback function that is subclassed from the main window so that it can intercept the window messages. Any insight on what I maybe doing wrong or any kind of advice on the matter would be greatly appreciated.
Fazly
|
|
|
|
|
I don't understand what your pseudocode is doing,
but generally, you shoud use worker thread to do some work in loop while
UI (original) thread is processing messages and controling the worker thread
rrrado
|
|
|
|
|
Hi,
does anyone know if there are deprecated headers and other files in
\Microsoft Visual Studio\VC98\INCLUDE\ ?
After my project mates and I were updating code to VC++ 7.0 standards and specifically the inclusion of <fstream> and "std::ofstream" and "std::ifstream", when I compile in VC++ 6.0 I get a lot of warnings with files in the above folder.
C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\xmemory(39) : warning C4100: '_P' : unreferenced formal parameter
C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\xmemory(41) : warning C4100: '_P' : unreferenced formal parameter
C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\xlocale(296) : warning C4663: C++ language change: to explicitly specialize class template 'codecvt' use the following syntax:
template<> class codecvt<unsigned short,char,int=""> ...
These are only three, but all seem to come from the \VC98\INCLUDE
Can anyone help or point me to references where VC++ 6.0 and "standard C++" may have been updated?
Thank you so much.
Johnny
|
|
|
|
|
How can I use functions and member variables from one dialog's class in the message handler of another dialog (in MFC)?
For example:
I have two dialogs, with classes CDlg1 & CDlg2. CDlg1 has a tab control and some generic function. CDlg2 (modeless) has a button control.
CDlg1.h looks like:
#include "Dlg2.h"
class CDlg1 : public CDialog
{
public:
CDlg1(CWnd* pParent = NULL); // Constructor
CDlg2 m_dlg2; // To create modeless in "Dlg1.cpp"
void function(); // Generic function in "Dlg1.cpp"
// Dialog Data
//{{AFX_DATA(CDlg1)
enum { IDD = IDD_DIALOG1 };
CTabCtrl m_tab; // Tab Control member variable
//}}AFX_DATA
// Overrides
//{{AFX_VIRTUAL(CDlg1)
protected:
virtual void DoDataExchange(CDataExchange* pDX);
//}}AFX_VIRTUAL
// Implementation
protected:
HICON m_hIcon;
// Generated message map functions
//{{AFX_MSG(CDlg1)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CDlg2.h looks like:
class CDlg2 : public CDialog
{
public:
CDlg2(CWnd* pParent = NULL); // Constructor
// Dialog Data
//{{AFX_DATA(CDlg2)
enum { IDD = IDD_DIALOG2 };
//}}AFX_DATA
// Overrides
//{{AFX_VIRTUAL(CDlg2)
protected:
virtual void DoDataExchange(CDataExchange* pDX);
//}}AFX_VIRTUAL
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(CDlg2)
afx_msg void OnButton();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
In the message handler for the 2nd dialog's button, I want to call the function from CDlg1 & get info from the 1st dialog's tab control (GetCurSel() or whatever).
**** From CDlg2::OnButton() in "Dlg2.cpp", how do I call function()???? ****
Just calling "function();" alone gives me the old "undeclared identifier" shiznat.
And what's the best way to control m_tab? The following seems to work, but it seems it bit messy to me:
CTabCtrl* m_tabPtr = (CTabCtrl*) GetParentOwner()->GetDlgItem(IDC_TAB);
int nCurTabSel = m_tabPtr->GetCurSel();
When I try to derive CDlg2 from CDlg1, all hell breaks loose (operator error, I'm certain) and I can't seem to make "friend" work either. Am I even barking up the right tree?
Thanks,
-Chris, the MFC newb
|
|
|
|
|
In CDlg2, make a constructor that also accepts a pointer to a CDlg1 object, so that if CDlg1 calls the constructor for CDlg2, do it like this:
Cdlg2 dlg(this);
have the overloaded constructor put whatever was sent in in a member variable of type CDlg1 (m_pDlg1 = pDlg);
Also remember you don't have to include CDlg1.h in your CDlg2.h file, just put a forward declaration for CDlg1 before your class definition for CDlg2 like this:
class CDlg1;
class CDlg2 : public CDialog
{
//declare class attributes
}
hope I helped, if not let me know and i'll cut and paste you an actual piece of working code like that. Also, don't forget to make the function you're calling public or put CDlg2 in CDlg2's class definition as a friend class.
If it's broken, I probably did it
bdiamond
|
|
|
|
|
Thank you for your help -- I didn't know about the forward declaration, that sheds quite a bit of light on things.
But I can't seem to get the CDlg2 constructor right. Do I replace the standard constructor:
CDlg2(CWnd* pParent = NULL);
or just add to it? (Sorry, I'm an old hand at C, but fairly new to C++.)
And in your example, where is pDlg declared?
Thanks again!
-Chris
|
|
|
|
|
Why don't you just try passing in a pointer to CDlg1 from the constructor of CDlg2. That should take care of your tab control problem as well since you'd just be able to simply reference it. int nCurSel = pDlg1->m_tab.GetCurSel ()
- monrobot13
|
|
|
|
|
monrobot13 wrote:
try passing in a pointer to CDlg1 from the constructor of CDlg2
Forgive my ignorance, but how do I do that (syntax-wise)?
Cheers
|
|
|
|
|
This should be a little clearer:
CDlg2::CDlg2(CDlg1* pDlg,CWnd* pParent /*= NULL*/)
: CDialog(CDlg2::IDD, pParent),m_pDlg1(pDlg)
{
//other initialization
}
this way you're also initializing the pointer without even having to have it within the actual constructor. The only thing you should have to worry about now is making sure your member variable (m_pDlg1) is declared as a pointer to a CDlg1 object, with the forward declaration, make sure the function you're calling is public (or the Tab control object variable), and you should be set.
hope this helps, let me know
If it's broken, I probably did it
bdiamond
|
|
|
|
|
Ok, almost there.
Here's what I've done (changes in blue)....
In "Dlg2.h":
<font color=blue>class CDlg1;</font> <font color=gray>
<font color=brown>class CDlg2 : public CDialog
{
public:</font>
<font color=gray>
<font color=blue>CDlg2(CDlg1* pDlg, CWnd* pParent = NULL);</font> <font color=gray>
<font color=blue>CDlg1* m_pDlg1;</font> <font color=gray>
<font color=brown>...
}</font>
And in "Dlg2.cpp":
<font color=gray>
<font color=blue>CDlg2::CDlg2(CDlg1* pDlg, CWnd* pParent</font> <font color=gray></font><font color=blue>)
: CDialog(CDlg2::IDD, pParent), m_pDlg1(pDlg)</font> <font color=gray>
<font color=brown>{</font>
<font color=gray>
<font color=brown>}</font>
Now when I compile, I receive the following error:
Dlg1.cpp(67) : error C2512: 'CDlg2' : no appropriate default constructor available
Lines 65 thru 72 of "Dlg1.cpp" are:
<font color=brown>CDlg1::CDlg1(CWnd* pParent</font> <font color=gray></font><font color=brown>)
: CDialog(CDlg1::IDD, pParent)
{</font>
<font color=gray>
<font color=brown>m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}</font>
Why is CDlg1 being affected by changes made "Dlg2.h" & "Dlg2.cpp"?? What am I doing wrong?
|
|
|
|
|
that's my fault. try changing this to this and see if it works.
CHANGE THIS:
CDlg2::CDlg2(CDlg1* pDlg, CWnd* pParent /*=NULL*/) : CDialog(CDlg2::IDD, pParent), m_pDlg1(pDlg) // New
{
//{{AFX_DATA_INIT(CDlg2)
//}}AFX_DATA_INIT
}
TO THIS:
CDlg2::CDlg2(CDlg1* pDlg, CWnd* pParent /*=NULL*/) : CDialog(CDlg2::IDD, pParent)
{
m_pDlg = pDlg;
//{{AFX_DATA_INIT(CDlg2)
//}}AFX_DATA_INIT
}
sorry about that!
I made my own test project real quick to make sure I had it right, so just in case you need that one let me know and I'll send it to you
If it's broken, I probably did it
bdiamond
|
|
|
|
|
Sorry to keep this thread running so long.
I made the changes you suggested and I get the exact same error.
Any other suggestions?
Chris
|
|
|
|
|
I don't mind at all-- I just recently got access to the internet, and before I was WISHING I had anybody to ask about anything. Before I didn't have anyone to ask, because I taught myself and nobody else where I was knew anything about C++
here is the actual files:(Replace my CDlgtestDlg with your CDlg1)
this is two header files and two .cpp files (still willing to help if this doesn't do it)
********************************************************************
// dlgtestDlg.h : header file
//
#if !defined(AFX_DLGTESTDLG_H__B42E61F1_E754_4EAD_B51A_EF1DC2AE9DA8__INCLUDED_)
#define AFX_DLGTESTDLG_H__B42E61F1_E754_4EAD_B51A_EF1DC2AE9DA8__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
/////////////////////////////////////////////////////////////////////////////
// CDlgtestDlg dialog
class CDlgtestDlg : public CDialog
{
// Construction
public:
CDlgtestDlg(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(CDlgtestDlg)
enum { IDD = IDD_DLGTEST_DIALOG };
// NOTE: the ClassWizard will add data members here
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CDlgtestDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
HICON m_hIcon;
// Generated message map functions
//{{AFX_MSG(CDlgtestDlg)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnButton1();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_DLGTESTDLG_H__B42E61F1_E754_4EAD_B51A_EF1DC2AE9DA8__INCLUDED_)
**************************************************************
// dlgtestDlg.cpp : implementation file
//
#include "stdafx.h"
#include "dlgtest.h"
#include "dlgtestDlg.h"
#include "dlg2.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDlgtestDlg dialog
CDlgtestDlg::CDlgtestDlg(CWnd* pParent /*=NULL*/)
: CDialog(CDlgtestDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CDlgtestDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CDlgtestDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDlgtestDlg)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDlgtestDlg, CDialog)
//{{AFX_MSG_MAP(CDlgtestDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDlgtestDlg message handlers
BOOL CDlgtestDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
}
void CDlgtestDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void CDlgtestDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CDlgtestDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CDlgtestDlg::OnButton1()
{
CDlg2 dlg(this);
dlg.DoModal();
}
***************************************************************
#if !defined(AFX_DLG2_H__11E9112B_9C78_4698_9C02_403F39EEE0FA__INCLUDED_)
#define AFX_DLG2_H__11E9112B_9C78_4698_9C02_403F39EEE0FA__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// Dlg2.h : header file
//
/////////////////////////////////////////////////////////////////////////////
// CDlg2 dialog
class CDlgtestDlg;
class CDlg2 : public CDialog
{
// Construction
public:
CDlg2(CWnd* pParent = NULL); // standard constructor
CDlg2(CDlgtestDlg* pDlg, CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(CDlg2)
enum { IDD = IDD_DIALOG1 };
// NOTE: the ClassWizard will add data members here
//}}AFX_DATA
CDlgtestDlg* m_pDlg1;
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CDlg2)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(CDlg2)
// NOTE: the ClassWizard will add member functions here
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_DLG2_H__11E9112B_9C78_4698_9C02_403F39EEE0FA__INCLUDED_)
****************************************************************
// Dlg2.cpp : implementation file
//
#include "stdafx.h"
#include "dlgtest.h"
#include "Dlg2.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDlg2 dialog
CDlg2::CDlg2(CWnd* pParent /*=NULL*/)
: CDialog(CDlg2::IDD, pParent)
{
//{{AFX_DATA_INIT(CDlg2)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
CDlg2::CDlg2(CDlgtestDlg* pDlg, CWnd* pParent /*=NULL*/)
:CDialog(CDlg2::IDD,pParent)
{
m_pDlg1 = pDlg;
}
void CDlg2::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDlg2)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDlg2, CDialog)
//{{AFX_MSG_MAP(CDlg2)
// NOTE: the ClassWizard will add message map macros here
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDlg2 message handlers
If it's broken, I probably did it
bdiamond
|
|
|
|
|