锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
濡備笅:
{
return no;
}
tidySetReportFilter(doc,(TidyReportFilter)cb);
tidyBufInit(&buf);
tidyNodeGetText(doc,body,&buf);
printf("text:%s",buf.bp);
tidyBufFree(&buf);
]]>
#include <log4cplus/helpers/loglog.h>
using namespace std;
using namespace log4cplus::helpers;
void print_message()
{
cout << "Entering print_message()
" << endl;
LogLog::getLogLog()->debug(LOG4CPLUS_TEXT("This is a Debug statement
"));
LogLog::getLogLog()->warn(LOG4CPLUS_TEXT("This is a Warning
"));
LogLog::getLogLog()->error(LOG4CPLUS_TEXT("This is a Error
"));
cout << "Exiting print_message()
" << endl << endl;
}
int main()
{
print_message();
cout << "Turning on debug
" << endl;
LogLog::getLogLog()->setInternalDebugging(true);
print_message();
cout << "Turning on quiet mode
" << endl;
LogLog::getLogLog()->setQuietMode(true);
print_message();
system("pause");
return 0;
}
#include "log4cplus/consoleappender.h"
#include "log4cplus/loglevel.h"
#include <iomanip>
using namespace std;
using namespace log4cplus;
int main()
{
SharedAppenderPtr append_1(new ConsoleAppender());
append_1->setName(LOG4CPLUS_TEXT("First"));
Logger::getRoot().addAppender(append_1);
Logger root = Logger::getRoot();
Logger test = Logger::getInstance(LOG4CPLUS_TEXT("test"));
LOG4CPLUS_DEBUG(root,
"This is"
<< " a reall"
<< "y long message." << endl
<< "Just testing it out" << endl
<< "What do you think?");
test.setLogLevel(NOT_SET_LOG_LEVEL);
LOG4CPLUS_DEBUG(test, "This is a bool: " << true);
LOG4CPLUS_INFO(test, "This is a char: " << 'x');
LOG4CPLUS_INFO(test, "This is a short: " << (short)-100);
LOG4CPLUS_INFO(test, "This is a unsigned short: " << (unsigned short)100);
LOG4CPLUS_INFO(test, "This is a int: " << (int)1000);
LOG4CPLUS_INFO(test, "This is a unsigned int: " << (unsigned int)1000);
LOG4CPLUS_INFO(test, "This is a long(hex): " << hex << (long)100000000);
LOG4CPLUS_INFO(test, "This is a unsigned long: " << (unsigned long)100000000);
LOG4CPLUS_WARN(test, "This is a float: " << (float)1.2345);
LOG4CPLUS_ERROR(test,
"This is a double: "
<< setprecision(15)
<< (double)1.2345234234);
LOG4CPLUS_FATAL(test,
"This is a long double: "
<< setprecision(15)
<< (long double)123452342342.342);
system("pause");
return 0;
}
#include <log4cplus/fileappender.h>
#include <log4cplus/layout.h>
#include <log4cplus/ndc.h>
#include <log4cplus/helpers/loglog.h>
using namespace log4cplus;
const int LOOP_COUNT = 20000;
int main()
{
helpers::LogLog::getLogLog()->setInternalDebugging(true);
SharedAppenderPtr append_1(new RollingFileAppender(LOG4CPLUS_TEXT("Test.log"),5*1024,5));
append_1->setName(LOG4CPLUS_TEXT("LOG4PLUS"));
append_1->setLayout(std::auto_ptr<Layout>(new TTCCLayout()));
Logger::getRoot().addAppender(append_1);
Logger root = Logger::getRoot();
Logger test = Logger::getInstance(LOG4CPLUS_TEXT("test"));
Logger subTest = Logger::getInstance(LOG4CPLUS_TEXT("test.subtest"));
for(int i=0; i<LOOP_COUNT; ++i)
{
NDCContextCreator _context(LOG4CPLUS_TEXT("loop"));
LOG4CPLUS_DEBUG(subTest, "Entering loop #" << i);
}
return 0
}
鍑犵偣璇存槑:
1.setInternalDebuging 鏄惎鐢ㄥ唴閮ㄨ皟璇曟棩蹇楋紝涓嶈繃鍏蜂綋浣滅敤涓嶆槸寰堟槑紜?br />2.Appender鏄疄鐜版棩蹇楄緭鍑虹殑絳栫暐鎻忚堪
涓鑸儏鍐典笅錛屽弬鑰冧互涓婁緥瀛愬氨瓚沖浜?br />
]]>
榪欐鐨凣UI搴撴垜浼氶噰鐢ㄧ被浼糋UICHAN鐨勬柟寮忥紝鍏蜂綋鐨凣UI騫朵笉渚濊禆浜庣壒瀹氱殑鍥懼艦鎺ュ彛錛岃屾槸閲囧彇鎻掍歡鐨勬柟寮忓姩鎬佸姞杞斤紝榪欐牱鏈夊姪浜庢彁楂樺叾浣跨敤鐨勫箍搴?br>搴旇鍖呭惈涓涓狦UIRender
鍙﹀GUI搴撴秹鍙婇潰姣旇緝騫匡紝闇瑕佹湁澶ч噺闄勫姞鐨勬暟鎹粨鏋勬瘮濡俋ML錛屽浘褰㈠鐞嗭紝鍚戦噺錛屾彃浠訛紝鍩烘湰瀵硅薄錛屾棩蹇楃瓑銆傛垜浠簲璇ュ啀鍔犱竴涓緟鍔╁簱
浜庢槸鏈変竴涓彨鍋歎til鐨勪笢瑗?br>
鍏舵鎴戜滑涓昏鐨凣UI搴撶被
榪欎釜鏄牳蹇?br>鎴戞殏鏃剁粰浠栬搗涓悕瀛楀彨coregui鍚?br>榪欎釜鏄繖涓狦Ui鐨勬牳蹇?br>鍏跺姛鑳介櫎浜嗕竴鑸殑GUI鎺т歡瀵硅薄涔嬪悗榪樺簲璇ユ湁鎺т歡宸ュ巶錛屾帶浠舵睜(綆$悊鍣?錛屾帶浠舵暟鎹覆琛屽寲錛屾帶浠跺竷灞錛屾帶浠剁紪杈戯紝鎺т歡鍔ㄦ佸姞杞斤紝鑴氭湰澶勭悊絳夊姛鑳斤紙鎯蟲兂鍔熻兘榪樻瘮杈冨-涓嶈繃鎬繪瘮涔嬪墠鍋氱殑娓告垙寮曟搸閲忚灝忓緢澶氾級
鍒嗗潡灝辮繖涔堝嚑涓簡
鍦ㄥ紑鍙戣繃紼嬩腑錛屾垜浼氫竴涓竴涓狦UI瀵硅薄閮借創(chuàng)涓婃潵錛岀劧鍚庤鏄庝負浠涔堣榪欐牱鍋氾紝騫墮檮涓婂彲鑳藉搴旂殑璁捐妯″紡錛堣媧誨媧葷敤(鈯檝鈯??錛?br>
PS:鍏跺疄涓涓瘮杈冨ソ鐨勫姙娉曟槸鍊熷姪浜嶶ML錛屽彲鏄垜鐜板湪蹇樹簡榪欏嚑涓瓧姣嶅浣曞啓錛屾湁絀哄瀛﹀惂
]]>
涓嶈繃鎴戣繖閲屼婦涓涓湪GUI璁捐榪囩▼鐨勪緥瀛?br>
鍋囧涓涓潰鏉夸笂鐨勫悓璐ㄦ寜閽紝浠栦滑浠呮枃鏈笉鍚岋紝浠h〃鐨勯昏緫涓嶅悓錛屽叾浠栦俊鎭槸瀹屽叏涓鑷寸殑錛屾瘮濡傜毊鑲わ紝杈規(guī)錛屽ぇ灝忕瓑
鎸夌収涓鑸柟娉曞彲鑳戒細榪欐牱鏋勯犻潰鏉?br>
btn1->SetSize(..);
btn1->SetBorder(..);
btn1->SetListener(..);
btn1->SetVisible(true);
btn1->SetParent(panel);
btn1->SetColor(
)
Button* btn2 =..
褰撶劧榪樻湁鍏朵粬鎸夐挳:)
鍊熷姪鍘熷瀷妯″紡
鍙互澶уぇ鐨勭畝鍖?
姣斿:
Button *btn2= btn1->Clone();
Button *btn3= btn1->Clone();
Button *btn4= btn1->Clone();
鐒跺悗鍙璁劇疆鍚勪釜鎸夐挳瀵瑰簲鐨勬枃鏈嵆鍙?/span>
緇欏璞″鍔燙lone鎺ュ彛鍜屽叾瀹炵幇鍗沖彲
姣斿:
{
public:
virtual AbstractWidget* Clone() = 0;

};
闇瑕佽鏄庣殑鏄師鍨嬩竴鑸嬌鐢ㄧ殑鏄祬鎷瘋礉
]]>
]]>