wxAutomationObject - вылетает Topic is solved

Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
Post Reply
sergiokey
Knows some wx things
Knows some wx things
Posts: 30
Joined: Sat Mar 21, 2009 6:55 am

wxAutomationObject - вылетает

Post by sergiokey » Wed May 20, 2009 11:27 am

Здравствуйте
"Представлюсь" сразу, чтобы потом не забыть:
Windows XP sp2, Visual Studio C++ 2008 Express, wxWidgets 2.8.10. вроде все

дело в том, что при таком простом действии как

Code: Select all

	if (m_Auto.CreateInstance(_T("Word.Application"))) return true;
вылетает в функции wxMBConv::cWC2MB в первой же строчке с аксцесс виолейшном:(
самое обидное, что программа из примеров (oleauto) работает
в чем может быть дело?

вот код:

Code: Select all

class WordFileHandler
{
protected:
	static WordFileHandler s_Instance;
	WordFileHandler();
	virtual ~WordFileHandler();
	wxAutomationObject m_Auto;
	bool m_Created;
	virtual bool Init();
public:
	static WordFileHandler* instance(){return &s_Instance;}
};

WordFileHandler WordFileHandler::s_Instance;

WordFileHandler::WordFileHandler(){
	m_Created = Init();
}

WordFileHandler::~WordFileHandler(){
}

bool WordFileHandler::Init(){
	if (m_Auto.CreateInstance(_T("Word.Application"))) return true;
	return false;
}

Kolya
Experienced Solver
Experienced Solver
Posts: 85
Joined: Mon Dec 11, 2006 11:35 am
Location: /dev/null

Re: wxAutomationObject - вылетает

Post by Kolya » Wed May 20, 2009 1:41 pm

sergiokey wrote: в чем может быть дело?
Первым делом в таких случаях надо заставить _не_ работать пример oleauto. Также посмотреть в списце процессов winword.exe

У менят этот код нормально работает:

Code: Select all

	wxAutomationObject wordObject;
	if (!wordObject.CreateInstance(_T("Word.Application")))
	{
		wxMessageBox(_T("Could not create Word object."));
		return;
	}

	if (!wordObject.PutProperty(_T("Visible"), true))
	{
		wxMessageBox(_T("Word is invisible?"));
	}
	return;
Нашел похожую ошибку. Интерестно, что вы там делаете, что оно валится.

sergiokey
Knows some wx things
Knows some wx things
Posts: 30
Joined: Sat Mar 21, 2009 6:55 am

Post by sergiokey » Wed May 20, 2009 4:35 pm

все супер, все получилось. оказывается не всё можно создавать статически)))
только возникает такая проблема, и не знаю что делать: например у меня нет ворда(ну нету, надо будет установить), а при GetInstance и CreateInstance появляется Warning window с сообщениями :
"Cannot obtain CLSID from ProgID",
"Cannot find an active object".
А мне такое сообщение не надо :x что можно сделать, не подскажите?
Last edited by sergiokey on Wed May 20, 2009 5:01 pm, edited 1 time in total.

Kolya
Experienced Solver
Experienced Solver
Posts: 85
Joined: Mon Dec 11, 2006 11:35 am
Location: /dev/null

Post by Kolya » Wed May 20, 2009 4:58 pm

Можно сбрасывать все эти ошибки в другое место при помщи функции

Code: Select all

wxLog::SetActiveTarget

sergiokey
Knows some wx things
Knows some wx things
Posts: 30
Joined: Sat Mar 21, 2009 6:55 am

Post by sergiokey » Wed May 20, 2009 5:10 pm

wxLog::EnableLogging(false) - вот что спасет)))
спасибо за ответы, Kolya.
Осталось понять как здесь закрыть тему и повысить тебе харизму))) или что на этом форуме)

tan
Moderator
Moderator
Posts: 1471
Joined: Tue Nov 14, 2006 7:58 am
Location: Saint-Petersburg, Russia

Post by tan » Thu May 21, 2009 11:24 am

sergiokey wrote: спасибо за ответы, Kolya.
Осталось понять как здесь закрыть тему и повысить тебе харизму))) или что на этом форуме)
Ну дык для этого надо принять соответствующий ответ, а не свой.
Сделал это за тебя ;)
OS: Windows XP Pro
Compiler: MSVC++ 7.1
wxWidgets: 2.8.10

Post Reply