Тема: первая потенциально серьезная программа. Как сделать?
Уважаемые программисты, хочу написать программу для начала простую, а в дальнейшем усложнять. Юзаю VC2005 и ObjectARX под акад 2008. Программа должна создаваться с помощью мастера с использованием MFC (с этим проблем не возникает). Далее создается диалоговое окно модальное с кнопкой (тут тоже нет проблем). создаю событие на нажатие кнопки (тоже нет проблем). При нажатии на кнопку должна вызываться функция jey, которая находится в классе class CBOOK12App : public AcRxArxApp, который находится в файле acrxEntryPoint.cpp. И она должна нарисовать линию. Вот тут возникает проблема. функцию не видно из класса диалогового окна. Ниже представляю код. Он также взят из книги Полещука Н.Н. (извиняюсь если не правильно просклонял фамилию).
acrxEntryPoint.cpp:
//-----------------------------------------------------------------------------
//----- acrxEntryPoint.h
//-----------------------------------------------------------------------------
#include "StdAfx.h"
#include "resource.h"
#include "Book12dlg.h"
//-----------------------------------------------------------------------------
#define szRDS _RXST("Jeyson")
//-----------------------------------------------------------------------------
//----- ObjectARX EntryPoint
class CBOOK12App : public AcRxArxApp {
public:
CBOOK12App () : AcRxArxApp () {}
virtual AcRx::AppRetCode On_kInitAppMsg (void *pkt) {
// TODO: Load dependencies here
// You *must* call On_kInitAppMsg here
AcRx::AppRetCode retCode =AcRxArxApp::On_kInitAppMsg (pkt) ;
// TODO: Add your initialization code here
return (retCode) ;
}
virtual AcRx::AppRetCode On_kUnloadAppMsg (void *pkt) {
// TODO: Add your code here
// You *must* call On_kUnloadAppMsg here
AcRx::AppRetCode retCode =AcRxArxApp::On_kUnloadAppMsg (pkt) ;
// TODO: Unload dependencies here
return (retCode) ;
}
virtual void RegisterServerComponents () {
//----- Self-register COM server upon loading.
if ( FAILED(::DllRegisterServer ()) )
acutPrintf (_RXST("Failed to register COM server.\n")) ;
}
public:
// ----- ads_book12 symbol (do not rename)
static int ads_book12(void)
{
//----- Remove the following line if you do not expect any argument for this ADS function
//struct resbuf *pArgs =acedGetArgs () ;
CAcModuleResourceOverride resOverride;
CBook12dlg dlg;
dlg.DoModal();
// TODO: add your code here
// TODO: Replace the following line by your returned value if any
acedRetVoid () ;
return (RSRSLT) ;
}
public:
// ----- ads_jey symbol (do not rename)
public:
public:
public:
// ----- ads_jey symbol (do not rename)
static int ads_jey(void)
{
struct resbuf *pArgs =acedGetArgs () ;
//!!!!!!!!!!! Тут будет рисоваться линия!!!!!!!
acedRetVoid () ;
return (RSRSLT) ;
}
} ;
//-----------------------------------------------------------------------------
//----- Book12dlg.cpp : Implementation of CBook12dlg
//-----------------------------------------------------------------------------
#include "StdAfx.h"
#include "resource.h"
#include "Book12dlg.h"
#include "precomp.h"
//-----------------------------------------------------------------------------
IMPLEMENT_DYNAMIC (CBook12dlg, CAcUiDialog)
BEGIN_MESSAGE_MAP(CBook12dlg, CAcUiDialog)
ON_MESSAGE(WM_ACAD_KEEPFOCUS, OnAcadKeepFocus)
ON_BN_CLICKED(IDC_ABOUT, &CBook12dlg::OnBnClickedAbout)
END_MESSAGE_MAP()
//-----------------------------------------------------------------------------
CBook12dlg::CBook12dlg (CWnd *pParent /*=NULL*/, HINSTANCE hInstance /*=NULL*/) : CAcUiDialog (CBook12dlg::IDD, pParent, hInstance) {
}
//-----------------------------------------------------------------------------
void CBook12dlg::DoDataExchange (CDataExchange *pDX) {
CAcUiDialog::DoDataExchange (pDX) ;
}
//-----------------------------------------------------------------------------
//----- Needed for modeless dialogs to keep focus.
//----- Return FALSE to not keep the focus, return TRUE to keep the focus
LRESULT CBook12dlg::OnAcadKeepFocus (WPARAM, LPARAM) {
return (TRUE) ;
}
void CBook12dlg::OnBnClickedAbout()
{
// TODO: Add your control notification handler code here
jey();// вызов функции
}
Что-то не так, что-то забыл, подскажите плз.
И еще вопрос. После того как все заработает, каким образом можно будет сделать так, чтобы при запуске автокада сразу появлялась панель с одной кнопко, которая будет запускать данное приложение, диалоговое окно и т.д. Т.е. не надо будет писать из коммандной строки. Спасибо.