您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ AddButton函数代码示例

51自学网 2021-06-01 19:40:33
  C++
这篇教程C++ AddButton函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中AddButton函数的典型用法代码示例。如果您正苦于以下问题:C++ AddButton函数的具体用法?C++ AddButton怎么用?C++ AddButton使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了AddButton函数的25个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: LOG

void CNativeToolbar::addToolbarButton(CToolbarBtn& oButton, int nPos){    LOG(INFO) + "addToolbarButton: " + oButton.toString();    TBBUTTON btn = {0};    btn.iBitmap = I_IMAGENONE;    if ( oButton.isSeparator() )    {        btn.fsStyle = TBSTYLE_SEP;        if ( oButton.m_nItemWidth )            btn.iBitmap = oButton.m_nItemWidth;        else        {            CSize size;            m_listImages.GetIconSize(size);            btn.iBitmap = size.cx;            oButton.m_nItemWidth = btn.iBitmap;        }    }else    {        btn.iString = (INT_PTR)oButton.m_strLabelW.c_str();        btn.fsStyle = TBSTYLE_BUTTON|TBSTYLE_AUTOSIZE;        btn.fsState = TBSTATE_ENABLED;        btn.idCommand = ID_CUSTOM_TOOLBAR_ITEM_FIRST + nPos;        if ( oButton.m_hImage )        {            btn.iBitmap = m_listImages.Add(oButton.m_hImage, m_rgbMaskColor);            //btn.iBitmap = AddBitmap(1,oButton.m_hImage);        }    }    BOOL bRes = AddButton(&btn);    if ( !bRes )        LOG(ERROR) + "Error";}
开发者ID:Aerodynamic,项目名称:rhodes,代码行数:39,


示例2: AddButton

//================================================================================================================void MenuEditorSystem::OnMouseMove(WPARAM btnState, int x, int y){	// Start a left button drag of an item	if ((btnState & MK_LBUTTON) != 0)	{		m_SelectedMousePos.x = x;		m_SelectedMousePos.y = y;				m_leftButtonDown = true;				// If applicable, Add a button		if (BetterString(m_SelectedButtonImageName) != "")		{			AddButton();		}				// If applicable, Add a text		AddText();	}	else	{		m_leftButtonDown = false;	}		m_MouseMovePos = SnapToGrid(x, y);	// Move a button or text display cover	if (editType == ET_Button && (action == A_Place || action == A_Move))	{		if (m_displaySpriteCover == NULL)		{			if (BetterString(m_SelectedButtonImageName) != "")			{				m_displaySpriteCover = new Sprite(m_D3DSystem);				m_displaySpriteCover->Initialize(m_mainGameDirectory->m_menu_sprites_path, m_SelectedButtonImageName, XMFLOAT3(m_MouseMovePos.x, m_MouseMovePos.y, 0), 80, 30, PhysicsType::STATIC);			}		}	}}
开发者ID:henriyl,项目名称:ZShadeSandboxOld,代码行数:40,


示例3: InitCommonControls

void CAddress::Create(HWND hParent, long ID, HINSTANCE hInst){	InitCommonControls();	m_hInst = hInst;	m_hParent = hParent;	m_hAddress = CreateWindow(TOOLBARCLASSNAME, NULL, WS_CHILD | WS_VISIBLE | TBSTYLE_LIST,		0, 100, 100, 200,		m_hParent, (HMENU) ID, m_hInst, NULL);	m_nID = ID;	SetButtonImages();	AddNonButtonControl(_T("STATIC"), _T("Address"), WS_CHILD | WS_VISIBLE, 			IDC_ADDRESS_STATIC, 50, 50, 0, IDC_ADDRESS_STATIC, 3);	HFONT hFont = (HFONT) GetStockObject(DEFAULT_GUI_FONT);	SendMessage(GetDlgItem(m_hAddress, IDC_ADDRESS_STATIC), WM_SETFONT, (WPARAM) hFont, TRUE);	RECT main;	GetWindowRect(m_hParent, &main);	AddNonButtonControl(_T("EDIT"), NULL, WS_CHILD | WS_VISIBLE, 		IDC_ADDRESS_EDIT, 900, 20, 1, IDC_ADDRESS_EDIT, 1);	SendMessage(GetDlgItem(m_hAddress, IDC_ADDRESS_EDIT), WM_SETFONT, (WPARAM) hFont, TRUE);	AddButton(TBSTATE_ENABLED, BTNS_BUTTON, 0 , IDC_ADDRESS_GO, _T("Go"), 0);}
开发者ID:Slifer7,项目名称:demo,代码行数:23,


示例4: Panel

DlgCollision::DlgCollision(Actor *actor, bool bCollision)	: Panel("DlgCollision", (GameControl::Get()->Width() - WIDTH)/2, 				          (GameControl::Get()->Height() - (bCollision?(HEIGHT + 55):HEIGHT))/2,						  WIDTH, bCollision?(HEIGHT + 55):HEIGHT){	SetModal();	eventActor = actionActor = actor;	this->bCollision = bCollision;		Text *text;	Button *button;	Actor *add;	int y;	//Title	text = AddText(bCollision?"Collision Event":"Collision Finish Event", CENTER_TEXT, 5);	y = DrawHLine(text->Down() + 2);	//Body	if(bCollision)	{		SetToolTip(TIP_DLG_COLLISION);		text = AddText("       On: ", 10, y);		listSide = AddListPop(text->Right() + 2, text->Top(), 128, 0, LS_SIDE); listSide->SetToolTip(TIP_DLG_COLLISION_SIDE);		text = AddText(" Of Actor: ", 10, listSide->Down() + 2);		listActor = AddListPop(text->Right() + 2, text->Top(), 128, 0, LS_ACTOR); listActor->SetToolTip(TIP_DLG_COLLISION_ACTOR);		text = AddText("        Repeat this event/nwhile actor is colliding: ", 10, listActor->Down() + 2);		listType = AddListPop(listActor->Right() - 40, text->Top() + 10, 40, 0, LS_TYPE); listType->SetToolTip(TIP_DLG_COLLISION_REPEAT);		listType->AddText("Yes");		listType->AddText("No");		listType->SetItem("No");		listSide->AddText("Any Side");		listSide->AddText("Top Side");		listSide->AddText("Bottom Side");		listSide->AddText("Left Side");		listSide->AddText("Right Side");		listSide->AddText("Top or Bottom Side");		listSide->AddText("Left or Right Side");		listSide->SetItem("Any Side");		side = ANY_SIDE;		y = listType->Down() + 2;	}	else	{		SetToolTip(TIP_DLG_COLLISION_FINISH);		text = AddText("    Actor: ", 10, y);		listActor = AddListPop(text->Right() + 2, text->Top(), 128, 0, LS_ACTOR); listActor->SetToolTip(TIP_DLG_COLLISION_ACTOR);		y = listActor->Down() + 2;	}			//Close	y = DrawHLine(y);	if(Action::inNewActivationEvent())	{		add = AddButton("Choose Actor", 25, y, 0, 0, LS_ACTION); ((Button *)add)->SetToolTip(TIP_ACTIVATIONEVENT_CHOOSE);	}	else if(Action::getEditAction())	{		add = AddButton("Edit Action", (WIDTH-135)/2 - 12, y, 0, 0, LS_ACTION); ((Button *)add)->SetToolTip(TIP_ACTION_EDIT);	}	else	{		add = AddListPop(30, y, 85, 0, LS_ACTION, "Add Action"); ((ListPop *)add)->SetToolTip(TIP_ADDACTION);			Action::Populate((ListPop *)add);	}	if(Action::getEditAction())	{		button = AddButton("Cancel", add->Right() + 10, y, 0, 0, BT_CLOSE); if(!Action::inNewActivationEvent()) button->SetToolTip(TIP_ACTION_CANCEL);		}	else	{		button = AddButton("Close", add->Right() + 10, y, 0, 0, BT_CLOSE); if(!Action::inNewActivationEvent()) button->SetToolTip(TIP_ACTION_CLOSE);		}		 	GameControl::Get()->PopulateActors(listActor);	if(!Tutorial::IsCompatible(VERSION_OUT_OF_VISION_OPTIMIZATION))	{		//Set default only in old tutorials		listActor->SetItem(actionActor->getCloneIndex()?actionActor->getCloneName():actionActor->getActorName());		}	listActor->AddText(ANY_ACTOR);//.........这里部分代码省略.........
开发者ID:cubemoon,项目名称:game-editor,代码行数:101,


示例5: switch

void CBkSafeMsgBox::_MakeButtons(){    if ((MB_BK_CUSTOM_BUTTON & m_uType) == MB_BK_CUSTOM_BUTTON)        return;    m_lstButton.RemoveAll();    switch (MB_TYPEMASK & m_uType)    {    case MB_OK:        AddButton(BkString::Get(IDS_MSGBOX_OK), IDOK);        break;    case MB_OKCANCEL:        AddButton(BkString::Get(IDS_MSGBOX_OK), IDOK);        AddButton(BkString::Get(IDS_MSGBOX_CANCEL), IDCANCEL);        break;    case MB_ABORTRETRYIGNORE:        AddButton(BkString::Get(IDS_MSGBOX_ABORT), IDABORT);        AddButton(BkString::Get(IDS_MSGBOX_RETRY), IDRETRY);        AddButton(BkString::Get(IDS_MSGBOX_IGNORE), IDIGNORE);        break;    case MB_YESNOCANCEL:        AddButton(BkString::Get(IDS_MSGBOX_YES), IDYES);        AddButton(BkString::Get(IDS_MSGBOX_NO), IDNO);        AddButton(BkString::Get(IDS_MSGBOX_CANCEL), IDCANCEL);        break;    case MB_YESNO:        AddButton(BkString::Get(IDS_MSGBOX_YES), IDYES);        AddButton(BkString::Get(IDS_MSGBOX_NO), IDNO);        break;    case MB_RETRYCANCEL:        AddButton(BkString::Get(IDS_MSGBOX_RETRY), IDRETRY);        AddButton(BkString::Get(IDS_MSGBOX_CANCEL), IDCANCEL);        break;#   if(WINVER >= 0x0500)    case MB_CANCELTRYCONTINUE:        AddButton(BkString::Get(IDS_MSGBOX_CANCEL), IDCANCEL);        AddButton(BkString::Get(IDS_MSGBOX_RETRY), IDRETRY);        AddButton(BkString::Get(IDS_MSGBOX_CONTINUE), IDCONTINUE);        break;#   endif /* WINVER >= 0x0500 */    }}
开发者ID:6520874,项目名称:pcmanager,代码行数:43,


示例6: AddCategory

void CGUIDialogAudioSubtitleSettings::InitializeSettings(){  CGUIDialogSettingsManualBase::InitializeSettings();  CSettingCategory *category = AddCategory("audiosubtitlesettings", -1);  if (category == NULL)  {    CLog::Log(LOGERROR, "CGUIDialogAudioSubtitleSettings: unable to setup settings");    return;  }  // get all necessary setting groups  CSettingGroup *groupAudio = AddGroup(category);  if (groupAudio == NULL)  {    CLog::Log(LOGERROR, "CGUIDialogAudioSubtitleSettings: unable to setup settings");    return;  }  CSettingGroup *groupSubtitles = AddGroup(category);  if (groupSubtitles == NULL)  {    CLog::Log(LOGERROR, "CGUIDialogAudioSubtitleSettings: unable to setup settings");    return;  }  CSettingGroup *groupSaveAsDefault = AddGroup(category);  if (groupSaveAsDefault == NULL)  {    CLog::Log(LOGERROR, "CGUIDialogAudioSubtitleSettings: unable to setup settings");    return;  }  bool usePopup = g_SkinInfo->HasSkinFile("DialogSlider.xml");  CVideoSettings &videoSettings = CMediaSettings::GetInstance().GetCurrentVideoSettings();    if (g_application.m_pPlayer->HasPlayer())  {    g_application.m_pPlayer->GetAudioCapabilities(m_audioCaps);    g_application.m_pPlayer->GetSubtitleCapabilities(m_subCaps);  }  // register IsPlayingPassthrough condition  m_settingsManager->AddCondition("IsPlayingPassthrough", IsPlayingPassthrough);  CSettingDependency dependencyAudioOutputPassthroughDisabled(SettingDependencyTypeEnable, m_settingsManager);  dependencyAudioOutputPassthroughDisabled.Or()    ->Add(CSettingDependencyConditionPtr(new CSettingDependencyCondition(SETTING_AUDIO_PASSTHROUGH, "false", SettingDependencyOperatorEquals, false, m_settingsManager)))    ->Add(CSettingDependencyConditionPtr(new CSettingDependencyCondition("IsPlayingPassthrough", "", "", true, m_settingsManager)));  SettingDependencies depsAudioOutputPassthroughDisabled;  depsAudioOutputPassthroughDisabled.push_back(dependencyAudioOutputPassthroughDisabled);  m_dspEnabled = CServiceBroker::GetSettings().GetBool(CSettings::SETTING_AUDIOOUTPUT_DSPADDONSENABLED);  // audio settings  // audio volume setting  m_volume = g_application.GetVolume(false);  CSettingNumber *settingAudioVolume = AddSlider(groupAudio, SETTING_AUDIO_VOLUME, 13376, 0, m_volume, 14054, VOLUME_MINIMUM, VOLUME_MAXIMUM / 100.0f, VOLUME_MAXIMUM);  settingAudioVolume->SetDependencies(depsAudioOutputPassthroughDisabled);  static_cast<CSettingControlSlider*>(settingAudioVolume->GetControl())->SetFormatter(SettingFormatterPercentAsDecibel);  if (m_dspEnabled)    AddButton(groupAudio, SETTING_AUDIO_DSP, 24136, 0);  // audio volume amplification setting  if (SupportsAudioFeature(IPC_AUD_AMP) && !m_dspEnabled)  {    CSettingNumber *settingAudioVolumeAmplification = AddSlider(groupAudio, SETTING_AUDIO_VOLUME_AMPLIFICATION, 660, 0, videoSettings.m_VolumeAmplification, 14054, VOLUME_DRC_MINIMUM * 0.01f, (VOLUME_DRC_MAXIMUM - VOLUME_DRC_MINIMUM) / 6000.0f, VOLUME_DRC_MAXIMUM * 0.01f);    settingAudioVolumeAmplification->SetDependencies(depsAudioOutputPassthroughDisabled);  }  // audio delay setting  if (SupportsAudioFeature(IPC_AUD_OFFSET) && !m_dspEnabled)  {    CSettingNumber *settingAudioDelay = AddSlider(groupAudio, SETTING_AUDIO_DELAY, 297, 0, videoSettings.m_AudioDelay, 0, -g_advancedSettings.m_videoAudioDelayRange, 0.025f, g_advancedSettings.m_videoAudioDelayRange, 297, usePopup);    static_cast<CSettingControlSlider*>(settingAudioDelay->GetControl())->SetFormatter(SettingFormatterDelay);  }    // audio stream setting  if (SupportsAudioFeature(IPC_AUD_SELECT_STREAM))    AddAudioStreams(groupAudio, SETTING_AUDIO_STREAM);  // audio output to all speakers setting  //! @todo remove this setting  if (SupportsAudioFeature(IPC_AUD_OUTPUT_STEREO) && !m_dspEnabled)    AddToggle(groupAudio, SETTING_AUDIO_OUTPUT_TO_ALL_SPEAKERS, 252, 0, videoSettings.m_OutputToAllSpeakers);  // audio digital/analog setting  if (SupportsAudioFeature(IPC_AUD_SELECT_OUTPUT))  {    m_passthrough = CServiceBroker::GetSettings().GetBool(CSettings::SETTING_AUDIOOUTPUT_PASSTHROUGH);    AddToggle(groupAudio, SETTING_AUDIO_PASSTHROUGH, 348, 0, m_passthrough);  }  // subtitle settings  m_subtitleVisible = g_application.m_pPlayer->GetSubtitleVisible();  // subtitle enabled setting  AddToggle(groupSubtitles, SETTING_SUBTITLE_ENABLE, 13397, 0, m_subtitleVisible);  // subtitle delay setting  if (SupportsSubtitleFeature(IPC_SUBS_OFFSET))//.........这里部分代码省略.........
开发者ID:Elzevir,项目名称:xbmc,代码行数:101,


示例7: AddButton

MultiButton::SubButton& DropGrid::AddEdit(const Callback &cb){	return AddButton(BTN_RIGHT, cb);}
开发者ID:AbdelghaniDr,项目名称:mirror,代码行数:4,


示例8: Panel

TutorialReminder::TutorialReminder()	: Panel("TutorialReminder", (GameControl::Get()->Width() - (WIDTH_REMINDER - 85))/2, 				          (GameControl::Get()->Height() - HEIGHT_REMINDER)/2,						  WIDTH_REMINDER, HEIGHT_REMINDER){	SetModal();	bAlreadyShow = true;	chdir((GameControl::getEditorPath() + DIR_SEP + "Tutorials" + DIR_SEP + "Getting Started").c_str());	Text *text;	Button *button;		int y;	//Title	text = AddText("Welcome", CENTER_TEXT, 5);	y = DrawHLine(text->Down() + 2);		//Body	text = AddText("Thank you for choosing Game Editor/nFor a quick start, select a option below:", 30, y);	//Create a new game	y = DrawHLine(text->Down() + 10);	text = AddText("Create a new game:", 30, y);	button = AddButton("Create now", 58, text->Down() + 10, 0, 0, BT_NEWGAME);	//Demos	y = DrawHLine(button->Down() + 5);	text = AddText("Get game demos:", 30, y);	button = AddButton("Go to demo page", 58, text->Down() + 10, 0, 0, BT_DEMOS);	//Tutorials	y = DrawHLine(button->Down() + 5);	text = AddText("See the tutorials:", 30, y);	listTutorialDir = AddListDirectory(10, text->Down() + 10, 0, 0, LS_TUTORIAL, " Click here for the tutorials ");	listTutorialDir->setCanUseSystemFileDialog(false);#if defined(WIN32) && !defined(GAME_EDITOR_HOME_EDITION)	button = AddButton("Get the newest tutorials", 58, listTutorialDir->Down() + 5, 0, 0, BT_UPDATE);	text = AddText("For more tutorials, select from Help Menu above", text->Left(), button->Down() + 5);#else	text = AddText("For more tutorials, select from Help Menu above", text->Left(), listTutorialDir->Down() + 25);#endif	listTutorialDir->SetPos((WIDTH_REMINDER - listTutorialDir->Width())/2, listTutorialDir->getImage()->Y());	listTutorialDir->AddFilter("gedt");	listTutorialDir->setShowDir(false);	listTutorialDir->setShowExtension(false);		//Help	y = DrawHLine(text->Down() + 5);	text = AddText("Get help:", 30, y);	button = AddButton("Read the documentation", 58, text->Down() + 10, 0, 0, BT_DOCS);	button = AddButton("Go to Game Editor's forum", 58, button->Down() + 5, 0, 0, BT_FORUM);					//Close	y = DrawHLine(button->Down() + 5);	button = AddButton("Close", (WIDTH_REMINDER-135)/2 - 30, y, 0, 0, BT_CLOSE);	button = AddButton(" Don't show again ", button->Right() + 10, y, 0, 0, BT_DONTSHOW);	//Logo	{		EditorDirectory dir;		logo = new Actor("ged_TutorialReminder_logo", this);		logo->AddAnimation("logo", "logo.png", 1, 1, 0, 0);		logo->SetPos(-logo->Width(), 0);	}}
开发者ID:cubemoon,项目名称:game-editor,代码行数:85,


示例9: wxCHECK

bool wxTreeMultiXmlMapper::DoCreateControls(TiXmlElement *cat, wxTreeMultiItem &pitem, wxWindow *pwnd, wxSizer *szr){    bool allOk = true;        wxCHECK(cat, false);    wxString value;    wxWindow *wnd = 0;    // go through all siblings of this     TiXmlNode *node = cat->FirstChild();    while(node && allOk)    {        // cast to element. When it is an element, work this        TiXmlElement *el = node->ToElement();        if(el)        {            value = el->Value();                        // when we are dealing with a <row> element, we introduce a wxBoxSizer + panel            // to add more on one row            if(value.IsSameAs(XMLMAP_TAG_ROW, false))            {                // we are in a row. All elements inside need to be parent                // of this element, and we use a sizer to layout                wxPanel *pnl = new wxPanel((pwnd != 0 ? pwnd : m_ctrl), -1);                wxBoxSizer *bsz = new wxBoxSizer(wxHORIZONTAL);                allOk = DoCreateControls(el, pitem, pnl, bsz);                if(allOk)                {                    // ok now we have all added elements, set the sizer and                     // add the item when we have no parent control nomore                    pnl->SetSizerAndFit(bsz);                    if(pwnd == 0)                    {                        // add the window                         m_ctrl->AppendWindow(pitem, pnl);                    }                }                else                    delete bsz;            }            else if(value.IsSameAs(XMLMAP_TAG_CATEGORY, false)) // is it an <category> element?            {                if(!pwnd)                {                    // only allow when we have no parent window                    wxTreeMultiItem item = AddCategory(el, pitem);                    allOk = DoCreateControls(el, item, 0, 0);                }                else                {                    // we do not allow a category inside another window!                    // so we report this as an error                    wxLogError(_("Cannot have a <" XMLMAP_TAG_CATEGORY "> inside <" XMLMAP_TAG_ROW "> tags!"));                    allOk = false;                }            }            else if(value.IsSameAs(XMLMAP_TAG_CHECKBOX, false))                 // is it a <checkbox> element?                wnd = AddCheckBox(el, (pwnd != 0 ? pwnd : m_ctrl));            else if(value.IsSameAs(XMLMAP_TAG_BUTTON, false))                 // is it a <button> element?                wnd = AddButton(el, (pwnd != 0 ? pwnd : m_ctrl));            else                // we encountered a strange element, just ignore                allOk = true;            // if we have a window to add, do this.            if(wnd)            {                // add to sizer when there is one, else                // do not add but trust the parent will be added                if(szr)                    szr->Add(wnd, 0, wxALIGN_CENTER_VERTICAL);                else                    m_ctrl->AppendWindow(pitem, wnd);                                allOk = (wnd != 0);                wnd = 0;            }        }        // get next sibling on this level        if(allOk)            node = node->NextSibling();    }    return allOk;}
开发者ID:mp-lee,项目名称:wxdevcpp,代码行数:89,


示例10: SetText

bool TBMessageWindow::Show(const char *title, const char *message, TBMessageWindowSettings *settings){	TBWidget *target = m_target.Get();	if (!target)		return false;	TBMessageWindowSettings default_settings;	if (!settings)		settings = &default_settings;	TBWidget *root = target->GetParentRoot();	const char *source =	"TBLayout: axis: y, distribution: available/n"							"	TBLayout: distribution: available, size: available/n"							"		TBSkinImage: id: 2/n"							"		TBEditField: multiline: 1, readonly: 1, id: 1/n"							"	TBLayout: distribution-position: right bottom, id: 3/n";	if (!g_widgets_reader->LoadData(GetContentRoot(), source))		return false;	SetText(title);	GetWidgetByIDAndType<TBSkinImage>(2)->SetSkinBg(settings->icon_skin);	TBEditField *editfield = GetWidgetByIDAndType<TBEditField>(1);	editfield->SetStyling(settings->styling);	editfield->SetText(message);	editfield->SetSkinBg("");	// Create buttons	if (settings->msg == TB_MSG_OK)	{		AddButton("TBMessageWindow.ok", true);	}	else if (settings->msg == TB_MSG_OK_CANCEL)	{		AddButton("TBMessageWindow.ok", true);		AddButton("TBMessageWindow.cancel", false);	}	else if (settings->msg == TB_MSG_YES_NO)	{		AddButton("TBMessageWindow.yes", true);		AddButton("TBMessageWindow.no", false);	}	// Size to fit content. This will use the default size of the textfield.	ResizeToFitContent();	TBRect rect = GetRect();	// Get how much we overflow the textfield has given the current width, and grow our height to show all we can.	// FIX: It would be better to use adapt-to-content on the editfield to achieve the most optimal size.	// At least when we do full blown multi pass size checking.	rect.h += editfield->GetStyleEdit()->GetOverflowY();	// Create background dimmer	if (settings->dimmer)	{		if (TBDimmer *dimmer = new TBDimmer)		{			root->AddChild(dimmer);			m_dimmer.Set(dimmer);		}	}	// Center and size to the new height	TBRect bounds(0, 0, root->GetRect().w, root->GetRect().h);	SetRect(rect.CenterIn(bounds).MoveIn(bounds).Clip(bounds));	root->AddChild(this);	return true;}
开发者ID:rongzhou,项目名称:turbobadger,代码行数:70,


示例11: create_SkinBrowser

GtkWidget * create_SkinBrowser( void ){ GtkWidget     * vbox5; GtkWidget     * scrolledwindow1; GtkWidget     * hbuttonbox4; GtkWidget     * Cancel; GtkWidget     * Ok; GtkAccelGroup * accel_group; accel_group = gtk_accel_group_new (); SkinBrowser=gtk_window_new( GTK_WINDOW_TOPLEVEL ); gtk_widget_set_name( SkinBrowser,MSGTR_SkinBrowser ); gtk_object_set_data( GTK_OBJECT( SkinBrowser ),MSGTR_SkinBrowser,SkinBrowser ); gtk_widget_set_usize( SkinBrowser,256,320 ); gtk_container_set_border_width( GTK_CONTAINER( SkinBrowser ),1 ); GTK_WIDGET_SET_FLAGS( SkinBrowser,GTK_CAN_DEFAULT ); gtk_widget_set_events( SkinBrowser,GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_FOCUS_CHANGE_MASK | GDK_STRUCTURE_MASK | GDK_PROPERTY_CHANGE_MASK | GDK_VISIBILITY_NOTIFY_MASK ); gtk_window_set_title( GTK_WINDOW( SkinBrowser ),MSGTR_SkinBrowser ); gtk_window_set_position( GTK_WINDOW( SkinBrowser ),GTK_WIN_POS_CENTER ); gtk_window_set_policy( GTK_WINDOW( SkinBrowser ),FALSE,FALSE,TRUE ); gtk_window_set_wmclass( GTK_WINDOW( SkinBrowser ),"SkinBrowser","MPlayer" ); gtk_widget_realize( SkinBrowser ); gtkAddIcon( SkinBrowser ); vbox5=AddVBox( AddDialogFrame( SkinBrowser ),0 ); AddLabel( MSGTR_SKIN_LABEL,vbox5 ); AddHSeparator( vbox5 ); scrolledwindow1=gtk_scrolled_window_new( NULL,NULL ); gtk_widget_set_name( scrolledwindow1,"scrolledwindow1" ); gtk_widget_ref( scrolledwindow1 ); gtk_object_set_data_full( GTK_OBJECT( SkinBrowser ),"scrolledwindow1",scrolledwindow1,(GtkDestroyNotify)gtk_widget_unref ); gtk_widget_show( scrolledwindow1 ); gtk_box_pack_start( GTK_BOX( vbox5 ),scrolledwindow1,TRUE,TRUE,0 ); gtk_container_set_border_width( GTK_CONTAINER( scrolledwindow1 ),2 ); gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW( scrolledwindow1 ),GTK_POLICY_NEVER,GTK_POLICY_AUTOMATIC ); SkinList=gtk_clist_new( 1 ); gtk_widget_set_name( SkinList,"SkinList" ); gtk_widget_ref( SkinList ); gtk_object_set_data_full( GTK_OBJECT( SkinBrowser ),"SkinList",SkinList,(GtkDestroyNotify)gtk_widget_unref ); gtk_widget_show( SkinList ); gtk_container_add( GTK_CONTAINER( scrolledwindow1 ),SkinList ); gtk_clist_set_column_width( GTK_CLIST( SkinList ),0,80 ); gtk_clist_set_selection_mode( GTK_CLIST( SkinList ),GTK_SELECTION_SINGLE ); gtk_clist_column_titles_hide( GTK_CLIST( SkinList ) ); gtk_clist_set_shadow_type( GTK_CLIST( SkinList ),GTK_SHADOW_ETCHED_OUT ); AddHSeparator( vbox5 ); hbuttonbox4=AddHButtonBox( vbox5 );  gtk_button_box_set_layout( GTK_BUTTON_BOX( hbuttonbox4 ),GTK_BUTTONBOX_SPREAD );  gtk_button_box_set_spacing( GTK_BUTTON_BOX( hbuttonbox4 ),10 ); Ok=AddButton( MSGTR_Ok,hbuttonbox4 ); Cancel=AddButton( MSGTR_Cancel,hbuttonbox4 ); gtk_widget_add_accelerator( Ok,"clicked",accel_group,GDK_Return,0,GTK_ACCEL_VISIBLE ); gtk_widget_add_accelerator( Cancel,"clicked",accel_group,GDK_Escape,0,GTK_ACCEL_VISIBLE ); gtk_signal_connect( GTK_OBJECT( SkinBrowser ),"destroy",GTK_SIGNAL_FUNC( WidgetDestroy ),&SkinBrowser ); gtk_signal_connect( GTK_OBJECT( SkinList ),"select_row",GTK_SIGNAL_FUNC( on_SkinList_select_row ),NULL ); gtk_signal_connect( GTK_OBJECT( Ok ),"clicked",GTK_SIGNAL_FUNC( prButton ),(void *)1 ); gtk_signal_connect( GTK_OBJECT( Cancel ),"clicked",GTK_SIGNAL_FUNC( prButton ),(void *)0 ); if ( ( sbMPlayerDirInHome=calloc( 1,strlen( skinDirInHome ) + 4 ) ) != NULL )  { strcpy( sbMPlayerDirInHome,skinDirInHome ); strcat( sbMPlayerDirInHome,"/*" ); } if ( ( sbMPlayerPrefixDir=calloc( 1,strlen( skinMPlayerDir ) + 4 ) ) != NULL )  { strcpy( sbMPlayerPrefixDir,skinMPlayerDir ); strcat( sbMPlayerPrefixDir,"/*" ); } gtk_window_add_accel_group( GTK_WINDOW( SkinBrowser ),accel_group ); gtk_widget_grab_focus( SkinList ); return SkinBrowser;}
开发者ID:Newbleeto,项目名称:mplayer-tegra,代码行数:77,


示例12: Prepare

 virtual void Prepare(ContainerWindow &parent,                      const PixelRect &rc) override {   AddButton(_("Details"), *list, DETAILS);   AddButton(_("Close"), dialog, mrCancel); }
开发者ID:henrik1g,项目名称:XCSoar,代码行数:5,


示例13: BaseAction

ExpressionEditor::ExpressionEditor(Actor *actor, bool bOnCollision)	: BaseAction("Expression Editor", (GameControl::Get()->Width() - WIDTH)/2, 				          (GameControl::Get()->Height() - HEIGHT)/2,						  WIDTH, HEIGHT){	expressionEditor = this;	SetModal();	SetToolTip(TIP_SCRIPTEDITOR);	eventActor = actionActor = actor;	this->bOnCollision = bOnCollision;	Text *text;	Button *button;		int y;	//Title: Script Editor: oi -> Key Down (left)	gedString title(EXPRESSION_EDITOR), actionDesc;	title += ": ";	actionDesc = actor->getActorName();	actionDesc += " -> ";	editAction = Action::getEditAction();	if(editAction)	{				actionDesc += Action::GetDescription(editAction, false);		MainPanel::AddLastScript(actionDesc);	}	else	{		stAction tmp;		tmp.eventData = Action::getActualEvent();		actionDesc += Action::GetDescription(&tmp, false);	}	title += actionDesc;	text = AddText(title, CENTER_TEXT, 5);	textLine = AddText("Ln 1    ", WIDTH-45, 5, ALIGN_LEFT);	y = DrawHLine(text->Down() + 2);	//Body	editExp = AddEditBox(10, y, WIDTH-34, HEIGHT-85, true);	listActor = AddListPop(10, editExp->Down()+4, 120, 0, LS_ACTOR, "actors"); listActor->SetToolTip(TIP_SCRIPTEDITOR_ACTORS);	listAutoComplete = AddListPop(listActor->Right(), listActor->Top(), 215, 0, LS_COMPLETE, "variables/functions"); listAutoComplete->SetToolTip(TIP_SCRIPTEDITOR_VARIABLES_FUNCTIONS);	button = AddButton("Variables", listAutoComplete->Right(), listAutoComplete->Top(), 0, 0, BT_CREATEVAR); button->SetToolTip(TIP_SCRIPTEDITOR_VARIABLES);	button = AddButton("Global code", button->Right(), button->Top(), 0, 0, BT_GLOBALS); button->SetToolTip(TIP_SCRIPTEDITOR_GLOBALCODE);	listFile = AddListPop(button->Right() + 2, button->Top(), 64, 0, LS_FILE, "File"); listFile->SetToolTip(TIP_SCRIPTEDITOR_FILE);	//button = AddButton("Web", listFile->Right() + 2, listFile->Top(), 35, 0, BT_WEB); button->SetToolTip(TIP_SCRIPTEDITOR_WEB);			//Close	y = DrawHLine(listAutoComplete->Down() + 2);	button = AddButton(Action::getEditAction()?"Ok":"Add", WIDTH/2 - 65, y, 0, 0, BT_ADD); button->SetToolTip(TIP_ACTION_ADD);	button = AddButton("Cancel", button->Right()+8, y, 0, 0, BT_CLOSE); button->SetToolTip(TIP_ACTION_CANCEL); //Don't exit on ESC (crash the editor)	//Populate actors	GameControl::Get()->PopulateActors(listActor);	if(bOnCollision) listActor->AddText("collide");	UpdateVars();	listFile->AddText("Save");	listFile->AddText("Load");	bDelimit = false;	editExp->SetSyntaxColorize(true);	editExp->ShowScrollBar();	pScript = NULL;	UpdateEdition();	if(!pScript) pScript = new Script();}
开发者ID:cubemoon,项目名称:game-editor,代码行数:79,


示例14: AddHookSwitchDevice

/******************************************************************************* Procedure:  CDSPhone::Init**** Arguments:  'pDev'				-	Device object this phone belongs to**             'dwPhoneDeviceID'	-	Unique phone identifier within the TSP**             'dwPos'				-	Index position of phone within device array**             'dwItemData'		-   Used when line was dynamically created (P&P).**** Returns:    void**** Description:  This function is called by the device owner to initialize**               the phone object.*******************************************************************************/VOID CDSPhone::Init (CTSPIDevice* pDev, DWORD dwPhoneDeviceID, DWORD dwPos, DWORD /*dwItemData*/){	// Let the base class initialize first.	CTSPIPhoneConnection::Init (pDev, dwPhoneDeviceID, dwPos);    // Grab the settings from the emulator.    EMSETTINGS Settings;    if (!GetDeviceInfo()->DRV_GetSwitchSettings (&Settings))		return;        // Add the handset device to our hookswitch list.    AddHookSwitchDevice(PHONEHOOKSWITCHDEV_HANDSET,				// Hookswitch device						(PHONEHOOKSWITCHMODE_ONHOOK |			// Modes available to hookswitch						 PHONEHOOKSWITCHMODE_MIC | 						 PHONEHOOKSWITCHMODE_SPEAKER |						 PHONEHOOKSWITCHMODE_MICSPEAKER | 						 PHONEHOOKSWITCHMODE_UNKNOWN),						 g_hsStates[Settings.wHandsetHookswitch],	// States supported by hookswitch						 Settings.wVolHandset,						// Current Volume level of hookswitch (0-0xffff)						 Settings.wGainHandset,						// Current Gain level of hookswitch (0-0xffff)						 0xffffffff, 0xffffffff, true, true);		// Monitored/Set modes                    // Setup the display buffer for the phone.  It uses a standard line feed so don't    // change the default line break character.    SetupDisplay(DISPLAY_COLS, DISPLAY_ROWS);    // Add all the buttons to our phone.    for (int i = 0; i < BUTTON_COUNT; i++)    {   		// If the button is one of our STANDARD buttons (0-9,A-D,#,*), then it is a keypad		// button.		if (i < TOTAL_STD_BUTTONS)        {            AddButton (PHONEBUTTONFUNCTION_NONE,		// Button function					   PHONEBUTTONMODE_KEYPAD,			// Button mode                       PHONELAMPMODE_DUMMY,				// Available Lamp states (Dummy = None)					   PHONELAMPMODE_DUMMY,				// Current Lamp state (Dummy = None)					   CString(g_szKeypad[i],1));		// Text name of button        }                               		// Otherwise the button is a "soft" button, the mode and function are determined		// by how the user sets up the emulator.  The emulator reports the button functions		// through the EMSETTINGS structure.        else        {   			// Determine the available lamp states based on the reported mode of the			// button from the emulator.            DWORD dwAvailLampStates = 0;            if (Settings.wButtonModes[i] == BUTTONFUNCTION_CALL)                dwAvailLampStates = (PHONELAMPMODE_OFF | PHONELAMPMODE_STEADY | PHONELAMPMODE_WINK | PHONELAMPMODE_FLASH);            else if (Settings.wLampStates[i] == LAMPSTATE_NONE)                dwAvailLampStates = PHONELAMPMODE_DUMMY;            else                dwAvailLampStates = (PHONELAMPMODE_OFF | PHONELAMPMODE_STEADY | PHONELAMPMODE_WINK);			// Add the button            AddButton (g_ButtonFunctions[Settings.wButtonModes[i]].dwFunction,                       g_ButtonFunctions[Settings.wButtonModes[i]].dwMode,                         dwAvailLampStates,                       g_LampStates[Settings.wLampStates[i]],                       g_ButtonFunctions[Settings.wButtonModes[i]].pszText);                                    }                                   }    // Setup the initial state of the display.	USES_CONVERSION;    SetDisplay (A2T(Settings.szDisplay));    // Setup the ringer modes    LPPHONECAPS pPhoneCaps = GetPhoneCaps();    LPPHONESTATUS pPhoneStatus = GetPhoneStatus();    pPhoneCaps->dwNumRingModes = 4;    pPhoneStatus->dwRingMode = (DWORD) Settings.wRingMode;	// Add the WAV devices which will be our handset I/O	if (waveInGetNumDevs() > 0)		AddDeviceClass(_T("wave/in"), (DWORD)0);	if (waveOutGetNumDevs() > 0)		AddDeviceClass(_T("wave/out"), (DWORD)0);}// CDSPhone::Init
开发者ID:junction,项目名称:jn-tapi,代码行数:95,


示例15: AddCategory

//.........这里部分代码省略.........  entries.push_back(std::make_pair(16317, VS_INTERLACEMETHOD_VDPAU_TEMPORAL_HALF));  entries.push_back(std::make_pair(16314, VS_INTERLACEMETHOD_VDPAU_INVERSE_TELECINE));  entries.push_back(std::make_pair(16325, VS_INTERLACEMETHOD_AUTO_ION));  entries.push_back(std::make_pair(16327, VS_INTERLACEMETHOD_VAAPI_BOB));  entries.push_back(std::make_pair(16328, VS_INTERLACEMETHOD_VAAPI_MADI));  entries.push_back(std::make_pair(16329, VS_INTERLACEMETHOD_VAAPI_MACI));  entries.push_back(std::make_pair(16330, VS_INTERLACEMETHOD_MMAL_ADVANCED));  entries.push_back(std::make_pair(16331, VS_INTERLACEMETHOD_MMAL_ADVANCED_HALF));  entries.push_back(std::make_pair(16332, VS_INTERLACEMETHOD_MMAL_BOB));  entries.push_back(std::make_pair(16333, VS_INTERLACEMETHOD_MMAL_BOB_HALF));  entries.push_back(std::make_pair(16334, VS_INTERLACEMETHOD_IMX_FASTMOTION));  entries.push_back(std::make_pair(16335, VS_INTERLACEMETHOD_IMX_FASTMOTION_DOUBLE));  /* remove unsupported methods */  for (StaticIntegerSettingOptions::iterator it = entries.begin(); it != entries.end(); )  {    if (g_application.m_pPlayer->Supports((EINTERLACEMETHOD)it->second))      ++it;    else      it = entries.erase(it);  }  if (!entries.empty())  {    AddSpinner(groupVideo, SETTING_VIDEO_INTERLACEMETHOD, 16038, 0, static_cast<int>(videoSettings.m_InterlaceMethod), entries);  }  entries.clear();  entries.push_back(std::make_pair(16301, VS_SCALINGMETHOD_NEAREST));  entries.push_back(std::make_pair(16302, VS_SCALINGMETHOD_LINEAR));  entries.push_back(std::make_pair(16303, VS_SCALINGMETHOD_CUBIC ));  entries.push_back(std::make_pair(16304, VS_SCALINGMETHOD_LANCZOS2));  entries.push_back(std::make_pair(16323, VS_SCALINGMETHOD_SPLINE36_FAST));  entries.push_back(std::make_pair(16315, VS_SCALINGMETHOD_LANCZOS3_FAST));  entries.push_back(std::make_pair(16322, VS_SCALINGMETHOD_SPLINE36));  entries.push_back(std::make_pair(16305, VS_SCALINGMETHOD_LANCZOS3));  entries.push_back(std::make_pair(16306, VS_SCALINGMETHOD_SINC8));//  entries.push_back(make_pair(?????, VS_SCALINGMETHOD_NEDI));  entries.push_back(std::make_pair(16307, VS_SCALINGMETHOD_BICUBIC_SOFTWARE));  entries.push_back(std::make_pair(16308, VS_SCALINGMETHOD_LANCZOS_SOFTWARE));  entries.push_back(std::make_pair(16309, VS_SCALINGMETHOD_SINC_SOFTWARE));  entries.push_back(std::make_pair(13120, VS_SCALINGMETHOD_VDPAU_HARDWARE));  entries.push_back(std::make_pair(16319, VS_SCALINGMETHOD_DXVA_HARDWARE));  entries.push_back(std::make_pair(16316, VS_SCALINGMETHOD_AUTO));  /* remove unsupported methods */  for(StaticIntegerSettingOptions::iterator it = entries.begin(); it != entries.end(); )  {    if (g_application.m_pPlayer->Supports((ESCALINGMETHOD)it->second))      ++it;    else      it = entries.erase(it);  }  AddSpinner(groupVideo, SETTING_VIDEO_SCALINGMETHOD, 16300, 0, static_cast<int>(videoSettings.m_ScalingMethod), entries);#ifdef HAS_VIDEO_PLAYBACK  AddVideoStreams(groupVideoStream, SETTING_VIDEO_STREAM);  if (g_application.m_pPlayer->Supports(RENDERFEATURE_STRETCH) || g_application.m_pPlayer->Supports(RENDERFEATURE_PIXEL_RATIO))  {    entries.clear();    for (int i = 0; i < 7; ++i)      entries.push_back(std::make_pair(630 + i, i));    AddSpinner(groupVideo, SETTING_VIDEO_VIEW_MODE, 629, 0, videoSettings.m_ViewMode, entries);  }  if (g_application.m_pPlayer->Supports(RENDERFEATURE_ZOOM))    AddSlider(groupVideo, SETTING_VIDEO_ZOOM, 216, 0, videoSettings.m_CustomZoomAmount, "%2.2f", 0.5f, 0.01f, 2.0f, 216, usePopup);  if (g_application.m_pPlayer->Supports(RENDERFEATURE_VERTICAL_SHIFT))    AddSlider(groupVideo, SETTING_VIDEO_VERTICAL_SHIFT, 225, 0, videoSettings.m_CustomVerticalShift, "%2.2f", -2.0f, 0.01f, 2.0f, 225, usePopup);  if (g_application.m_pPlayer->Supports(RENDERFEATURE_PIXEL_RATIO))    AddSlider(groupVideo, SETTING_VIDEO_PIXEL_RATIO, 217, 0, videoSettings.m_CustomPixelRatio, "%2.2f", 0.5f, 0.01f, 2.0f, 217, usePopup);  if (g_application.m_pPlayer->Supports(RENDERFEATURE_POSTPROCESS))    AddToggle(groupVideo, SETTING_VIDEO_POSTPROCESS, 16400, 0, videoSettings.m_PostProcess);  if (g_application.m_pPlayer->Supports(RENDERFEATURE_BRIGHTNESS))    AddPercentageSlider(groupVideoPlayback, SETTING_VIDEO_BRIGHTNESS, 464, 0, static_cast<int>(videoSettings.m_Brightness), 14047, 1, 464, usePopup);  if (g_application.m_pPlayer->Supports(RENDERFEATURE_CONTRAST))    AddPercentageSlider(groupVideoPlayback, SETTING_VIDEO_CONTRAST, 465, 0, static_cast<int>(videoSettings.m_Contrast), 14047, 1, 465, usePopup);  if (g_application.m_pPlayer->Supports(RENDERFEATURE_GAMMA))    AddPercentageSlider(groupVideoPlayback, SETTING_VIDEO_GAMMA, 466, 0, static_cast<int>(videoSettings.m_Gamma), 14047, 1, 466, usePopup);  if (g_application.m_pPlayer->Supports(RENDERFEATURE_NOISE))    AddSlider(groupVideoPlayback, SETTING_VIDEO_VDPAU_NOISE, 16312, 0, videoSettings.m_NoiseReduction, "%2.2f", 0.0f, 0.01f, 1.0f, 16312, usePopup);  if (g_application.m_pPlayer->Supports(RENDERFEATURE_SHARPNESS))    AddSlider(groupVideoPlayback, SETTING_VIDEO_VDPAU_SHARPNESS, 16313, 0, videoSettings.m_Sharpness, "%2.2f", -1.0f, 0.02f, 1.0f, 16313, usePopup);  if (g_application.m_pPlayer->Supports(RENDERFEATURE_NONLINSTRETCH))    AddToggle(groupVideoPlayback, SETTING_VIDEO_NONLIN_STRETCH, 659, 0, videoSettings.m_CustomNonLinStretch);#endif  // stereoscopic settings  entries.clear();  entries.push_back(std::make_pair(16316, RENDER_STEREO_MODE_OFF));  entries.push_back(std::make_pair(36503, RENDER_STEREO_MODE_SPLIT_HORIZONTAL));  entries.push_back(std::make_pair(36504, RENDER_STEREO_MODE_SPLIT_VERTICAL));  AddSpinner(groupStereoscopic, SETTING_VIDEO_STEREOSCOPICMODE  , 36535, 0, videoSettings.m_StereoMode, entries);  AddToggle(groupStereoscopic, SETTING_VIDEO_STEREOSCOPICINVERT, 36536, 0, videoSettings.m_StereoInvert);  // general settings  AddButton(groupSaveAsDefault, SETTING_VIDEO_MAKE_DEFAULT, 12376, 0);  AddButton(groupSaveAsDefault, SETTING_VIDEO_CALIBRATION, 214, 0);}
开发者ID:has12,项目名称:xbmc,代码行数:101,


示例16: Panel

ColorPicker::ColorPicker(int _r, int _g, int _b)	: Panel("DlgColorPicker", (GameControl::Get()->Width() - WIDTH)/2, 				          (GameControl::Get()->Height() - HEIGHT)/2,						  WIDTH, HEIGHT){	SetModal();	Text *text;	Button *button;	//Title	text = AddText("Color Picker", CENTER_TEXT, 5);	int y = DrawHLine(text->Down() + 2);	//Body	canvas = new ColorCanvas(this);	oldColor = new ColorSampleOfPicker(this);	newColor = new ColorSampleOfPicker(this);	canvas->SetPos(10, y + 2);				colorSlide = AddSlide(canvas->Right() + 5, canvas->Top(), 20, 256, SL_COLOR);	colorSlide->SetPos(1.0);	newColor->SetPos(colorSlide->Right() + 5, colorSlide->Top());	oldColor->SetPos(newColor->Left(), newColor->Down());	text = AddText("       Red: ", oldColor->Left(), oldColor->Down() + 16);	rEdit = AddEditBox(text->Right(), text->Top(), 32); rEdit->SetNumeric(0, 255, 1);	text = AddText("     Green: ", text->Left(), rEdit->Down() + 2);	gEdit = AddEditBox(text->Right(), text->Top(), 32); gEdit->SetNumeric(0, 255, 1);	text = AddText("      Blue: ", text->Left(), gEdit->Down() + 2);	bEdit = AddEditBox(text->Right(), text->Top(), 32); bEdit->SetNumeric(0, 255, 1);	text = AddText("       Hue: ", text->Left(), bEdit->Down() + 16);	hEdit = AddEditBox(text->Right(), text->Top(), 32); hEdit->SetNumeric(0, 359, 1);	text = AddText("Saturation: ", text->Left(), hEdit->Down() + 2);	sEdit = AddEditBox(text->Right(), text->Top(), 32); sEdit->SetNumeric(0, 100, 1);	text = AddText("Brightness: ", text->Left(), sEdit->Down() + 2);	vEdit = AddEditBox(text->Right(), text->Top(), 32); vEdit->SetNumeric(0, 100, 1);	listFix = AddListPop(oldColor->Left(), vEdit->Down() + 16, 104, 0, LS_FIX_COLOR);	//Close	y = DrawHLine(canvas->Down() + 2);	button = AddButton("Ok", (WIDTH-135)/2, y, 0, 0, OK_BUTTON); SetConfirmButton(button);	button = AddButton("Cancel", button->Right()+8, y, 0, 0, CANCEL_BUTTON); SetCancelButton(button);		listFix->AddText("Red");	listFix->AddText("Green");	listFix->AddText("Blue");	listFix->AddText("Hue");	listFix->AddText("Saturation");	listFix->AddText("Brightness");	listFix->SetText("Red");		fixedColor = FIX_RED;	r = _r;	g = _g;	b = _b;		oldColor->SetColor(r, g, b);		colorSlide->SetPos(r / 255.0);	UpdateSample(r, g, b);		UpdateCanvas(r, fixedColor);	UpdateSlideColor(r, g, b, fixedColor);}
开发者ID:cubemoon,项目名称:game-editor,代码行数:82,


示例17: CclDefineButton

//.........这里部分代码省略.........				LuaError(l, "incorrect argument");			}			char buf[64];			const char *s2;			if (lua_isnumber(l, -1)) {				snprintf(buf, sizeof(buf), "%ld", (long int)lua_tonumber(l, -1));				s2 = buf;			} else {				s2 = lua_tostring(l, -1);			}			ba.ValueStr = s2;		} else if (!strcmp(value, "Allowed")) {			value = LuaToString(l, -1);			if (!strcmp(value, "check-true")) {				ba.Allowed = ButtonCheckTrue;			} else if (!strcmp(value, "check-false")) {				ba.Allowed = ButtonCheckFalse;			} else if (!strcmp(value, "check-upgrade")) {				ba.Allowed = ButtonCheckUpgrade;			} else if (!strcmp(value, "check-unit-variable")) {				ba.Allowed = ButtonCheckUnitVariable;			} else if (!strcmp(value, "check-units-or")) {				ba.Allowed = ButtonCheckUnitsOr;			} else if (!strcmp(value, "check-units-and")) {				ba.Allowed = ButtonCheckUnitsAnd;			} else if (!strcmp(value, "check-units-not")) {				ba.Allowed = ButtonCheckUnitsNot;			} else if (!strcmp(value, "check-network")) {				ba.Allowed = ButtonCheckNetwork;			} else if (!strcmp(value, "check-no-network")) {				ba.Allowed = ButtonCheckNoNetwork;			} else if (!strcmp(value, "check-no-work")) {				ba.Allowed = ButtonCheckNoWork;			} else if (!strcmp(value, "check-no-research")) {				ba.Allowed = ButtonCheckNoResearch;			} else if (!strcmp(value, "check-attack")) {				ba.Allowed = ButtonCheckAttack;			} else if (!strcmp(value, "check-upgrade-to")) {				ba.Allowed = ButtonCheckUpgradeTo;			} else if (!strcmp(value, "check-research")) {				ba.Allowed = ButtonCheckResearch;			} else if (!strcmp(value, "check-single-research")) {				ba.Allowed = ButtonCheckSingleResearch;			} else {				LuaError(l, "Unsupported action: %s" _C_ value);			}		} else if (!strcmp(value, "AllowArg")) {			if (!lua_istable(l, -1)) {				LuaError(l, "incorrect argument");			}			std::string allowstr;			const unsigned int subargs = lua_rawlen(l, -1);			for (unsigned int k = 0; k < subargs; ++k) {				const char *s2 = LuaToString(l, -1, k + 1);				allowstr += s2;				if (k != subargs - 1) {					allowstr += ",";				}			}			ba.AllowStr = allowstr;		} else if (!strcmp(value, "Key")) {			ba.Key = *LuaToString(l, -1);		} else if (!strcmp(value, "Hint")) {			ba.Hint = LuaToString(l, -1);		} else if (!strcmp(value, "Description")) {			ba.Description = LuaToString(l, -1);		} else if (!strcmp(value, "CommentSound")) {			ba.CommentSound.Name = LuaToString(l, -1);		} else if (!strcmp(value, "ButtonCursor")) {			ba.ButtonCursor = LuaToString(l, -1);		} else if (!strcmp(value, "Popup")) {			ba.Popup = LuaToString(l, -1);		} else if (!strcmp(value, "ForUnit")) {			if (!lua_istable(l, -1)) {				LuaError(l, "incorrect argument");			}			// FIXME: ba.UnitMask shouldn't be a string			std::string umask = ",";			const unsigned subargs = lua_rawlen(l, -1);			for (unsigned int k = 0; k < subargs; ++k) {				const char *s2 = LuaToString(l, -1, k + 1);				umask += s2;				umask += ",";			}			ba.UnitMask = umask;			if (!strncmp(ba.UnitMask.c_str(), ",*,", 3)) {				ba.UnitMask = "*";			}		} else {			LuaError(l, "Unsupported tag: %s" _C_ value);		}		lua_pop(l, 1);	}	AddButton(ba.Pos, ba.Level, ba.Icon.Name, ba.Action, ba.ValueStr,			  ba.Allowed, ba.AllowStr, ba.Key, ba.Hint, ba.Description, ba.CommentSound.Name,			  ba.ButtonCursor, ba.UnitMask, ba.Popup, ba.AlwaysShow);	return 0;}
开发者ID:realhidden,项目名称:stratagus,代码行数:101,


示例18: AddButton

 WndButton *AddButton(const TCHAR *caption, int modal_result) {   return AddButton(caption, *this, modal_result); }
开发者ID:Tjeerdm,项目名称:XCSoarDktjm,代码行数:3,


示例19: N_

voidWindSettingsPanel::Prepare(ContainerWindow &parent, const PixelRect &rc){  RowFormWidget::Prepare(parent, rc);  const WindSettings &settings = CommonInterface::GetComputerSettings().wind;  const MapSettings &map_settings = CommonInterface::GetMapSettings();  static constexpr StaticEnumChoice auto_wind_list[] = {    { AUTOWIND_NONE, N_("Manual"),      N_("When the algorithm is switched off, the pilot is responsible for setting the wind estimate.") },    { AUTOWIND_CIRCLING, N_("Circling"),      N_("Requires only a GPS source.") },    { AUTOWIND_ZIGZAG, N_("ZigZag"),      N_("Requires GPS and an intelligent vario with airspeed output.") },    { AUTOWIND_CIRCLING | AUTOWIND_ZIGZAG, N_("Both"),      N_("Use ZigZag and circling.") },    { 0 }  };  AddEnum(_("Auto wind"),          _("This allows switching on or off the automatic wind algorithm."),          auto_wind_list, settings.GetLegacyAutoWindMode());  if (edit_trail_drift)    AddBoolean(_("Trail drift"),               _("Determines whether the snail trail is drifted with the wind "                 "when displayed in circling mode. Switched Off, "                 "the snail trail stays uncompensated for wind drift."),               map_settings.trail.wind_drift_enabled);  else    AddDummy();  if (edit_manual_wind) {    SpeedVector manual_wind = CommonInterface::Calculated().GetWindOrZero();    AddReadOnly(_("Source"));    WndProperty *wp =      AddFloat(_("Speed"), _("Manual adjustment of wind speed."),               _T("%.0f %s"), _T("%.0f"),               fixed(0),               Units::ToUserWindSpeed(Units::ToSysUnit(fixed(200),                                                       Unit::KILOMETER_PER_HOUR)),               fixed(1), false,               Units::ToUserWindSpeed(manual_wind.norm),               this);    DataFieldFloat &df = *(DataFieldFloat *)wp->GetDataField();    df.SetUnits(Units::GetWindSpeedName());    wp->RefreshDisplay();    wp = AddAngle(_("Direction"), _("Manual adjustment of wind direction."),                  manual_wind.bearing, 5u, false,                  this);    manual_modified = false;  }  if (clear_manual_button)    AddButton(_("Clear"), *this, CLEAR_MANUAL);  UpdateVector();}
开发者ID:CnZoom,项目名称:XcSoarPull,代码行数:63,


示例20: MakeButtonBackgroundsSmall

void EditToolBar::Populate(){   MakeButtonBackgroundsSmall();   /* Buttons */   AddButton(bmpCut, bmpCut, bmpCutDisabled, ETBCutID,      _("Cut selection"));   AddButton(bmpCopy, bmpCopy, bmpCopyDisabled, ETBCopyID,      _("Copy selection"));   AddButton(bmpPaste, bmpPaste, bmpPasteDisabled, ETBPasteID,      _("Paste"));   AddButton(bmpTrim, bmpTrim, bmpTrimDisabled, ETBTrimID,      _("Trim audio outside selection"));   AddButton(bmpSilence, bmpSilence, bmpSilenceDisabled, ETBSilenceID,      _("Silence audio selection"));   AddSeparator();   AddButton(bmpUndo, bmpUndo, bmpUndoDisabled, ETBUndoID,      _("Undo"));   AddButton(bmpRedo, bmpRedo, bmpRedoDisabled, ETBRedoID,      _("Redo"));   AddSeparator();#ifdef EXPERIMENTAL_SYNC_LOCK   AddButton(bmpSyncLockTracksUp, bmpSyncLockTracksDown, bmpSyncLockTracksDisabled, ETBSyncLockID,               _("Sync-Lock Tracks"), true);   AddSeparator();#endif   AddButton(bmpZoomIn, bmpZoomIn, bmpZoomInDisabled, ETBZoomInID,      _("Zoom In"));   AddButton(bmpZoomOut, bmpZoomOut, bmpZoomOutDisabled, ETBZoomOutID,      _("Zoom Out"));   AddButton(bmpZoomSel, bmpZoomSel, bmpZoomSelDisabled, ETBZoomSelID,      _("Fit selection in window"));   AddButton(bmpZoomFit, bmpZoomFit, bmpZoomFitDisabled, ETBZoomFitID,      _("Fit project in window"));   mButtons[ETBZoomInID]->SetEnabled(false);   mButtons[ETBZoomOutID]->SetEnabled(false);   mButtons[ETBZoomSelID]->SetEnabled(false);   mButtons[ETBZoomFitID]->SetEnabled(false);   mButtons[ETBPasteID]->SetEnabled(false);#ifdef EXPERIMENTAL_SYNC_LOCK   mButtons[ETBSyncLockID]->PushDown();#endif#if defined(EXPERIMENTAL_EFFECTS_RACK)   AddSeparator();   AddButton(bmpEditEffects, bmpEditEffects, bmpEditEffects, ETBEffectsID,      _("Show Effects Rack"), true);#endif   RegenerateTooltips();}
开发者ID:Grunji,项目名称:audacity,代码行数:61,


示例21: MatTaskAddWidget

 MatTaskAddWidget(MatTaskMonitor &_monitor, WaypointPtr &&_waypoint)     :QuestionWidget(MakeMessage(*_waypoint), *this),      monitor(_monitor), waypoint(std::move(_waypoint)) {     AddButton(_("Add"), ADD);     AddButton(_("Dismiss"), DISMISS); }
开发者ID:kwtskran,项目名称:XCSoar,代码行数:6,


示例22: BaseAction

ChangeParent::ChangeParent(Actor *actor, bool bOnCollision)	: BaseAction("Change Parent", (GameControl::Get()->Width() - WIDTH)/2, 				          (GameControl::Get()->Height() - HEIGHT)/2,						  WIDTH, HEIGHT){	SetModal();	SetToolTip(TIP_CHANGEPARENT);	this->eventActor = actionActor = actor;	Text *text;	Button *button;		int y;	//Title	text = AddText(CHANGE_PARENT, CENTER_TEXT, 5);	y = DrawHLine(text->Down() + 2);	//Body	text = AddText("    Child: ", 10, y);	listActor = AddListPop(text->Right() + 2, text->Top(), 128, 0, LS_ACTOR);  listActor->SetToolTip(gedString(TIP_CHANGEPARENT_CHILD) + TIP_ACTION_ACTOR);	text = AddText("   Parent: ", 10, listActor->Down());	listParent = AddListPop(text->Right() + 2, text->Top(), 128, 0, LS_PARENT); listParent->SetToolTip(TIP_CHANGEPARENT_PARENT);			//Close	y = DrawHLine(listParent->Down() + 2);	button = AddButton(Action::getEditAction()?"Ok":"Add", 45, y, 0, 0, BT_ADD); button->SetToolTip(TIP_ACTION_ADD); SetConfirmButton(button);	button = AddButton("Cancel", button->Right()+8, y, 0, 0, BT_CLOSE); button->SetToolTip(TIP_ACTION_CANCEL); SetCancelButton(button);		GameControl::Get()->PopulateActors(listParent);	listParent->AddText(NO_PARENT);	if(actionActor && actionActor->getParent())	{		listParent->SetItem(actionActor->getCloneName());	}	else	{		listParent->SetItem(NO_PARENT);	}		GameControl::Get()->PopulateActors(listActor);		listActor->AddText(S_EVENT_ACTOR);	listParent->AddText(S_EVENT_ACTOR);	if(Tutorial::IsCompatible(VERSION_OUT_OF_VISION_OPTIMIZATION))	{		listActor->AddText(S_PARENT_ACTOR);		listActor->AddText(S_CREATOR_ACTOR);		listParent->AddText(S_PARENT_ACTOR);		listParent->AddText(S_CREATOR_ACTOR);	}	if(bOnCollision) listParent->AddText(S_COLLIDE_ACTOR);	if(bOnCollision) listActor->AddText(S_COLLIDE_ACTOR);	listActor->SetItem(S_EVENT_ACTOR);	if(!ExpressionEditor::getExpressionEditor()) UpdateEdition();}
开发者ID:cubemoon,项目名称:game-editor,代码行数:62,


示例23: CreateHighlightView

HWND CreateHighlightView(HWND hwndParent){	HWND hwndPanel;	HWND hwndGridView;	HWND hwndTB1;//	RegisterGridView();	InitGridView();	//	//	Create the base tool panel	//	hwndPanel = ToolPanel_Create(hwndParent, HighlightViewCommandHandler);	//ToolPanel_AddVSpace(hwndPanel, 4);	ToolPanel_AddGripper(hwndPanel);		//	//	Create the 1st toolbar (the "Goto" button)	//	hwndTB1   = CreateEmptyToolbar(hwndPanel, IDB_BITMAP11, 16, 666, TBSTYLE_LIST);	SendMessage(hwndTB1, TB_SETEXTENDEDSTYLE, 0, TBSTYLE_EX_MIXEDBUTTONS);	GetWindowWidth(hwndTB1);	AddButton(hwndTB1, IDC_HIGHLIGHT_ADD, 0, TBSTYLE_BUTTON, _T("Add"));	AddButton(hwndTB1, IDC_HIGHLIGHT_EDIT, 3, TBSTYLE_BUTTON, _T("Edit"));	AddButton(hwndTB1, IDC_HIGHLIGHT_DELETE, 1, TBSTYLE_BUTTON, _T("Delete"));	AddButton(hwndTB1, -0, 0, TBSTYLE_SEP, 0);	AddButton(hwndTB1, IDC_HIGHLIGHT_SHOWALL, 2, TBSTYLE_BUTTON|TBSTYLE_CHECK, _T("Show All"));	AddButton(hwndTB1, IDC_HIGHLIGHT_REPORT, 4, TBSTYLE_BUTTON, _T("Create Report"));	ResizeToolbar(hwndTB1);	ToolPanel_AddItem(hwndPanel, hwndTB1, 0);	ToolPanel_AddNewLine(hwndPanel, 4);			//	//	Create the gridview!!	//	hwndGridView = PrepGridView2(hwndPanel, IDC_HIGHLIGHT_GRIDVIEW);		GridView_SetStyle(hwndGridView, -1, GVS_READONLY|GVS_FULLROWSELECT|GVS_VERTGRIDLINES//|GVS_TREELINES		//|GVS_SHOWFOCUS		);//,GVS_FULLROWSELECT|GVS_GRIDLINES);			//UpdateHighlights(g_hwndHexView, hwndGridView);	//UpdateHighlights((HWND)-1, hwndGridView);	ToolPanel_AddItem(hwndPanel, hwndGridView, 0);	ToolPanel_AddAnchor(hwndPanel, 0, 2);	ToolPanel_AutoSize(hwndPanel);	SetWindowHeight(hwndPanel, 200, NULL);	ShowWindow(hwndPanel, SW_SHOW);	return hwndPanel;}
开发者ID:4aiman,项目名称:HexEdit,代码行数:63,


示例24: SetBackgroundColour

void EditToolBar::Populate(){   SetBackgroundColour( theTheme.Colour( clrMedium  ) );   MakeButtonBackgroundsSmall();   /* Buttons */   // Tooltips slightly more verbose than the menu entries are.   AddButton(this, bmpCut, bmpCut, bmpCutDisabled, ETBCutID,      _("Cut selection"));   AddButton(this, bmpCopy, bmpCopy, bmpCopyDisabled, ETBCopyID,      _("Copy selection"));   AddButton(this, bmpPaste, bmpPaste, bmpPasteDisabled, ETBPasteID,      _("Paste"));   AddButton(this, bmpTrim, bmpTrim, bmpTrimDisabled, ETBTrimID,      _("Trim audio outside selection"));   AddButton(this, bmpSilence, bmpSilence, bmpSilenceDisabled, ETBSilenceID,      _("Silence audio selection"));   AddSeparator();   AddButton(this, bmpUndo, bmpUndo, bmpUndoDisabled, ETBUndoID,      _("Undo"));   AddButton(this, bmpRedo, bmpRedo, bmpRedoDisabled, ETBRedoID,      _("Redo"));   AddSeparator();#ifdef OPTION_SYNC_LOCK_BUTTON   AddButton(this, bmpSyncLockTracksUp, bmpSyncLockTracksDown, bmpSyncLockTracksUp, ETBSyncLockID,               _("Sync-Lock Tracks"), true);   AddSeparator();#endif   // Tooltips match menu entries.   // We previously had longer tooltips which were not more clear.   AddButton(this, bmpZoomIn, bmpZoomIn, bmpZoomInDisabled, ETBZoomInID,      _("Zoom In"));   AddButton(this, bmpZoomOut, bmpZoomOut, bmpZoomOutDisabled, ETBZoomOutID,      _("Zoom Out"));   AddButton(this, bmpZoomSel, bmpZoomSel, bmpZoomSelDisabled, ETBZoomSelID,      _("Zoom to Selection"));   AddButton(this, bmpZoomFit, bmpZoomFit, bmpZoomFitDisabled, ETBZoomFitID,      _("Fit to Width"));#ifdef EXPERIMENTAL_ZOOM_TOGGLE_BUTTON   AddButton(this, bmpZoomToggle, bmpZoomToggle, bmpZoomToggleDisabled, ETBZoomToggleID,      _("Zoom Toggle"));#endif   mButtons[ETBZoomInID]->SetEnabled(false);   mButtons[ETBZoomOutID]->SetEnabled(false);#ifdef EXPERIMENTAL_ZOOM_TOGGLE_BUTTON   mButtons[ETBZoomToggleID]->SetEnabled(false);#endif   mButtons[ETBZoomSelID]->SetEnabled(false);   mButtons[ETBZoomFitID]->SetEnabled(false);   mButtons[ETBPasteID]->SetEnabled(false);#ifdef OPTION_SYNC_LOCK_BUTTON   mButtons[ETBSyncLockID]->PushDown();#endif#if defined(EXPERIMENTAL_EFFECTS_RACK)   AddSeparator();   AddButton(this, bmpEditEffects, bmpEditEffects, bmpEditEffects, ETBEffectsID,      _("Show Effects Rack"), true);#endif   RegenerateTooltips();}
开发者ID:SteveDaulton,项目名称:audacity,代码行数:74,


示例25: MakeButtonBackgroundsSmall

void TranscriptionToolBar::Populate(){// Very similar to code in ControlToolBar...// Very similar to code in EditToolBar   MakeButtonBackgroundsSmall();   AddButton(bmpPlay,     bmpPlayDisabled,   TTB_PlaySpeed,      _("Play at selected speed"));   MakeAlternateImages(bmpLoop, bmpLoopDisabled, TTB_PlaySpeed, 1);   MakeAlternateImages(bmpCutPreview, bmpCutPreviewDisabled, TTB_PlaySpeed, 2);   mButtons[TTB_PlaySpeed]->FollowModifierKeys();   //Add a slider that controls the speed of playback.   const int SliderWidth=100;   mPlaySpeedSlider = safenew ASlider(this,                                  TTB_PlaySpeedSlider,                                  _("Playback Speed"),                                  wxDefaultPosition,                                  wxSize(SliderWidth,25),                                  SPEED_SLIDER);   mPlaySpeedSlider->Set(mPlaySpeed / 100.0);   mPlaySpeedSlider->SetLabel(_("Playback Speed"));   //  6 steps using page up/down, and 60 using arrow keys   mPlaySpeedSlider->SetScroll(0.16667f, 1.6667f);   Add( mPlaySpeedSlider, 0, wxALIGN_CENTER );   mPlaySpeedSlider->Connect(wxEVT_SET_FOCUS,                 wxFocusEventHandler(TranscriptionToolBar::OnFocus),                 NULL,                 this);   mPlaySpeedSlider->Connect(wxEVT_KILL_FOCUS,                 wxFocusEventHandler(TranscriptionToolBar::OnFocus),                 NULL,                 this);#ifdef EXPERIMENTAL_VOICE_DETECTION// If we need these strings translated, then search and replace// TRANSLATBLE by _ and remove this #define.#define TRANSLATABLE( x ) wxT( x )   AddButton(bmpTnStartOn,     bmpTnStartOnDisabled,  TTB_StartOn,      TRANSLATABLE("Adjust left selection to next onset"));   AddButton(bmpTnEndOn,       bmpTnEndOnDisabled,   TTB_EndOn,      TRANSLATABLE("Adjust right selection to previous offset"));   AddButton(bmpTnStartOff,    bmpTnStartOffDisabled,  TTB_StartOff,      TRANSLATABLE("Adjust left selection to next offset"));   AddButton(bmpTnEndOff,      bmpTnEndOffDisabled,    TTB_EndOff,      TRANSLATABLE("Adjust right selection to previous onset"));   AddButton(bmpTnSelectSound, bmpTnSelectSoundDisabled, TTB_SelectSound,      TRANSLATABLE("Select region of sound around cursor"));   AddButton(bmpTnSelectSilence, bmpTnSelectSilenceDisabled, TTB_SelectSilence,      TRANSLATABLE("Select region of silence around cursor"));   AddButton(bmpTnAutomateSelection,   bmpTnAutomateSelectionDisabled,  TTB_AutomateSelection,      TRANSLATABLE("Automatically make labels from words"));   AddButton(bmpTnMakeTag, bmpTnMakeTagDisabled,  TTB_MakeLabel,      TRANSLATABLE("Add label at selection"));   AddButton(bmpTnCalibrate, bmpTnCalibrateDisabled, TTB_Calibrate,      TRANSLATABLE("Calibrate voicekey"));   mSensitivitySlider = safenew ASlider(this,                                    TTB_SensitivitySlider,                                    TRANSLATABLE("Adjust Sensitivity"),                                    wxDefaultPosition,                                    wxSize(SliderWidth,25),                                    SPEED_SLIDER);   mSensitivitySlider->Set(.5);   mSensitivitySlider->SetLabel(TRANSLATABLE("Sensitivity"));   Add( mSensitivitySlider, 0, wxALIGN_CENTER );   wxString choices[] =   {      TRANSLATABLE("Energy"),      TRANSLATABLE("Sign Changes (Low Threshold)"),      TRANSLATABLE("Sign Changes (High Threshold)"),      TRANSLATABLE("Direction Changes (Low Threshold)"),      TRANSLATABLE("Direction Changes (High Threshold)")   };   mKeyTypeChoice = safenew wxChoice(this, TTB_KeyType,                                 wxDefaultPosition,                                 wxDefaultSize,                                 5,                                 choices );   mKeyTypeChoice->SetName(TRANSLATABLE("Key type"));   mKeyTypeChoice->SetSelection(0);   Add( mKeyTypeChoice, 0, wxALIGN_CENTER );#endif   // Add a little space   Add(2, -1);   UpdatePrefs();}
开发者ID:MayTheSForceBeWithYou,项目名称:audacity,代码行数:91,



注:本文中的AddButton函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ AddCapturePoint函数代码示例
C++ AddBodyToWorld函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。