visualc++2008中怎么新建wxWidgets工程啊?

这是wxWidgets论坛的中文版本。在这里,您可以用您的母语汉语讨论上面任一子论坛所涉及的所有关于wxWidgets的话题。欢迎大家参与到对有价值的帖子的中英互译工作中来!
Post Reply
lwy
In need of some credit
In need of some credit
Posts: 1
Joined: Tue Mar 03, 2009 5:58 am

visualc++2008中怎么新建wxWidgets工程啊?

Post by lwy » Tue Mar 03, 2009 6:03 am

我运行了一个程序,怎么都不行啊!求救。
程序如下:
# include "wx/wx.h"
# include " mondrian.xpm "
// 定义应用程序类
class MyApp : public wxApp
{
public :
// 这个函数将会在程序启动的时候被调用
virtual bool OnInit ();
};
// 定义主窗口类
class MyFrame : public wxFrame
{
public :
// 主窗口类的构造函数
MyFrame ( const wxString & title );
// 事件处理函数
void OnQuit ( wxCommandEvent & event );
void OnAbout ( wxCommandEvent & event );
private :
// 声明事件表
DECLARE EVENT TABLE ()
};
// 有了这一行就可以使用 MyApp & wxGetApp了()
DECLARE APP ( MyApp )
// 告诉主应用程序是哪个类wxWidgets
IMPLEMENT APP ( MyApp )
// 初始化程序
bool MyApp :: OnInit ()
{
// 创建主窗口
MyFrame ∗frame = new MyFrame ( wxT (" Minimal wxWidgets App " ));
// 显示主窗口
frame−>Show ( true );
// 开始事件处理循环
return true ;
}
// 类的事件表MyFrame
BEGIN EVENT TABLE ( MyFrame , wxFrame )
EVT MENU ( wxID ABOUT , MyFrame :: OnAbout )
EVT MENU ( wxID EXIT , MyFrame :: OnQuit )
END EVENT TABLE ()
void MyFrame :: OnAbout ( wxCommandEvent & event )
{
wxString msg ;
msg . Printf ( wxT (" Hello and welcome to %s"),
wxVERSION STRING );
wxMessageBox (msg , wxT (" About Minimal "),
wxOK | wxICON INFORMATION , this );
}
void MyFrame :: OnQuit ( wxCommandEvent & event )
{
// 释放主窗口
Close ();
}

MyFrame :: MyFrame ( const wxString & title ): wxFrame (NULL , wxID ANY , title )
{
// 设置窗口图标
SetIcon ( wxIcon ( mondrian xpm ));
// 创建菜单条
wxMenu ∗ fileMenu = new wxMenu ;
// 添加“关于”菜单项
wxMenu ∗ helpMenu = new wxMenu ;
helpMenu−>Append ( wxID ABOUT , wxT ("& About ...\ tF1 "),
wxT (" Show about dialog " ));
fileMenu−>Append ( wxID EXIT , wxT ("E& xit\tAlt−X"),
wxT (" Quit this program " ));
// 将菜单项添加到菜单条中
wxMenuBar ∗ menuBar = new wxMenuBar ();
menuBar−>Append ( fileMenu , wxT ("& File " ));
menuBar−>Append ( helpMenu , wxT ("& Help " ));
// 然后将菜单条放置在主窗口上...
SetMenuBar ( menuBar );
// 创建一个状态条来让一切更有趣些。
CreateStatusBar (2);
SetStatusText ( wxT (" Welcome to wxWidgets !" ));
}

mythcpp
In need of some credit
In need of some credit
Posts: 2
Joined: Tue Aug 11, 2009 2:18 pm

Post by mythcpp » Fri Aug 14, 2009 3:40 pm

这是书的例子,你的错误如下:
你的环境没设置好,在保证下载的开发包正常编译的情况下,在VS2008环境中的项目属性设置如下:
设置项: C/C++/常规/附加包含目录
设置内容: C:\wxWidgets-2.8.10\include;C:\wxWidgets-2.8.10\include\msvc

设置项: C/C++/预处理器/预处理器定义
设置内容:WIN32;_DEBUG;_WINDOWS;__WXMSW__;__WXDEBUG__

设置项: C/C++/代码生成/运行库
设置内容: 多线程DLL (/MD)

设置项: 链接器/常规/附加库目录
设置内容: C:\wxWidgets-2.8.10\lib\vc_lib

设置项: 链接器/输入/附加依赖项
设置内容:kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib

comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib

opengl32.lib

错误处理:
一、打不到头文件 wx/wx.h
解决方案:查找以上路径设置,查看安装包的路径如:C:\wxWidgets

二、找不到 mondrian.xpm
解决方案: 此文件是一个图形资源,COPY(拷贝)一个mondrian.xpm放在你的工程下面,跟你的CPP文件同一

级目录!

三、error LNK2005: _exit 已经在 LIBCMTD.lib(crt0dat.obj) 中定义
设置工程属性:C/C++/代码生成/运行库 这一项的选项为多线程DLL (/MD),如还有错误,可以试选其

它几项。


Code: Select all

//请认真检查你的代码,N多的COPY错误,修正你的代码如下:
# include  "wx/wx.h" 
# include  "mondrian.xpm" 
// 定义应用程序类 
class MyApp : public wxApp 
{ 
public : 
	// 这个函数将会在程序启动的时候被调用 
	virtual bool OnInit (); 
}; 
// 定义主窗口类 
class MyFrame : public wxFrame 
{ 
public : 
	// 主窗口类的构造函数 
	MyFrame ( const wxString & title ); 
	// 事件处理函数 
	void OnQuit ( wxCommandEvent & event ); 
	void OnAbout ( wxCommandEvent & event ); 
private:
	// 声明事件表 
	DECLARE_EVENT_TABLE() 
}; 
// 有了这一行就可以使用 MyApp & wxGetApp了() 
DECLARE_APP( MyApp ) 
// 告诉主应用程序是哪个类wxWidgets 
IMPLEMENT_APP( MyApp ) 
// 初始化程序 
bool MyApp::OnInit () 
{ 
	// 创建主窗口 
	MyFrame *frame = new MyFrame ( wxT (" Minimal wxWidgets App " )); 
	// 显示主窗口 
	frame->Show ( true ); 
	// 开始事件处理循环 
	return true ; 
} 
// 类的事件表MyFrame 
BEGIN_EVENT_TABLE( MyFrame , wxFrame ) 
EVT_MENU( wxID_ABOUT , MyFrame :: OnAbout ) 
EVT_MENU( wxID_EXIT , MyFrame :: OnQuit ) 
END_EVENT_TABLE () 
void MyFrame :: OnAbout ( wxCommandEvent & event ) 
{ 
	wxString msg ; 
	msg . Printf ( wxT (" Hello and welcome to %s"), 
		wxVERSION_STRING ); 
	wxMessageBox (msg , wxT (" About Minimal "), 
		wxOK | wxICON_INFORMATION , this ); 
} 
void MyFrame :: OnQuit( wxCommandEvent & event ) 
{ 
	// 释放主窗口 
	Close (); 
} 

MyFrame :: MyFrame ( const wxString & title ): wxFrame (NULL , wxID_ANY , title ) 
{ 
	// 设置窗口图标 
	SetIcon ( wxIcon ( mondrian_xpm )); 
	// 创建菜单条 
	wxMenu *fileMenu = new wxMenu ; 
	// 添加“关于”菜单项 
	wxMenu *helpMenu = new wxMenu ; 
	helpMenu->Append ( wxID_ABOUT , wxT("& About ...\ tF1 "), 
		wxT (" Show about dialog " )); 
	fileMenu->Append ( wxID_EXIT , wxT ("E& xit\tAlt−X"), 
		wxT (" Quit this program " )); 
	// 将菜单项添加到菜单条中 
	wxMenuBar * menuBar = new wxMenuBar (); 
	menuBar->Append ( fileMenu , wxT ("& File " )); 
	menuBar->Append ( helpMenu , wxT ("& Help " )); 
	// 然后将菜单条放置在主窗口上... 
	SetMenuBar ( menuBar ); 
	// 创建一个状态条来让一切更有趣些。 
	CreateStatusBar (2); 
	SetStatusText ( wxT (" Welcome to wxWidgets !" )); 
}
[/code]

ccnyou
Knows some wx things
Knows some wx things
Posts: 33
Joined: Fri Sep 28, 2012 8:08 am

Re: visualc++2008中怎么新建wxWidgets工程啊?

Post by ccnyou » Sat Jan 26, 2013 9:19 am

这里有个我做的VS2008的应用程序向导
http://blog.csdn.net/ccnyou/article/details/8001353
挺方便的

手工创建的话参考楼上

Post Reply