Ask a problem,About CEdit control
i write code.....
<<<<<<<<<Static Dll>>>>>>>>
****************CmEdit.h**********

class AFX_NOVTABLE CmEdit : public CEdit
{
public:
 __declspec(dllexport) CString CmGetDlgItem(int nID);
};

***************CmEdit.Cpp**********

CString CmEdit::CmGetDlgItem(int nID)
{
  CString Str;
  GetDlgItem(nID)->GetWindowTextW(Str);
  return Str;
}

<<<<<<<<<<<<Static Exe>>>>>>>>>>>>>

#pragma comment(lib,"Dll.lib")
#include "CmEdit.h"
void SocialSecurityData::OnBnClickedOk()
{
  CmEdit d;
  CString r=d.CmGetDlgItem(IDC_EDIT1);
  MessageBox(r);
}

Start Debugging.....
Error...............
Why????
thank:)

Recommended Answers

All 2 Replies

What are the errors you are getting?

The main program cannot access controls in CmEdit class directly because they do not exist at the time you are attempting to access them. CDialog does not initialize the controls until OnInitDialog() is called, which is after DoModal(), and it destroys the controls when the CDialog returns from DoModal() (assuming you are using a model instead of modeless dialog).

To get around that problem I create a public CString object in the CDialog class that can be accessed from outside the CDialog class at any time. If the program needs the text from a CEdit control then the CDialog class sets this public variable before returning from either OnOK() or OnCancel() methods.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.