这篇教程C++ widgGetFromID函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中widgGetFromID函数的典型用法代码示例。如果您正苦于以下问题:C++ widgGetFromID函数的具体用法?C++ widgGetFromID怎么用?C++ widgGetFromID使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了widgGetFromID函数的25个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: widgGetScreenExtents// Given a widget id get it's screen extents.// NOTE that this function is slow and should be called infrequently,// ideally only during widget initialisation.//BOOL widgGetScreenExtents(UDWORD ID,int *sx,int *sy,int *sw,int *sh){ struct _widget *psWidget = widgGetFromID(psWScreen,ID); if(psWidget != NULL) { int x,y,w,h; x = psWidget->x; y = psWidget->y; w = psWidget->width; h = psWidget->height; while(psWidget->formID) { struct _widget *psParent = widgGetFromID(psWScreen,psWidget->formID); if(psParent) { x += psParent->x; y += psParent->y; } psWidget = psParent; } *sx = x; *sy = y; *sw = w; *sh = h; return TRUE; } return FALSE;}
开发者ID:pheonixstorm,项目名称:wzredemption,代码行数:34,
示例2: runLimitScreenvoid runLimitScreen(void){ UDWORD i, id, statid; frontendMultiMessages(); // network stuff. id = widgRunScreen(psWScreen); // Run the current set of widgets // sliders if((id > IDLIMITS_ENTRIES_START) && (id< IDLIMITS_ENTRIES_END)) { statid = widgGetFromID(psWScreen,id-1)->UserData ; if(statid) { asStructLimits[0][statid].limit = (UBYTE) ((W_SLIDER*)(widgGetFromID(psWScreen,id)))->pos; } } else { // icons that are always about. switch(id) { case IDLIMITS_RETURN: // reset the sliders.. for (i = 0; i < numStructureStats ; ++i) { asStructLimits[0][i].limit = asStructLimits[0][i].globalLimit; } // free limiter structure freeLimitSet(); //inform others sendOptions(); eventReset(); changeTitleMode(MULTIOPTION); // make some noize. if(!ingame.localOptionsReceived) { addConsoleMessage(_("Limits reset to default values"),DEFAULT_JUSTIFY, SYSTEM_MESSAGE); } else { sendTextMessage("Limits Reset To Default Values",true); } break; case IDLIMITS_OK: resetReadyStatus(false); createLimitSet(); changeTitleMode(MULTIOPTION); break; default: break; } } widgDisplayScreen(psWScreen); // show the widgets currently running}
开发者ID:JCDG,项目名称:warzone2100,代码行数:59,
示例3: intCloseInGameOptions// ////////////////////////////////////////////////////////////////////////////bool intCloseInGameOptions(bool bPutUpLoadSave, bool bResetMissionWidgets){ W_TABFORM *Form; WIDGET *widg; if (NetPlay.isHost) { widgDelete(psWScreen, INTINGAMEPOPUP); } if(bPutUpLoadSave) { widg = widgGetFromID(psWScreen,INTINGAMEOP); if(widg) { widgDelete(psWScreen,INTINGAMEOP); } InGameOpUp = false; ClosingInGameOp = true; } else { // close the form. // Start the window close animation. if (isInGamePopupUp) // FIXME: we hijack this routine for the popup close. { Form = (W_TABFORM*)widgGetFromID(psWScreen,INTINGAMEPOPUP); isInGamePopupUp = false; } else { Form = (W_TABFORM*)widgGetFromID(psWScreen,INTINGAMEOP); } if(Form) { Form->display = intClosePlainForm; Form->pUserData = NULL; // Used to signal when the close anim has finished. Form->disableChildren= true; ClosingInGameOp = true; // like orderup/closingorder InGameOpUp = false; } } ProcessOptionFinished(); //don't add the widgets if the load/save screen is put up or exiting to front end if (bResetMissionWidgets) { //put any widgets back on for the missions resetMissionWidgets(); } return true;}
开发者ID:raquim,项目名称:warzone2100,代码行数:58,
示例4: addQuitOptionsstatic bool addQuitOptions(void){ if (widgGetFromID(psWScreen,INTINGAMEOP)) { widgDelete(psWScreen, INTINGAMEOP); // get rid of the old stuff. } if (widgGetFromID(psWScreen,INTINGAMEPOPUP)) { widgDelete(psWScreen, INTINGAMEPOPUP); // get rid of the old stuff. } W_FORMINIT sFormInit; // add form sFormInit.formID = 0; sFormInit.id = INTINGAMEOP; sFormInit.style = WFORM_PLAIN; sFormInit.width = INTINGAMEOP3_W; sFormInit.height = INTINGAMEOP3_H;; sFormInit.x = (SWORD)INTINGAMEOP3_X; sFormInit.y = (SWORD)INTINGAMEOP3_Y; sFormInit.pDisplay = intOpenPlainForm; sFormInit.disableChildren= true; widgAddForm(psWScreen, &sFormInit); addIGTextButton(INTINGAMEOP_RESUME, INTINGAMEOP_1_Y, INTINGAMEOP_OP_W, _("Resume Game"), OPALIGN); addIGTextButton(INTINGAMEOP_QUIT_CONFIRM, INTINGAMEOP_2_Y, INTINGAMEOP_OP_W, _("Quit"), OPALIGN); if (NetPlay.isHost && bMultiPlayer && NetPlay.bComms) // only show for real MP games { sFormInit.id = INTINGAMEPOPUP; sFormInit.width = 600; sFormInit.height = 26; sFormInit.x = (SWORD)(20+D_W); // center it sFormInit.y = (SWORD) 130; widgAddForm(psWScreen, &sFormInit); W_BUTINIT sButInit; sButInit.formID = INTINGAMEPOPUP; sButInit.style = OPALIGN; sButInit.width = 600; sButInit.height = 10; sButInit.x = 0; sButInit.y = 8; sButInit.pDisplay = displayTextOption; sButInit.id = INTINGAMEOP_POPUP_MSG3; sButInit.pText = _("WARNING: You're the host. If you quit, the game ends for everyone!"); widgAddButton(psWScreen, &sButInit); } return true;}
开发者ID:raquim,项目名称:warzone2100,代码行数:56,
示例5: intRemoveTransDroidsAvail/* Remove the Transporter Droids Avail widgets from the screen */void intRemoveTransDroidsAvail(void){ // Start the window close animation. IntFormAnimated *form = (IntFormAnimated *)widgGetFromID(psWScreen, IDTRANS_DROIDS); if (form) { //remember which tab we were on ListTabWidget *droidList = (ListTabWidget *)widgGetFromID(psWScreen, IDTRANS_DROIDTAB); objMajor = droidList->currentPage(); form->closeAnimateDelete(); }}
开发者ID:muggenhor,项目名称:warzone2100,代码行数:13,
示例6: intRemoveTransDroidsAvailNoAnim/* Remove the Transporter Droids Avail widgets from the screen w/o animation!*/void intRemoveTransDroidsAvailNoAnim(void){ IntFormAnimated *form = (IntFormAnimated *)widgGetFromID(psWScreen, IDTRANS_DROIDS); if (form != nullptr) { //remember which tab we were on ListTabWidget *droidList = (ListTabWidget *)widgGetFromID(psWScreen, IDTRANS_DROIDTAB); objMajor = droidList->currentPage(); //remove main screen delete form; }}
开发者ID:muggenhor,项目名称:warzone2100,代码行数:14,
示例7: intRemoveTransporterLaunch/* Remove the Transporter Launch widget from the screen*/void intRemoveTransporterLaunch(void){ if (widgGetFromID(psWScreen, IDTRANS_LAUNCH) != NULL) { widgDelete(psWScreen, IDTRANS_LAUNCH); }}
开发者ID:muggenhor,项目名称:warzone2100,代码行数:8,
示例8: widgSetBarSize/* Set the current size of a bar graph */void widgSetBarSize(W_SCREEN *psScreen, UDWORD id, UDWORD iValue){ W_BARGRAPH *psBGraph; UDWORD size; ASSERT((PTRVALID(psScreen, sizeof(W_SCREEN)), "widgSetBarSize: Invalid screen pointer")); psBGraph = (W_BARGRAPH *)widgGetFromID(psScreen, id); if (psBGraph == NULL || psBGraph->type != WIDG_BARGRAPH) { ASSERT((FALSE, "widgSetBarSize: Couldn't find widget from id")); return; } if ( iValue < psBGraph->iRange ) { psBGraph->iValue = (UWORD) iValue; } else { psBGraph->iValue = psBGraph->iRange; } size = WBAR_SCALE * psBGraph->iValue / psBGraph->iRange; psBGraph->majorSize = (UWORD)size;}
开发者ID:pheonixstorm,项目名称:wzredemption,代码行数:29,
示例9: widgSetButtonState/* Set a button or clickable form's state */void widgSetButtonState(W_SCREEN *psScreen, UDWORD id, UDWORD state){ WIDGET *psWidget; /* Get the button */ psWidget = widgGetFromID(psScreen, id); ASSERT_OR_RETURN(, psWidget, "Couldn't find button or clickable widget by ID %u", state); if (psWidget->type == WIDG_BUTTON) { buttonSetState((W_BUTTON *)psWidget, state); } else if ((psWidget->type == WIDG_FORM) && (psWidget->style & WFORM_CLICKABLE)) { formSetClickState((W_CLICKFORM *)psWidget, state); } else if ((psWidget->type == WIDG_EDITBOX)) { editBoxSetState((W_EDITBOX *)psWidget, state); } else { ASSERT(false, "Couldn't find button or clickable widget by type %d", (int)psWidget->type); }}
开发者ID:ArtemusRus,项目名称:warzone2100,代码行数:26,
示例10: pushedKeyMapstatic bool pushedKeyMap(UDWORD key){// UDWORD count =0;// id-KM_START// for(selectedKeyMap = keyMappings;// selectedKeyMap->status != KEYMAP_ASSIGNABLE;// (selectedKeyMap->status= KEYMAP__DEBUG) && (selectedKeyMap->status==KEYMAP___HIDE);//// selectedKeyMap = selectedKeyMap->psNext);//// while(count!=key)// {// selectedKeyMap = selectedKeyMap->psNext;// if((selectedKeyMap->status!=KEYMAP__DEBUG)&&(selectedKeyMap->status!=KEYMAP___HIDE)) // if it's not a debug mapping..// if(selectedKeyMap->status == KEYMAP_ASSIGNABLE)// {// count++;// }// } selectedKeyMap = (KEY_MAPPING *)widgGetFromID(psWScreen,key)->pUserData; if(selectedKeyMap && selectedKeyMap->status != KEYMAP_ASSIGNABLE) { selectedKeyMap = NULL; audio_PlayTrack( ID_SOUND_BUILD_FAIL ); } return true;}
开发者ID:ArtemusRus,项目名称:warzone2100,代码行数:29,
示例11: widgClearButtonFlashvoid widgClearButtonFlash(W_SCREEN *psScreen, UDWORD id){ WIDGET *psWidget; /* Get the button */ psWidget = widgGetFromID(psScreen, id); if (psWidget == NULL) { ASSERT(!"Couldn't find widget by ID", "Couldn't find button or clickable widget by ID"); } else if (psWidget->type == WIDG_BUTTON) { buttonClearFlash((W_BUTTON *)psWidget); } else if ((psWidget->type == WIDG_FORM) && (psWidget->style & WFORM_CLICKABLE)) { formClearFlash((W_FORM *)psWidget); } else if ((psWidget->type == WIDG_EDITBOX)) { } else { ASSERT(!"Couldn't find widget by ID", "Couldn't find button or clickable widget by ID"); }}
开发者ID:ArtemusRus,项目名称:warzone2100,代码行数:26,
示例12: intCloseMultiMenu// ////////////////////////////////////////////////////////////////////////////BOOL intCloseMultiMenu(void){ W_TABFORM *Form; if (!MultiMenuUp) { return true; } widgDelete(psWScreen, MULTIMENU_CLOSE); // Start the window close animation. Form = (W_TABFORM*)widgGetFromID(psWScreen,MULTIMENU_FORM); if(Form) { Form->display = intClosePlainForm; Form->pUserData = NULL; // Used to signal when the close anim has finished. Form->disableChildren = true; ClosingMultiMenu = true; MultiMenuUp = false; } if (intMode != INT_INTELMAP) { intMode = INT_NORMAL; } return true;}
开发者ID:blezek,项目名称:warzone2100,代码行数:28,
示例13: startKeyMapEditor// ////////////////////////////////////////////////////////////////////////////bool startKeyMapEditor(bool first){ addBackdrop(); addSideText(FRONTEND_SIDETEXT, KM_SX, KM_Y, _("KEY MAPPING")); if (first) { loadKeyMap(); // get the current mappings. } WIDGET *parent = widgGetFromID(psWScreen, FRONTEND_BACKDROP); IntFormAnimated *kmForm = new IntFormAnimated(parent, false); kmForm->id = KM_FORM; kmForm->setGeometry(KM_X, KM_Y, KM_W, KM_H); addMultiBut(psWScreen, KM_FORM, KM_RETURN, // return button. 8, 5, iV_GetImageWidth(FrontImages, IMAGE_RETURN), iV_GetImageHeight(FrontImages, IMAGE_RETURN), _("Return To Previous Screen"), IMAGE_RETURN, IMAGE_RETURN_HI, IMAGE_RETURN_HI); addMultiBut(psWScreen, KM_FORM, KM_DEFAULT, 11, 45, iV_GetImageWidth(FrontImages, IMAGE_KEYMAP_DEFAULT), iV_GetImageWidth(FrontImages, IMAGE_KEYMAP_DEFAULT), _("Select Default"), IMAGE_KEYMAP_DEFAULT, IMAGE_KEYMAP_DEFAULT_HI, IMAGE_KEYMAP_DEFAULT_HI); // default. // add tab form.. IntListTabWidget *kmList = new IntListTabWidget(kmForm); kmList->setChildSize(KM_ENTRYW, KM_ENTRYH); kmList->setChildSpacing(3, 3); kmList->setGeometry(52, 10, KM_ENTRYW, KM_H - 10 - 25); //Put the buttons on it std::vector<KEY_MAPPING *> mappings; for (KEY_MAPPING *m = keyMappings; m != nullptr; m = m->psNext) { if (m->status != KEYMAP__DEBUG && m->status != KEYMAP___HIDE) // if it's not a debug mapping.. { mappings.push_back(m); } } std::sort(mappings.begin(), mappings.end(), keyMappingSort); /* Add our first mapping to the form */ /* Now add the others... */ for (std::vector<KEY_MAPPING *>::const_iterator i = mappings.begin(); i != mappings.end(); ++i) { W_BUTTON *button = new W_BUTTON(kmList); button->id = KM_START + (i - mappings.begin()); button->pUserData = *i; button->displayFunction = displayKeyMap; kmList->addWidgetToLayout(button); } /* Stop when the right number or when aphabetically last - not sure...! */ /* Go home... */ return true;}
开发者ID:C1annad,项目名称:warzone2100,代码行数:60,
示例14: widgSetColour/* Set a colour on a form */void widgSetColour(W_SCREEN *psScreen, UDWORD id, UDWORD index, PIELIGHT colour){ W_TABFORM *psForm = (W_TABFORM *)widgGetFromID(psScreen, id); ASSERT_OR_RETURN(, psForm && psForm->type == WIDG_FORM, "Could not find form from id %u", id); ASSERT_OR_RETURN(, index < WCOL_MAX, "Colour id %u out of range", index); psForm->aColours[index] = colour;}
开发者ID:BG1,项目名称:warzone2100,代码行数:9,
示例15: widgSetMinorBarSize/* Set the current size of a minor bar on a double graph */void widgSetMinorBarSize(W_SCREEN *psScreen, UDWORD id, UDWORD iValue){ W_BARGRAPH *psBGraph = (W_BARGRAPH *)widgGetFromID(psScreen, id); ASSERT_OR_RETURN(, psBGraph != NULL, "Could not find widget from ID"); ASSERT_OR_RETURN(, psBGraph->type == WIDG_BARGRAPH, "Wrong widget type"); psBGraph->minorSize = MIN(WBAR_SCALE * iValue / MAX(psBGraph->iRange, 1), WBAR_SCALE); psBGraph->dirty = true;}
开发者ID:henryfung01,项目名称:warzone2100,代码行数:9,
示例16: intRemoveTransContent/* Remove the Transporter Content widgets from the screen */void intRemoveTransContent(void){ // Start the window close animation. IntFormAnimated *form = (IntFormAnimated *)widgGetFromID(psWScreen, IDTRANS_CONTENTFORM); if (form) { form->closeAnimateDelete(); }}
开发者ID:muggenhor,项目名称:warzone2100,代码行数:10,
示例17: widgGetFromID/* Return a pointer to a buffer containing the current string of a widget. * NOTE: The string must be copied out of the buffer */const char *widgGetString(W_SCREEN *psScreen, UDWORD id){ const WIDGET *psWidget = widgGetFromID(psScreen, id); ASSERT( psScreen != NULL, "widgGetString: Invalid screen pointer" ); /* Get the widget */ if (psWidget != NULL) { switch (psWidget->type) { case WIDG_FORM: ASSERT( false, "widgGetString: Forms do not have a string" ); aStringRetBuffer[0] = '/0'; break; case WIDG_LABEL: sstrcpy(aStringRetBuffer, ((W_LABEL *)psWidget)->aText); break; case WIDG_BUTTON: if (((W_BUTTON *)psWidget)->pText) { sstrcpy(aStringRetBuffer, ((W_BUTTON *)psWidget)->pText); } else { aStringRetBuffer[0] = '/0'; } break; case WIDG_EDITBOX: { char *utf = UTF32toUTF8(((W_EDITBOX *)psWidget)->aText, NULL); sstrcpy(aStringRetBuffer, utf); free(utf); break; } case WIDG_BARGRAPH: ASSERT( false, "widgGetString: Bar Graphs do not have a string" ); aStringRetBuffer[0] = '/0'; break; case WIDG_SLIDER: ASSERT( false, "widgGetString: Sliders do not have a string" ); aStringRetBuffer[0] = '/0'; break; default: ASSERT(!"Unknown widget type", "Unknown widget type"); aStringRetBuffer[0] = '/0'; break; } } else { ASSERT(!"Couldn't find widget by ID", "widgGetString: couldn't find widget by ID"); aStringRetBuffer[0] = '/0'; } return aStringRetBuffer;}
开发者ID:cybersphinx,项目名称:wzgraphicsmods,代码行数:60,
示例18: widgSetTip/* Set tip string for a widget */void widgSetTip( W_SCREEN *psScreen, UDWORD id, const char *pTip ){ WIDGET *psWidget = widgGetFromID(psScreen, id); if (!psWidget) return; widgSetTipText(psWidget, pTip);}
开发者ID:ArtemusRus,项目名称:warzone2100,代码行数:10,
示例19: addSlideOptionsstatic bool addSlideOptions(void){ if (widgGetFromID(psWScreen,INTINGAMEOP)) { widgDelete(psWScreen, INTINGAMEOP); // get rid of the old stuff. } W_FORMINIT sFormInit; // add form sFormInit.formID = 0; sFormInit.id = INTINGAMEOP; sFormInit.style = WFORM_PLAIN; sFormInit.x = (SWORD)INTINGAMEOP2_X; sFormInit.y = (SWORD)INTINGAMEOP2_Y; sFormInit.width = INTINGAMEOP2_W; sFormInit.height = INTINGAMEOP2_H; sFormInit.pDisplay = intOpenPlainForm; sFormInit.disableChildren= true; widgAddForm(psWScreen, &sFormInit); // fx vol addIGTextButton(INTINGAMEOP_FXVOL, INTINGAMEOP_1_Y, INTINGAMEOP_OP_W, _("Voice Volume"), WBUT_PLAIN); addFESlider(INTINGAMEOP_FXVOL_S, INTINGAMEOP, INTINGAMEOP_MID, INTINGAMEOP_1_Y-5, AUDIO_VOL_MAX, (int)(sound_GetUIVolume() * 100.0)); // fx vol addIGTextButton(INTINGAMEOP_3DFXVOL, INTINGAMEOP_2_Y, INTINGAMEOP_OP_W, _("FX Volume"), WBUT_PLAIN); addFESlider(INTINGAMEOP_3DFXVOL_S, INTINGAMEOP, INTINGAMEOP_MID, INTINGAMEOP_2_Y-5, AUDIO_VOL_MAX, (int)(sound_GetEffectsVolume() * 100.0)); // cd vol addIGTextButton(INTINGAMEOP_CDVOL, INTINGAMEOP_3_Y, INTINGAMEOP_OP_W, _("Music Volume"), WBUT_PLAIN); addFESlider(INTINGAMEOP_CDVOL_S, INTINGAMEOP, INTINGAMEOP_MID, INTINGAMEOP_3_Y-5, AUDIO_VOL_MAX, (int)(sound_GetMusicVolume() * 100));#ifdef DEBUG // Tactical UI: Target Origin if(tuiTargetOrigin) { addIGTextButton(INTINGAMEOP_TUI_TARGET_ORIGIN_SW, INTINGAMEOP_4_Y, INTINGAMEOP_SW_W, _("Tactical UI (Target Origin Icon): Show"), WBUT_PLAIN); } else { addIGTextButton(INTINGAMEOP_TUI_TARGET_ORIGIN_SW, INTINGAMEOP_4_Y, INTINGAMEOP_SW_W, _("Tactical UI (Target Origin Icon): Hide"), WBUT_PLAIN); }#endif addIGTextButton(INTINGAMEOP_RESUME, INTINGAMEOP_5_Y, INTINGAMEOP_SW_W, _("Resume Game"), OPALIGN); return true;}
开发者ID:raquim,项目名称:warzone2100,代码行数:56,
示例20: widgSetUserData2/* Set user data for a widget */void widgSetUserData2(W_SCREEN *psScreen, UDWORD id,UDWORD UserData){ WIDGET *psWidget; psWidget = widgGetFromID(psScreen, id); if (psWidget) { psWidget->UserData = UserData; }}
开发者ID:ArtemusRus,项目名称:warzone2100,代码行数:11,
示例21: intRemoveTransDroidsAvailNoAnim/* Remove the Transporter Droids Avail widgets from the screen w/o animation!*/void intRemoveTransDroidsAvailNoAnim(void){ if (widgGetFromID(psWScreen, IDTRANS_DROIDS) != NULL) { //remember which tab we were on widgGetTabs(psWScreen, IDTRANS_DROIDTAB, &objMajor, &objMinor); //remove main screen widgDelete(psWScreen, IDTRANS_DROIDS); }}
开发者ID:Emdek,项目名称:warzone2100,代码行数:12,
示例22: intUpdateOrder// update the order interface only if it is already open.// NOTE: Unused! bool intUpdateOrder(DROID *psDroid)bool intUpdateOrder(DROID *psDroid){ if(widgGetFromID(psWScreen,IDORDER_FORM) != NULL && OrderUp) { widgDelete(psWScreen, IDORDER_CLOSE); //changed to a BASE_OBJECT to accomodate the factories - AB 21/04/99 //intAddOrder(psDroid); intAddOrder((BASE_OBJECT *)psDroid); } return true;}
开发者ID:Emdek,项目名称:warzone2100,代码行数:14,
示例23: pushedKeyMapstatic bool pushedKeyMap(UDWORD key){ selectedKeyMap = (KEY_MAPPING *)widgGetFromID(psWScreen,key)->pUserData; if(selectedKeyMap && selectedKeyMap->status != KEYMAP_ASSIGNABLE) { selectedKeyMap = NULL; audio_PlayTrack( ID_SOUND_BUILD_FAIL ); } return true;}
开发者ID:noccy80,项目名称:warzone2100,代码行数:12,
示例24: widgGetFromID/* Return the user data for a widget */void *widgGetUserData(W_SCREEN *psScreen, UDWORD id){ WIDGET *psWidget; psWidget = widgGetFromID(psScreen, id); if (psWidget) { return psWidget->pUserData; } return NULL;}
开发者ID:ArtemusRus,项目名称:warzone2100,代码行数:13,
示例25: widgGetUserData2/* Return the user data for a widget */UDWORD widgGetUserData2(W_SCREEN *psScreen, UDWORD id){ WIDGET *psWidget; psWidget = widgGetFromID(psScreen, id); if (psWidget) { return psWidget->UserData; } return 0;}
开发者ID:ArtemusRus,项目名称:warzone2100,代码行数:13,
注:本文中的widgGetFromID函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ widget函数代码示例 C++ widen函数代码示例 |