C语言注释符号如何使用(c语言,开发技术)

时间:2024-05-10 09:30:13 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

一、注释规则

  • 编译器在编译过程中使用空格替换整个注释

  • 字符串字面量中的 // 和 /*...*/ 不代表注释符号

  • /*......*/ 型注释不能被嵌套

下面看一下这样一段代码:

#include<stdio.h>intmain(){int/*...*/i;char*s="abcdefgh//hijklmn";//Isita\validcomment?in/*...*/ti;return0;}

下面为编译结果,可以看到只有 12 行报错:

C语言注释符号如何使用

下面按照编译规则对代码进行一下改进:

#include<stdio.h>intmain(){inti;char*s="abcdefgh//hijklmn";inti;return0;}

所以说当然 in/*...*/t i; 会报错。

二、注释中一个有趣的问题

y=x/*p是什么意思?

作者本意:把 &times; 除以 *p 的结果赋值给y 。

编译器:将 /* 作为一段注释的开始,把 /* 后的内容都当成注释内容,直到 */ 出现为止。

在编译器看来,注释和其它程序元素是平等的。因此,作为工程师不能轻视注释。

#include<stdio.h>intmain(){inty=1;intx=2;int*p=&x;y=x/*p;return0;}

编译结果和预想的一样会报错:

C语言注释符号如何使用

解决办法就是在 * 和 / 中间加上空格就好。

#include<stdio.h>intmain(){inty=1;intx=2;int*p=&x;y=x/*p;return0;}

三、教科书型注释

C语言注释符号如何使用

这种注释每一行都解释程序的运行过程,没有很大的意义,注释用于阐述原因和意图而不是描述程序的运行过程!

四、迷惑型的注释

C语言注释符号如何使用

写注释不是晒心情,必须无二义性,起到对代码进行提示的作用,避免使用缩写!

五、忽悠型注释

C语言注释符号如何使用

注释是对代码的提示,避免臃肿和喧宾夺主。

六、搞笑型注释

C语言注释符号如何使用

佛祖是佛学专业的大师,但是没学过编程,因此保佑不了你,你只能靠自己避开BUG。

七、漂亮的程序注释

下面为一个高通公司写的一段代码,不管是语句的注释,还是函数的注释,还是整体代码风格,都看起来非常舒服。

/*========================================================================FILE:Form.cSERVICES:GENERALDESCRIPTION:ConcreteimplementationofRootFormandbaseIFormmethods================================================================================================================================================Copyright?1999-2005QUALCOMMIncorporatedAllRightsReserved.QUALCOMMProprietary/GTDR================================================================================================================================================*//*==================================================================================XXXXXXXConfidentialProprietary(c)CopyrightXXXXXXX-AllRightsReservedRevisionHistory:ModificationAuthorDateCRNumberMajorChanges--------------------------------------------------------------------------DanielRossler01/18/2007LIBkk94550AddcheckforNULLpointersinordertoavoidapanic==================================================================================*/#include"FormBase.h"#include"AEESoftkeyWidget.h"#include"AEEImageWidget.h"#include"AEEStaticWidget.h"#include"AEEImageStaticWidget.h"#include"AEERootContainer.h"#include"AEEWProperties.h"#include"AEEVectorModel.h"#include"AEEWeb.h"#include"AEERootForm.h"#include"AEEResFile.h"#include"FormUtil.h"#include"AEEDisplayCanvas.h"#defineFORMSTACK_MIN10#defineFORMSTACK_GROW2///RootFormtypedefstructRootForm{Formbase;IRootContainer*piContainer;AEERectrcContainer;AEERectrcClient;IVectorModel*piForms;ModelListenermlFormActive;ModelListenermlFormTopmostNonPopup;IWidget*piTitle;ImageStaticInfotitleInfo;IWidget*piSoftkeys;IWidget*piBackground;IWidget*piActiveWidget;IResFile*piThemeFile;constchar*themeFile;}RootForm;#defineDECL(c)c*me=(c*)postatic__inlineIForm*ROOTFORM_TO_IFORM(RootForm*me){return(IForm*)me;}static__inlineForm*ROOTFORM_TO_FORM(RootForm*me){return(Form*)me;}static__inlineIRootForm*ROOTFORM_TO_IROOTFORM(RootForm*me){return(IRootForm*)me;}staticvoidRootForm_FreeFormEntry(IForm*po){IFORM_Release(po);}staticvoidRootForm_UpdateClientArea(RootForm*me){WidgetPospos;WExtenttitleExtent,skExtent;if(me->piSoftkeys){IWIDGET_GetExtent(me->piSoftkeys,&skExtent);//AdjustsoftkeypositionbasedoncurrentheightIROOTCONTAINER_GetPos(me->piContainer,me->piSoftkeys,&pos);pos.y=me->rcContainer.dy-skExtent.height;IROOTCONTAINER_SetPos(me->piContainer,me->piSoftkeys,WIDGET_ZNORMAL,&pos);}else{SETWEXTENT(&skExtent,0,0);}if(me->piTitle){IWIDGET_GetExtent(me->piTitle,&titleExtent);}else{SETWEXTENT(&titleExtent,0,0);}//CalculateclientareaSETAEERECT(&me->rcClient,0,titleExtent.height,me->rcContainer.dx,me->rcContainer.dy-skExtent.height-titleExtent.height);}staticvoidRootForm_UpdateTheme(RootForm*me,constchar*baseName){WExtentwextent;BUIT_LOG("FORMSEVT:UpdateThemeStartedfor%s",baseName);if(!me->piThemeFile)return;if(me->piTitle){IWIDGET_SetProperties(me->piTitle,me->piThemeFile,baseName,"Title","Properties",0);IWIDGET_GetPreferredExtent(me->piTitle,&wextent);wextent.width=me->rcContainer.dx;IWIDGET_SetExtent(me->piTitle,&wextent);}if(me->piSoftkeys){IWIDGET_SetProperties(me->piSoftkeys,me->piThemeFile,baseName,"Softkeys","Properties",0);IWIDGET_GetPreferredExtent(me->piSoftkeys,&wextent);wextent.width=me->rcContainer.dx;IWIDGET_SetExtent(me->piSoftkeys,&wextent);}if(me->piBackground){IWIDGET_SetProperties(me->piBackground,me->piThemeFile,baseName,"Background","Properties",0);}//UpdateclientareasincesizesmayhavechangedRootForm_UpdateClientArea(me);BUIT_LOG("FORMSEVT:UpdateThemeFinishedfor%s",baseName);}//updatestherootformwiththebackgroundimage,softkeyand//titletextoftheTOSform.staticvoidRootForm_Update(RootForm*me,uint32dwItemMask,IForm*piForm){booleanbPopup=0;//getform'spopupflagbPopup=IFORM_GetIsPopup(piForm);//iftheform'swidgethaschanged,updatethescrollmodel//forthescrollindicatorinthesoftkeywidgetif(dwItemMask&FORMITEM_WIDGET){IWidget*piWidget=NULL;//getform'swidgetIFORM_GetWidget(piForm,WID_FORM,&piWidget);//updatethewidgetandthescrollmodelif(piWidget){//iftheactivewidgethasbeenchangedunderneathus...if(me->piActiveWidget&&piWidget!=me->piActiveWidget){//thisblockwillonlybeexecutedwhentheformwidgetischanged//bytheapplicationlogicwhiletheformisactiveWidgetPospos;WExtentwe;IWIDGET_MoveFocus(FORM_WIDGET(me),(IWidget*)WIDGET_FOCUS_NONE);IWIDGET_GetExtent(me->piActiveWidget,&we);IWIDGET_SetExtent(piWidget,&we);//removethepreviouslyactivewidgetfromtherootcontainerif(AEE_SUCCESS==IROOTCONTAINER_GetPos(me->piContainer,me->piActiveWidget,&pos)){IROOTCONTAINER_Remove(me->piContainer,me->piActiveWidget);}//addthenewwidgettotherootcontainerIROOTCONTAINER_Insert(me->piContainer,piWidget,WIDGET_ZTOPMOST,&pos);//andrememberitfondlyRELEASEIF(me->piActiveWidget);me->piActiveWidget=piWidget;ADDREFIF(piWidget);//setfocustothenewwidgetIWIDGET_MoveFocus(FORM_WIDGET(me),piWidget);}elseif(!me->piActiveWidget){me->piActiveWidget=piWidget;ADDREFIF(piWidget);}}RELEASEIF(piWidget);}//iftheform'sbackgroundimagehaschanged...//ifformisapopup,thenretainthebackgroundimage//fromthepreviousformif(dwItemMask&FORMITEM_BACKGROUND&&me->piBackground&&!bPopup){IImage*pii=NULL;//Trytograbtheimagefromthenewform.IFORM_GetBGImage(piForm,&pii);//Ifnon-existent,trydefaultingtotherootformif(!pii)IFORM_GetBGImage(ROOTFORM_TO_IFORM(me),&pii);//Applytheresult(NULLorotherwise)toourbackgroundwidgetIWIDGET_SetImage(me->piBackground,pii);RELEASEIF(pii);}//iftheform'stitletexthaschanged...retainprevioustitle//ifweareapopupif((dwItemMask&FORMITEM_TITLE)&&me->piTitle&&!bPopup){//Releaseimage.TextisownedbyformRELEASEIF(me->titleInfo.piImage);IFORM_GetTextPtr(piForm,FID_TITLE,&me->titleInfo.pwText);IFORM_GetTitleImage(piForm,&me->titleInfo.piImage);//SettitleinfoIWIDGET_SetImageStaticInfo(me->piTitle,&me->titleInfo,0);}//iftheform'ssoftkeytexthaschanged...if((dwItemMask&FORMITEM_SOFTKEY)&&me->piSoftkeys){IForm*piTopForm=IROOTFORM_GetTopForm(ROOTFORM_TO_IROOTFORM(me));AECHAR*pwsz=NULL;IWidget*piKey=NULL;if(piTopForm==piForm){//setsoftkey1textIFORM_GetTextPtr(piForm,FID_SOFTKEY1,&pwsz);if(AEE_SUCCESS==IWIDGET_GetSoftkey(me->piSoftkeys,PROP_SOFTKEY1,&piKey)){IWIDGET_SetText(piKey,pwsz,0);}RELEASEIF(piKey);//setsoftkey2textIFORM_GetTextPtr(piForm,FID_SOFTKEY2,&pwsz);if(AEE_SUCCESS==IWIDGET_GetSoftkey(me->piSoftkeys,PROP_SOFTKEY2,&piKey)){IWIDGET_SetText(piKey,pwsz,0);}}RELEASEIF(piKey);}if((dwItemMask&FORMITEM_THEME_BASENAME)){char*baseName=0;IFORM_GetThemeBaseName(piForm,&baseName);RootForm_UpdateTheme(me,baseName);}}staticbooleanRootForm_ReplaceWidget(RootForm*me,IWidget**piw,IWidget*piwNew,IWidget*piwBefore){intresult=AEE_SUCCESS;WidgetPospos;if(*piw){(void)IROOTCONTAINER_GetPos(me->piContainer,*piw,&pos);(void)IROOTCONTAINER_Remove(me->piContainer,*piw);IWIDGET_Release(*piw);}if(piwNew){result=IROOTCONTAINER_Insert(me->piContainer,piwNew,piwBefore,&pos);if(result==AEE_SUCCESS){IWIDGET_AddRef(piwNew);}else{piwNew=NULL;}}*piw=piwNew;//DoanupdatesinceextentsmayhavechangedRootForm_UpdateClientArea(me);return(AEE_SUCCESS==result);}staticintRootForm_SetThemeName(RootForm*me,constchar*themeFile){if(!me->piThemeFile)returnEBADSTATE;FREEIF(me->themeFile);me->themeFile=STRDUP(themeFile);IRESFILE_Close(me->piThemeFile);if(themeFile)returnIRESFILE_Open(me->piThemeFile,themeFile);elsereturnAEE_SUCCESS;}staticintRootForm_SetDisplay(RootForm*me,IDisplay*piDisplay){intnErr=AEE_SUCCESS;IDisplayCanvas*piCanvas=0;nErr=ISHELL_CreateInstance(FORM_SHELL(me),AEECLSID_DISPLAYCANVAS,(void**)&piCanvas);if(!nErr){WExtentextent;WidgetPospos;IDISPLAY_SetClipRect(piDisplay,NULL);//resettheclippingrectangleIDISPLAY_GetClipRect(piDisplay,&me->rcContainer);SETAEERECT(&me->rcClient,0,0,me->rcContainer.dx,me->rcContainer.dy);IDISPLAYCANVAS_SetDisplay(piCanvas,piDisplay);IROOTCONTAINER_SetCanvas(me->piContainer,(ICanvas*)piCanvas,&me->rcContainer);if(me->piTitle){//Setextent,titleisalreadypositionedat0,0IWIDGET_GetExtent(me->piTitle,&extent);extent.width=me->rcContainer.dx;IWIDGET_SetExtent(me->piTitle,&extent);}if(me->piBackground){//Setextent,backgroundisalreadypositionedat0,0extent.width=me->rcContainer.dx;extent.height=me->rcContainer.dy;IWIDGET_SetExtent(me->piBackground,&extent);}if(me->piSoftkeys){//SetextentIWIDGET_GetExtent(me->piSoftkeys,&extent);extent.width=me->rcContainer.dx;IWIDGET_SetExtent(me->piSoftkeys,&extent);//AndpositionatbottomofscreenIROOTCONTAINER_GetPos(me->piContainer,me->piSoftkeys,&pos);pos.y=me->rcContainer.dy-extent.height;IROOTCONTAINER_SetPos(me->piContainer,WIDGET_ZNORMAL,me->piSoftkeys,&pos);}}RELEASEIF(piCanvas);returnnErr;}staticvoidRootForm_ApplyTheme(RootForm*me){intnrForms,i;if(!me->piThemeFile)return;nrForms=IVECTORMODEL_Size(me->piForms);for(i=0;i<nrForms;i++){IForm*piForm;char*pTheme=0;IVECTORMODEL_GetAt(me->piForms,i,(void**)&piForm);IFORM_GetThemeBaseName(ROOTFORM_TO_IFORM(me),&pTheme);pTheme=(pTheme)?pTheme:"(None)";BUIT_LOG("FORMSEVT:ApplyThemeStartedfor%s",pTheme);IFORM_ApplyTheme(piForm);BUIT_LOG("FORMSEVT:ApplyThemeFinishedfor%s",pTheme);}if(nrForms==0){char*baseName=0;IFORM_GetThemeBaseName(ROOTFORM_TO_IFORM(me),&baseName);#ifdefFEATURE_MOT_BREWif(baseName!=NULL){ RootForm_UpdateTheme(me,baseName);}#elseRootForm_UpdateTheme(me,baseName);#endif/*FEATURE_MOT_BREW*/}}booleanRootForm_HandleEvent(IRootForm*po,AEEEventevt,uint16wParam,uint32dwParam){DECL(RootForm);if(FORM_WIDGET(me)&&IWIDGET_HandleEvent(FORM_WIDGET(me),evt,wParam,dwParam))returnTRUE;if(evt==EVT_WDG_GETPROPERTY){switch(wParam){caseFID_THEME_FNAME:*(constchar**)dwParam=me->themeFile;returnTRUE;caseFID_THEME_FILE:*(IResFile**)dwParam=me->piThemeFile;ADDREFIF(me->piThemeFile);returnTRUE;caseWID_TITLE:*(IWidget**)dwParam=me->piTitle;ADDREFIF(me->piTitle);returnTRUE;caseWID_SOFTKEYS:*(IWidget**)dwParam=me->piSoftkeys;ADDREFIF(me->piSoftkeys);returnTRUE;caseWID_BACKGROUND:*(IWidget**)dwParam=me->piBackground;ADDREFIF(me->piBackground);returnTRUE;caseWID_FORM:IROOTCONTAINER_QueryInterface(me->piContainer,AEEIID_WIDGET,(void**)dwParam);returnTRUE;caseWID_CONTAINER:*(IContainer**)dwParam=IROOTCONTAINER_TO_ICONTAINER(me->piContainer);ADDREFIF(me->piContainer);returnTRUE;default://FallbackonformbasereturnForm_HandleEvent(ROOTFORM_TO_IFORM(me),evt,wParam,dwParam);}}elseif(evt==EVT_WDG_SETPROPERTY){IForm*piForm=0;switch(wParam){caseFID_ACTIVE:piForm=IROOTFORM_GetTopForm(po);if(piForm){//Activateorde-activatethetopformIFORM_SetProperty(piForm,FID_ACTIVE,dwParam);}//andinvalidaterootcontaineronactivationif((boolean)dwParam){IROOTCONTAINER_Invalidate(me->piContainer,0,0,0);}returnTRUE;caseFID_THEME:RootForm_ApplyTheme(me);returnTRUE;caseFID_THEME_FNAME:if(AEE_SUCCESS==RootForm_SetThemeName(me,(constchar*)dwParam)){RootForm_ApplyTheme(me);returnTRUE;}returnFALSE;caseFID_BACKGROUND://Ifwehaveabackgroundwidget,settheimageintoitif(me->piBackground){IWIDGET_SetFormImage(me->piBackground,FORM_SHELL(me),(FormRes*)dwParam);}//Alsoloadtheimageintoourinternalform,whichwillholditasadefaultforotherformsreturnForm_HandleEvent(ROOTFORM_TO_IFORM(me),evt,wParam,dwParam);caseFID_DISPLAY:returnAEE_SUCCESS==RootForm_SetDisplay(me,(IDisplay*)dwParam);caseFID_WPROPS:{WPropDesc*pdesc=(WPropDesc*)dwParam;WResPropDescwd;wd.piResFile=me->piThemeFile;if(pdesc){wd.args=pdesc->args;wd.piWidget=pdesc->piWidget;}returnIWIDGET_SetProperty(pdesc->piWidget,PROP_APPLYWPROPS,(uint32)&wd);}caseWID_TITLE:returnRootForm_ReplaceWidget(me,&me->piTitle,(IWidget*)dwParam,WIDGET_ZNORMAL);caseWID_SOFTKEYS:returnRootForm_ReplaceWidget(me,&me->piSoftkeys,(IWidget*)dwParam,WIDGET_ZNORMAL);caseWID_BACKGROUND:returnRootForm_ReplaceWidget(me,&me->piBackground,(IWidget*)dwParam,WIDGET_ZBOTTOMMOST);default://FallbackonformbasereturnForm_HandleEvent(ROOTFORM_TO_IFORM(me),evt,wParam,dwParam);}}//Nonget/setpropertyeventsaresentontothetopmostform{IForm*piForm=IROOTFORM_GetTopForm(po);if(!piForm)returnFALSE;elsereturnIFORM_HandleEvent(piForm,evt,wParam,dwParam);}}staticvoidRootForm_UpdateActiveListenerCB(RootForm*me,FormEvent*pEvent){if(pEvent->base.evCode==EVT_MDL_FORM_CHANGE){RootForm_Update(me,pEvent->dwItemMask,pEvent->piForm);}}staticvoidRootForm_UpdateTopmostNonPopupListenerCB(RootForm*me,FormEvent*pEvent){uint32dwItemMask=pEvent->dwItemMask&(FORMITEM_BACKGROUND|FORMITEM_TITLE|FORMITEM_SOFTKEY);if(pEvent->base.evCode==EVT_MDL_FORM_CHANGE&&dwItemMask){RootForm_Update(me,dwItemMask,pEvent->piForm);}}staticvoidRootForm_ShowFormWidget(IRootForm*po,IForm*piForm,booleanbShow,booleanbFocus){DECL(RootForm);WidgetPospos;IWidget*piWidget;if(!piForm)return;IFORM_GetWidget(piForm,WID_FORM,&piWidget);if(!piWidget)return;//SetvisibilityIROOTCONTAINER_GetPos(me->piContainer,piWidget,&pos);pos.bVisible=bShow;IROOTCONTAINER_SetPos(me->piContainer,piWidget,WIDGET_ZNORMAL,&pos);//andsetfocustothewidgetif(bShow&&bFocus){IWIDGET_MoveFocus(FORM_WIDGET(me),piWidget);}else{IWIDGET_MoveFocus(FORM_WIDGET(me),WIDGET_FOCUS_NONE);}IWIDGET_Release(piWidget);}/**Activatesagivenform.PreviousformshouldhavebeendeactivatedbeforethisiscalledwithbActivateset*/staticvoidRootForm_ActivateForm(IRootForm*po,IForm*piForm,booleanbActivate){DECL(RootForm);if(!piForm)return;if(bActivate){//UndothecurrentlyknownactivewidgetRELEASEIF(me->piActiveWidget);IFORM_GetWidget(piForm,WID_FORM,&me->piActiveWidget);//Thengoupdatealltheitemsexcepttheformswidgetasthisisnotthe//formupdatingitsownwidget.Needtoupdatefirstsincethemeinformation//affectclientareawhichaffectsformactivationRootForm_Update(me,FORMITEM_ALL&~FORMITEM_WIDGET,piForm);//thenactivateIFORM_Activate(piForm);}else{IFORM_Deactivate(piForm);}}staticintRootForm_GetFormIndex(RootForm*me,IForm**ppiForm){IForm*piForm;intnrForms;nrForms=IVECTORMODEL_Size(me->piForms);if(nrForms>0){if(*ppiForm==FORM_LAST||*ppiForm==FORM_DEFAULT){IVECTORMODEL_GetAt(me->piForms,nrForms-1,(void**)ppiForm);returnnrForms-1;}elseif(*ppiForm==FORM_FIRST){IVECTORMODEL_GetAt(me->piForms,0,(void**)ppiForm);return0;}else{inti;for(i=0;i<nrForms;i++){IVECTORMODEL_GetAt(me->piForms,i,(void**)&piForm);if(piForm==*ppiForm)returni;}}}return-1;}static__inlineintRootForm_GetFormInsertionIndex(RootForm*me,IForm**ppiForm){intdelta;if(*ppiForm==FORM_FIRST)return0;if(*ppiForm==FORM_LAST||*ppiForm==FORM_DEFAULT){delta=1;}else{delta=0;}returnRootForm_GetFormIndex(me,ppiForm)+delta;}staticvoidRootForm_StackChange(IRootForm*po){DECL(RootForm);IForm*piTopForm=IROOTFORM_GetTopForm(po);LISTENER_Cancel(&me->mlFormActive);LISTENER_Cancel(&me->mlFormTopmostNonPopup);//Iftherearestillformsonthestack,thenweneedtosetupseveralthings://1.Thetopmostformistheactiveform//2.Allotherformsarenotactive//3.ThetopmostformisbeinglistenedtoviamlFormActive//4.Thetopmostnon-popupformisbeinglistenedtoviamlFormTopmostNonPopup//5.Thetopmostnon-popupformandallpopupformsontopofitareshown//6.Formsbelowthetopmostnon-popupformarenowshownif(piTopForm){booleanbFoundTopmostNonPopup=FALSE;IModel*piModel=NULL;IForm*pif;//LoggingstackchangebeginBUIT_LOG("FORMSEVT:StackChangeStarting...",1);//Needtodealwiththenon-activeformsfirst,thentheactiveformfor(pif=piTopForm;pif;pif=IROOTFORM_GetForm(po,pif,FALSE,FALSE)){booleanbPopup;bPopup=IFORM_GetIsPopup(pif);IFORM_GetFormModel(pif,&piModel);if(piModel){if(pif!=piTopForm){RootForm_ShowFormWidget(po,pif,(boolean)(bFoundTopmostNonPopup?FALSE:TRUE),FALSE);if(IFORM_IsActive(pif)){RootForm_ActivateForm(po,pif,FALSE);}}if(!bPopup&&!bFoundTopmostNonPopup){IMODEL_AddListenerEx(piModel,&me->mlFormTopmostNonPopup,(PFNLISTENER)RootForm_UpdateTopmostNonPopupListenerCB,me);if(pif!=piTopForm)//Onlyupdateifnotthetopmostformsincethe//ActivatebelowappliesthemeagainThetopmost//non-popup(butnotthetop!)influencesthe//background,titleansassociatedthemesRootForm_Update(me,FORMITEM_BACKGROUND|FORMITEM_TITLE|FORMITEM_THEME_BASENAME,pif);bFoundTopmostNonPopup=TRUE;}}RELEASEIF(piModel);}RootForm_ActivateForm(po,piTopForm,TRUE);RootForm_ShowFormWidget(po,piTopForm,TRUE,TRUE);IFORM_GetFormModel(piTopForm,&piModel);if(piModel)IMODEL_AddListenerEx(piModel,&me->mlFormActive,(PFNLISTENER)RootForm_UpdateActiveListenerCB,me);RELEASEIF(piModel);//Logthattheformisabouttobeactivated-allthemestuffhashappenedbynow)BUIT_LOG("FORMSEVT:StackChangeFinished",1);}//NotifychangeinstackForm_Notify(ROOTFORM_TO_FORM(me),FORMITEM_STACK);}intRootForm_InsertForm(IRootForm*po,IForm*piForm,IForm*pifBefore){DECL(RootForm);IWidget*piWidget=0;IWidget*piwBefore=0;IForm*pifCurrent;intnrForms,formIndex,nErr;if(!piForm)returnEBADPARM;//Makesurewecaninsert,gettheindexwewanttoinsertatformIndex=RootForm_GetFormInsertionIndex(me,&pifBefore);if(formIndex<0)returnEBADPARM;nrForms=IVECTORMODEL_Size(me->piForms);pifCurrent=IROOTFORM_GetTopForm(po);//GetwidgettoinsertIFORM_GetWidget(piForm,WID_FORM,&piWidget);//Getwidgetinsertionpoint.if(formIndex==nrForms||!nrForms){piwBefore=WIDGET_ZTOPMOST;}elseif(pifBefore==FORM_FIRST){if(me->piBackground!=NULL){//Ifwehaveabackgroundwidget,trytoinserttheform'swidget//abovethebackgroundwidgetpiwBefore=IROOTCONTAINER_GetWidget(me->piContainer,me->piBackground,TRUE,FALSE);if(piwBefore){//Addareference,soitcanbereleasedbelow.IWIDGET_AddRef(piwBefore);}}if(!piwBefore){//Nobackgroundwidget,inserttheform'swidgetatthebottom.piwBefore=WIDGET_ZBOTTOMMOST;}}else{IFORM_GetWidget(pifBefore,WID_FORM,&piwBefore);}//MakesurewehavespaceforthenewformnErr=IVECTORMODEL_EnsureCapacity(me->piForms,MAX(FORMSTACK_MIN,nrForms+1),FORMSTACK_GROW);//Nowinsertif(!nErr&&piWidget&&piwBefore){WidgetPospos;//NotreallyneededheresinceActivatedoesthisto,butsince//weneedtogiveapositiononinsertwemayaswelldoit//rightpos.x=me->rcClient.x;pos.y=me->rcClient.y;pos.bVisible=(piwBefore==WIDGET_ZTOPMOST);//InsertwidgetintowidgetstacknErr=IROOTCONTAINER_Insert(me->piContainer,piWidget,piwBefore,&pos);}if(!nErr){char*pTheme=0;//AddformtoformstackIVECTORMODEL_InsertAt(me->piForms,formIndex,piForm);IFORM_AddRef(piForm);//SetrootformIFORM_SetProperty(piForm,FID_ROOT,(uint32)po);//LoginfoIFORM_GetThemeBaseName(ROOTFORM_TO_IFORM(me),&pTheme);pTheme=(pTheme)?pTheme:"(None)";BUIT_LOG("FORMSEVT:InsertSetThemeStartedfor%s",pTheme);//SetthemeonnewformIFORM_ApplyTheme(piForm);BUIT_LOG("FORMSEVT:InsertSetThemeFinishedfor%s",pTheme);//RootForm_Update(me,FORMITEM_THEME,piForm);RootForm_StackChange(po);}RELEASEIF(piWidget);if(piwBefore!=WIDGET_ZTOPMOST&&piwBefore!=WIDGET_ZBOTTOMMOST)RELEASEIF(piwBefore);returnnErr;}intRootForm_RemoveForm(IRootForm*po,IForm*piForm){DECL(RootForm);IWidget*piWidget=0;IForm*piF=0;intnrForms=0;intformIndex;booleanbOnlyPopups=1;if(me->piForms)nrForms=IVECTORMODEL_Size(me->piForms);if(piForm==FORM_ALL){while(nrForms>0){IROOTFORM_RemoveForm(po,FORM_LAST);nrForms=IVECTORMODEL_Size(me->piForms);}}else{formIndex=RootForm_GetFormIndex(me,&piForm);if(formIndex<0)returnEBADPARM;IFORM_GetWidget(piForm,WID_FORM,&piWidget);if(piWidget){IROOTCONTAINER_Remove(me->piContainer,piWidget);}//HideformwidgetRootForm_ShowFormWidget(po,piForm,FALSE,FALSE);//DeactivateformRootForm_ActivateForm(po,piForm,FALSE);//TellitofrootformdepartureIFORM_SetProperty(piForm,FID_ROOT,0);//DeleteitfromthestackIVECTORMODEL_DeleteAt(me->piForms,formIndex);RootForm_StackChange(po);RELEASEIF(piWidget);//Nowmanyformsdowenowhave?nrForms=IVECTORMODEL_Size(me->piForms);}//Cyclethroughremainingformstodeterminetypefor(piF=IROOTFORM_GetTopForm(po);piF&&bOnlyPopups;piF=IROOTFORM_GetForm(po,piF,FALSE,FALSE)){bOnlyPopups&=IFORM_GetIsPopup(piF);}if((0==nrForms)||bOnlyPopups){//Ifwedon'thaveanymoreforms,ortheonlyformswedohavearepopups,//ensurethetitlehasbeencleaned(thetitlememoryisownedbythelastfullscreenform,//whichmaynolongerexist).if(me->piTitle){//Releaseimage.TextisownedbyformRELEASEIF(me->titleInfo.piImage);me->titleInfo.pwText=NULL;//SettitleinfoIWIDGET_SetImageStaticInfo(me->piTitle,&me->titleInfo,0);}}if(0==nrForms){//Therearenomoreforms,ensurethesoftkeylabels//havebeencleaned(thesoftkeymemoryisownedbytheform,whichmayno//longerexist).if(me->piSoftkeys){IWidget*piKey=NULL;(void)IWIDGET_GetSoftkey(me->piSoftkeys,PROP_SOFTKEY1,&piKey);if(piKey){IWIDGET_SetText(piKey,NULL,0);IWIDGET_Release(piKey);piKey=NULL;}(void)IWIDGET_GetSoftkey(me->piSoftkeys,PROP_SOFTKEY2,&piKey);if(piKey){IWIDGET_SetText(piKey,NULL,0);IWIDGET_Release(piKey);piKey=NULL;}}}else{RootForm_Update(me,FORMITEM_THEME_BASENAME,IROOTFORM_GetTopForm(po));}returnAEE_SUCCESS;}voidRootForm_GetClientRect(IRootForm*po,IXYContainer**ppo,AEERect*rc){DECL(RootForm);if(rc){*rc=me->rcClient;}if(ppo&&me->piContainer){*ppo=IROOTCONTAINER_TO_IXYCONTAINER(me->piContainer);IROOTCONTAINER_AddRef(me->piContainer);}}IForm*RootForm_GetForm(IRootForm*po,IForm*pifRef,booleanbNext,booleanbWrap){DECL(RootForm);IForm*piForm=0;intnrForms,formIndex;if(me->piForms==NULL)returnNULL;nrForms=IVECTORMODEL_Size(me->piForms);if(pifRef==NULL){formIndex=bNext?0:nrForms-1;IVECTORMODEL_GetAt(me->piForms,formIndex,(void**)&piForm);returnpiForm;}formIndex=RootForm_GetFormIndex(me,&pifRef);if(formIndex<0)returnNULL;formIndex+=bNext?1:-1;if(formIndex<0){formIndex=bWrap?nrForms-1:-1;}elseif(formIndex>=nrForms){formIndex=bWrap?0:-1;}if(formIndex<0)returnNULL;IVECTORMODEL_GetAt(me->piForms,formIndex,(void**)&piForm);returnpiForm;}intRootForm_ResolveForm(IRootForm*po,charconst*szFormUrl,IForm**ppiForm){DECL(RootForm);IWebUtil*piWebUtil=0;AEECLSIDformClsId;intresult;UrlPartsparts;char*path=0;if(!ppiForm||!szFormUrl)returnEBADPARM;//Assumefailure*ppiForm=0;//ParsetheURLresult=ISHELL_CreateInstance(FORM_SHELL(me),AEECLSID_WEBUTIL,(void**)&piWebUtil);if(result==0)result=IWEBUTIL_ParseUrl(piWebUtil,szFormUrl,&parts);//Checktheschemeif(result==0&&(!UP_HASSCHM(&parts)||STRNCMP(parts.cpcSchm,FORM_URL_SCHEME,sizeof(FORM_URL_SCHEME)-1)))result=ESCHEMENOTSUPPORTED;//Dowehaveapath?if(result==0&&(!UP_HASPATH(&parts)||UP_PATHLEN(&parts)<=0))result=ESCHEMENOTSUPPORTED;//Extractthepath(weneedittobeNULLterminated)if(result==0&&0==(path=MALLOC(UP_PATHLEN(&parts)+1)))result=ENOMEMORY;if(result==0){STRNCPY(path,parts.cpcHost,UP_PATHLEN(&parts)+1);//Doesahandlerexistforthispath,oftypeAEEIID_FORM?if(0==(formClsId=ISHELL_GetHandler(FORM_SHELL(me),AEEIID_FORM,path)))//Nope...result=ESCHEMENOTSUPPORTED;}if(result==0)//Gottheactualclassid,letscreatetheformresult=ISHELL_CreateInstance(FORM_SHELL(me),formClsId,(void**)ppiForm);////TODO:WecoulduseIWEBUTIL_ParseFormFields()toparseparts.cpcSrch//forknownFormpropertiesandapplythemhere...RELEASEIF(piWebUtil);FREEIF(path);returnresult;}voidRootForm_Dtor(RootForm*me){IROOTFORM_RemoveForm(ROOTFORM_TO_IROOTFORM(me),FORM_ALL);RELEASEIF(me->piTitle);RELEASEIF(me->piSoftkeys);RELEASEIF(me->piContainer);RELEASEIF(me->piBackground);RELEASEIF(me->titleInfo.piImage);RELEASEIF(me->piForms);RELEASEIF(me->piActiveWidget);RELEASEIF(me->piThemeFile);FREEIF(me->themeFile);Form_Dtor(&me->base);}uint32RootForm_Release(IRootForm*po){DECL(RootForm);if(FORM_NREFS(me)==1)RootForm_Dtor(me);returnForm_Release(IROOTFORM_TO_IFORM(po));}intRootForm_QueryInterface(IRootForm*po,AEECLSIDclsid,void**ppo){if(clsid==AEEIID_ROOTFORM){*ppo=po;Form_AddRef(IROOTFORM_TO_IFORM(po));returnAEE_SUCCESS;}returnForm_QueryInterface(IROOTFORM_TO_IFORM(po),clsid,ppo);}intRootForm_Construct(RootForm*me,AEEVTBL(IRootForm)*pvt,IModule*piModule,IShell*piShell){intresult;WExtentextent;WidgetPospos;IDisplay*piDisplay=0;ICanvas*piCanvas=0;Form_Ctor(&me->base,(AEEVTBL(IForm)*)pvt,piModule,piShell,(PFNHANDLER)RootForm_HandleEvent);pos.x=0;pos.y=0;pos.bVisible=TRUE;SETWEXTENT(&extent,0,0);//Formoverridespvt->Release=RootForm_Release;pvt->QueryInterface=RootForm_QueryInterface;//RootFormdefinitionspvt->InsertForm=RootForm_InsertForm;pvt->RemoveForm=RootForm_RemoveForm;pvt->GetClientRect=RootForm_GetClientRect;pvt->GetForm=RootForm_GetForm;pvt->ResolveForm=RootForm_ResolveForm;result=ISHELL_CreateInstance(piShell,AEECLSID_VECTORMODEL,(void**)&me->piForms);if(result==0){IVECTORMODEL_SetPfnFree(me->piForms,(PFNNOTIFY)RootForm_FreeFormEntry);result=ISHELL_CreateInstance(piShell,AEECLSID_DISPLAY,(void**)&piDisplay);}if(result==0)result=ISHELL_CreateInstance(piShell,AEECLSID_ROOTCONTAINER,(void**)&me->piContainer);if(result==0)result=IROOTCONTAINER_QueryInterface(me->piContainer,AEEIID_WIDGET,(void**)&me->base.piWidget);if(result==0)result=ISHELL_CreateInstance(piShell,AEECLSID_RESFILE,(void**)&me->piThemeFile);if(result==0)result=ISHELL_CreateInstance(piShell,AEECLSID_IMAGEWIDGET,(void**)&me->piBackground);if(result==0){IWIDGET_SetFlags(me->piBackground,IDF_ALIGN_RIGHT|IDF_ALIGN_BOTTOM);//Insert,extentwillbefixedupinSetDisplaybelowresult=IROOTCONTAINER_Insert(me->piContainer,me->piBackground,WIDGET_ZBOTTOMMOST,&pos);}if(result==0)//Constructtitleresult=ISHELL_CreateInstance(piShell,AEECLSID_IMAGESTATICWIDGET,(void**)&me->piTitle);if(result==0){extent.height=15;//Settitlefonttoboldbydefault.Appsandthemescanoverrideit.IWIDGET_SetFontClass(me->piTitle,AEECLSID_FONTSYSBOLD);IWIDGET_SetShadowOffsetY(me->piTitle,0);IWIDGET_SetBorderWidth(me->piTitle,0);IWIDGET_SetExtent(me->piTitle,&extent);//Addtocontainerresult=IROOTCONTAINER_Insert(me->piContainer,me->piTitle,WIDGET_ZTOPMOST,&pos);}if(result==0)//ConstructSoftkeysresult=ISHELL_CreateInstance(piShell,AEECLSID_SOFTKEYWIDGET,(void**)&me->piSoftkeys);if(result==0){IWIDGET_SetShadowOffsetY(me->piSoftkeys,-1);IWIDGET_SetBorderWidth(me->piSoftkeys,0);IWIDGET_SetExtent(me->piSoftkeys,&extent);IWIDGET_SetLeftPadding(me->piSoftkeys,2);IWIDGET_SetRightPadding(me->piSoftkeys,2);//Insertat0,0.CorrectpositioningwillhappeninSetDisplayresult=IROOTCONTAINER_Insert(me->piContainer,me->piSoftkeys,WIDGET_ZTOPMOST,&pos);}if(result==0)result=RootForm_SetDisplay(me,piDisplay);if(result==0){char*pTheme=0;IFORM_SetThemeBaseName(ROOTFORM_TO_IFORM(me),"Root");IFORM_GetThemeBaseName(ROOTFORM_TO_IFORM(me),&pTheme);pTheme=(pTheme)?pTheme:"(None)";BUIT_LOG("FORMSEVT:ConstructSetThemeStartedfor%s",pTheme);IROOTFORM_SetThemeFileName(ROOTFORM_TO_IROOTFORM(me),"theme.bar");BUIT_LOG("FORMSEVT:ConstructSetThemeFinishedfor%s",pTheme);}else{RootForm_Dtor(me);}RELEASEIF(piDisplay);RELEASEIF(piCanvas);returnresult;}intRootForm_New(IRootForm**ppo,IModule*piModule,IShell*piShell){RootForm*me=MALLOCREC_VTBL(RootForm,IRootForm);intresult;*ppo=(IRootForm*)me;if(!me)returnENOMEMORY;result=RootForm_Construct(me,GETVTBL(me,IRootForm),piModule,piShell);if(result!=0){*ppo=NULL;FREE(me);}returnresult;}
 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:C语言注释符号如何使用的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:Java的接口使用实例分析下一篇:

23 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18