El grupo al cual envías entradas es un
grupo Usenet . Si envías mensajes a este grupo, cualquier usuario de Internet podrá ver tu dirección de correo electrónico
Tu respuesta no se ha enviado.
Tu entrada se ha publicado correctamente.
De:
"wonderful3" <wonderf... @126.com>
Fecha: Mon, 9 Nov 2009 20:06:29 +0800
Local: Lun 9 nov 2009 07:06
Asunto: 求助:关于调用wx写的动态库的问题
请教一下:
我用wx写了一个简单的dll动态库,代码如下:
<1.h>
#pragma once #include "wx/wx.h" #include "windows.h" #ifdef FROMDLL_EXPORTS #define FROMDLL_API __declspec(dllexport) #else #define FROMDLL_API __declspec(dllimport) #endif class wxDLLApp : public wxApp { public: bool OnInit(); };
class __declspec(dllexport) MyDialog : public wxDialog { public: MyDialog(wxWindow* parent=0, const wxString& title=_("HelloKity")); ~MyDialog();
protected: void OnClose(wxCloseEvent& event); DECLARE_EVENT_TABLE() };
--------------------------------------------------------------------------- -
<.cpp>
#include <wx/wx.h>
#include <wx/string.h> #include <wx/frame.h> #include "1.h"
class CMyApp : public wxApp { public: bool OnInit(); };
IMPLEMENT_APP_NO_MAIN(CMyApp) DECLARE_APP(CMyApp) BOOL APIENTRY DllMain(HMODULE Module,DWORD Reason,LPVOID) { if(Reason==DLL_PROCESS_DETACH) { wxEntryCleanup(); } else if(Reason==DLL_PROCESS_ATTACH) { int argc = 0; char** argv = NULL; if(!wxEntryStart(argc, argv) || !wxTheApp || !wxTheApp->CallOnInit()) { return FALSE; } } return TRUE;
}
bool CMyApp::OnInit() {
return true; };
BEGIN_EVENT_TABLE(MyDialog, wxDialog) EVT_CLOSE(MyDialog::OnClose) END_EVENT_TABLE() void MyDialog::OnClose(wxCloseEvent &ev) { Close(true); }
MyDialog::MyDialog(wxWindow* parent, const wxString& title ) : wxDialog(parent, -1, title, wxDefaultPosition, wxDefaultSize,wxDEFAULT_FRAME_STYLE|wxFRAME_NO_TASKBAR|wxFRAME_FLOAT_ON_PAR ENT) { }
MyDialog::~MyDialog()
{}
在调用dll的应用程序(wxFrame)中加入:
#include "1.h"
#pragma comment(lib,"1.lib")
在初始化函数中加入:
MyDialog *dlg = new MyDialog(frame);
dlg->Show();
程序运行后,产生一个Frame,在Frame上面产生一个Dialog , 但是我去关闭Dialog却关不掉,如果直接关闭Frame,两个一起关掉,但是此应用程序的进程还是存在,并且CPU一直会耗到100%,这个问题研究了好久 都没成功,还望大侠们指点。
2009-11-09
wonderful3
No dispones del permiso necesario para enviar entradas.
De:
Liu Yu Gang <liu... @yahoo.cn>
Fecha: Tue, 10 Nov 2009 08:52:56 +0800
Local: Lun 9 nov 2009 19:52
Asunto: Re: [wxChinese] 求助:关于调用wx写的动态库的问题
MyDialog *dlg = new MyDialog(frame);
dlg->Show();
dialog 应当这样用吧
MyDialog dlg(frame)
dlg.ShowModal()
Best regards
Liu Yu Gang
liuyug@yahoo.cn
-----------------------------------------
Thunderbird + Gnupg + Enigmail = PGP/MIME
wonderful3 wrote:
请教一下:
我用wx写了一个简单的dll动态库,代码如下:
<1.h>
#pragma once
#include "wx/wx.h"
#include "windows.h"
#ifdef FROMDLL_EXPORTS
#define FROMDLL_API __declspec(dllexport)
#else
#define FROMDLL_API __declspec(dllimport)
#endif
class wxDLLApp : public wxApp
{ public:
bool OnInit();
};
class __declspec(dllexport) MyDialog : public wxDialog
{
public:
MyDialog(wxWindow* parent=0, const wxString& title=_("HelloKity"));
~MyDialog();
protected:
void OnClose(wxCloseEvent& event);
DECLARE_EVENT_TABLE()
};
----------------------------------------------------------------------------
<.cpp>
#include <wx/wx.h>
#include <wx/string.h>
#include <wx/frame.h>
#include "1.h"
class CMyApp : public wxApp
{
public:
bool OnInit();
};
IMPLEMENT_APP_NO_MAIN(CMyApp)
DECLARE_APP(CMyApp)
BOOL APIENTRY DllMain(HMODULE Module,DWORD Reason,LPVOID)
{
if(Reason==DLL_PROCESS_DETACH)
{
wxEntryCleanup();
}
else if(Reason==DLL_PROCESS_ATTACH)
{
int argc = 0;
char** argv = NULL;
if(!wxEntryStart(argc, argv) ||
!wxTheApp ||
!wxTheApp->CallOnInit())
{
return FALSE;
}
}
return TRUE;
}
bool CMyApp::OnInit()
{
return true;
};
BEGIN_EVENT_TABLE(MyDialog, wxDialog)
EVT_CLOSE(MyDialog::OnClose)
END_EVENT_TABLE()
void MyDialog::OnClose(wxCloseEvent &ev)
{
Close(true);
}
MyDialog::MyDialog(wxWindow* parent, const wxString& title )
: wxDialog(parent, -1, title, wxDefaultPosition, wxDefaultSize,wxDEFAULT_FRAME_STYLE|wxFRAME_NO_TASKBAR|wxFRAME_FLOAT_ON_PARENT)
{
}
MyDialog::~MyDialog()
{}
在调用dll的应用程序(wxFrame)中加入:
#include "1.h"
#pragma comment(lib,"1.lib")
在初始化函数中加入:
MyDialog *dlg = new MyDialog(frame);
dlg->Show();
程序运行后,产生一个Frame,在Frame上面产生一个Dialog ,
但是我去关闭Dialog却关不掉,如果直接关闭Frame,两个一起关掉,但是此应用程序的进程还是存在,并且CPU一直会耗到100%,这个问题研究
了好久都没成功,还望大侠们指点。
2009-11-09
wonderful3
__________________________________________________
赶快注册雅虎超大容量免费邮箱?
http://cn.mail.yahoo.com
No dispones del permiso necesario para enviar entradas.
De:
wei yongjian <weiyj... @yahoo.com>
Fecha: Mon, 9 Nov 2009 19:09:51 -0800 (PST)
Local: Lun 9 nov 2009 22:09
Asunto: Re: [wxChinese] 求助:关于调用wx写的动态库的问题
在
void MyDialog::OnClose(wxCloseEvent &ev)
{
Close(true);
}
中把Close(true); 去掉, Close会产生wxCloseEvent 事件, 所以CPU会100%, 另外加上 myparent->SetFocus();
// 关闭自己
Destroy();
即就是:
void MyDialog::OnClose(wxCloseEvent &ev)
{
// 在MyDialog增加wxWindow* myparent; 并在构造中 myparent = parent;
myparent->SetFocus();
// 关闭自己
Destroy();
}
________________________________
From: wonderful3 <wonderf... @126.com>
To: wxchinese <wxchinese@googlegroups.com>
Sent: Mon, November 9, 2009 8:06:29 PM
Subject: [wxChinese] 求助:关于调用wx写的动态库的问题
请教一下:
我用wx写了一个简单的dll动态库,代码如下:
<1.h>
#pragma once
#include "wx/wx.h"
#include "windows.h"
#ifdef FROMDLL_EXPORTS
#define FROMDLL_API __declspec(dllexport)
#else
#define FROMDLL_API __declspec(dllimport)
#endif
class wxDLLApp : public wxApp
{ public:
bool OnInit();
};
class __declspec(dllexport) MyDialog : public wxDialog
{
public:
MyDialog(wxWindow* parent=0, const wxString& title=_("HelloKity"));
~MyDialog();
protected:
void OnClose(wxCloseEvent& event);
DECLARE_EVENT_TABLE()
};
--------------------------------------------------------------------------- -
<.cpp>
#include <wx/wx.h>
#include <wx/string.h>
#include <wx/frame.h>
#include "1.h"
class CMyApp : public wxApp
{
public:
bool OnInit();
};
IMPLEMENT_APP_NO_MAIN(CMyApp)
DECLARE_APP(CMyApp)
BOOL APIENTRY DllMain(HMODULE Module,DWORD Reason,LPVOID)
{
if(Reason==DLL_PROCESS_DETACH)
{
wxEntryCleanup();
}
else if(Reason==DLL_PROCESS_ATTACH)
{
int argc = 0;
char** argv = NULL;
if(!wxEntryStart(argc, argv) ||
!wxTheApp ||
!wxTheApp->CallOnInit())
{
return FALSE;
}
}
return TRUE;
}
bool CMyApp::OnInit()
{
return true;
};
BEGIN_EVENT_TABLE(MyDialog, wxDialog)
EVT_CLOSE(MyDialog::OnClose)
END_EVENT_TABLE()
void MyDialog::OnClose(wxCloseEvent &ev)
{
Close(true);
}
MyDialog::MyDialog(wxWindow* parent, const wxString& title )
: wxDialog(parent, -1, title, wxDefaultPosition, wxDefaultSize,wxDEFAULT_FRAME_STYLE|wxFRAME_NO_TASKBAR|wxFRAME_FLOAT_ON_PAR ENT)
{
}
MyDialog::~MyDialog()
{}
在调用dll的应用程序(wxFrame)中加入:
#include "1.h"
#pragma comment(lib,"1.lib")
在初始化函数中加入:
MyDialog *dlg = new MyDialog(frame);
dlg->Show();
程序运行后,产生一个Frame,在Frame上面产生一个Dialog , 但是我去关闭Dialog却关不掉,如果直接关闭Frame,两个一起关掉,但是此应用程序的进程还是存在,并且CPU一直会耗到100%,这个问题研究了好久 都没成功,还望大侠们指点。
2009-11-09 ________________________________
wonderful3
__________________________________________________
赶快注册雅虎超大容量免费邮箱?
http://cn.mail.yahoo.com
No dispones del permiso necesario para enviar entradas.
De:
"wonderful3" <wonderf... @126.com>
Fecha: Tue, 10 Nov 2009 15:26:35 +0800
Local: Mart 10 nov 2009 02:26
Asunto: Re: [wxChinese] Re: 求助:关于调用wx写的动态库的问题
谢谢了,但是按照你的方法写出来后,程序一运行就崩溃掉了。
2009-11-10
wonderful3
发件人: wei yongjian 发送时间: 2009-11-10 11:10:07 收件人: wxchinese 抄送: 主题: [wxChinese] Re: 求助:关于调用wx写的动态库的问题
在
void MyDialog::OnClose(wxCloseEvent &ev) { Close(true);
}
中把Close(true); 去掉, Close会产生wxCloseEvent 事件, 所以CPU会100%, 另外加上 myparent->SetFocus();
// 关闭自己
Destroy();
即就是:
void MyDialog::OnClose(wxCloseEvent &ev) { // 在MyDialog增加wxWindow* myparent; 并在构造中 myparent = parent;
myparent->SetFocus();
// 关闭自己
Destroy();
}
From: wonderful3 <wonderf... @126.com>
To: wxchinese <wxchinese@googlegroups.com>
Sent: Mon, November 9, 2009 8:06:29 PM
Subject: [wxChinese] 求助:关于调用wx写的动态库的问题
请教一下:
我用wx写了一个简单的dll动态库,代码如下:
<1.h>
#pragma once #include "wx/wx.h" #include "windows.h" #ifdef FROMDLL_EXPORTS #define FROMDLL_API __declspec(dllexport) #else #define FROMDLL_API __declspec(dllimport) #endif class wxDLLApp : public wxApp { public: bool OnInit();
};
class __declspec(dllexport) MyDialog : public wxDialog { public: MyDialog(wxWindow* parent=0, const wxString& title=_("HelloKity")); ~MyDialog();
protected: void OnClose(wxCloseEvent& event); DECLARE_EVENT_TABLE() };
--------------------------------------------------------------------------- -
<.cpp>
#include <wx/wx.h>
#include <wx/string.h> #include <wx/frame.h> #include "1.h"
class CMyApp : public wxApp { public: bool OnInit(); };
IMPLEMENT_APP_NO_MAIN(CMyApp) DECLARE_APP(CMyApp) BOOL APIENTRY DllMain(HMODULE Module,DWORD Reason,LPVOID) { if(Reason==DLL_PROCESS_DETACH) { wxEntryCleanup(); } else if(Reason==DLL_PROCESS_ATTACH) { int argc = 0; char** argv = NULL; if(!wxEntryStart(argc, argv) || !wxTheApp || !wxTheApp->CallOnInit()) { return FALSE; } } return TRUE;
}
bool CMyApp::OnInit() {
return true; };
BEGIN_EVENT_TABLE(MyDialog, wxDialog) EVT_CLOSE(MyDialog::OnClose) END_EVENT_TABLE() void MyDialog::OnClose(wxCloseEvent &ev) { Close(true); }
MyDialog::MyDialog(wxWindow* parent, const wxString& title ) : wxDialog(parent, -1, title, wxDefaultPosition, wxDefaultSize,wxDEFAULT_FRAME_STYLE|wxFRAME_NO_TASKBAR|wxFRAME_FLOAT_ON_PAR ENT) { }
MyDialog::~MyDialog()
{}
在调用dll的应用程序(wxFrame)中加入:
#include "1.h"
#pragma comment(lib,"1.lib")
在初始化函数中加入:
MyDialog *dlg = new MyDialog(frame);
dlg->Show();
程序运行后,产生一个Frame,在Frame上面产生一个Dialog , 但是我去关闭Dialog却关不掉,如果直接关闭Frame,两个一起关掉,但是此应用程序的进程还是存在,并且CPU一直会耗到100%,这个问题研究了好久 都没成功,还望大侠们指点。
2009-11-09
wonderful3
__________________________________________________
赶快注册雅虎超大容量免费邮箱?
http://cn.mail.yahoo.com
No dispones del permiso necesario para enviar entradas.