对è¯æ¡
ä¸ç§æ¬¡è¦çªå£ï¼å
å«æé®ååç§é项ï¼éè¿å®ä»¬å¯ä»¥å®æç¹å®å½ä»¤æä»»å¡ã
对è¯æ¡ä¸çªå£æåºå«ï¼å®æ²¡ææ大åæé®ã没ææå°åæé®ãä¸è½æ¹åå½¢ç¶å¤§å°
对è¯æ¡ï¼æ¯äººæºäº¤æµçä¸ç§æ¹å¼ï¼ç¨æ·å¯¹å¯¹è¯æ¡è¿è¡è®¾ç½®ï¼è®¡ç®æºå°±ä¼æ§è¡ç¸åºçå½ä»¤ã对è¯æ¡ä¸æåéæ¡ã
å¤éæ¡çã
对è¯æ¡çç»æ
对è¯æ¡ä¸»è¦ç±ä¸¤é¨åç»æã
对è¯æ¡èµæºï¼å¯ä»¥ä½¿ç¨å¯¹è¯æ¡ç¼è¾å¨æ¥é
置对è¯æ¡ççé¢ï¼å¦å¯¹è¯æ¡ç大å°ãä½ç½®ãæ ·å¼ï¼å¯¹è¯æ¡ä¸æ§ä»¶çç±»ååä½ç½®çãå¦å¤ï¼æ们è¿å¯ä»¥å¨ç¨åºçæ§è¡è¿ç¨ä¸å¨æå建对è¯æ¡èµæºã
对è¯æ¡ç±»ï¼å¨MFCç¨åºä¸ï¼å¯ä»¥ä½¿ç¨å导帮å©ç¨æ·å»ºç«ä¸ä¸ªä¸å¯¹è¯æ¡èµæºç¸å
³èçç±»ï¼é常è¿ä¸ªç±»ç±CDialog类派çã
对è¯æ¡çç±»å
对è¯æ¡å¯ä»¥å为模å¼å¯¹è¯æ¡åæ 模å¼å¯¹è¯æ¡ä¸¤ç§ç±»åã
CDialog
为äºè½å¤æ¹ä¾¿çæä½å¯¹è¯æ¡ï¼MFC为ç¨æ·æä¾äºCDialogç±»ãå®æ¯å¨å±å¹ä¸æ¾ç¤ºå¯¹è¯æ¡çåºç±»ï¼ä¸å¯¹è¯æ¡èµæºç´§å¯ç¸å
³ï¼æä¾äºç®¡ç对è¯æ¡çæ¥å£ï¼å°è£
äºä¸äºå¯¹è¯æ¡çç¸å
³æä½ã
ä»CDialogçå®ä¹ä»£ç å¯ä»¥çåºï¼Cdialogæä¾äºä¸¤å¥æ建Cdialog对象çç³»ç»ï¼åå«ç¨äºæ¨¡å¼å¯¹è¯æ¡åæ 模å¼å¯¹è¯æ¡ã
æ 模å¼å¯¹è¯æ¡å¯¹è±¡çæ建è¿ç¨ï¼å®é¦å
è°ç¨ç¼ºçç
æé å½æ°çæ对è¯æ¡å¯¹è±¡ï¼ç¶åè°ç¨Createå½æ°å建ååå§å对è¯æ¡ãCdialogç±»ä¸çCreateå½æ°æ两ç§å½æ°ååï¼
BOOL Create( LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL );
BOOL Create( UINT nIDTemplate, CWnd* pParentWnd = NULL );
å
¶ä¸ï¼
åæ°lpszTemplateNameæ¯æ 模å¼å¯¹è¯æ¡æ¨¡æ¿èµæºçæ å¿ç¬¦ï¼
åæ°nIDTemplatæ¯å¯¹è¯æ¡æ¨¡æ¿èµæºçæ å¿ç¬¦ï¼å®é常以IDD_å¼å¤´ï¼ä¾å¦IDD_DIALOG1ï¼;
åæ°pParentWndæ¯æå对è¯æ¡å¯¹è±¡æå±çç¶çªå£çæéï¼å¦æå®ä¸ºNULLï¼å表示对è¯æ¡å¯¹è±¡çç¶çªå£æ¯
åºç¨ç¨åºä¸»çªå£ï¼ãå¦æå¸æ对è¯æ¡ä¸å®çç¶çªå£å建å马ä¸è¢«æ¾ç¤ºï¼å°±å¿
é¡»æ对è¯æ¡æ¨¡æ¿è®¾ç½®ä¸ºWS_VISIBLEå½¢å¼ãå¦åï¼éè¦è°ç¨ShowWindowå½æ°æ¥æ¾ç¤ºå¯¹è¯æ¡ã
对äºæ¨¡å¼å¯¹è¯æ¡ï¼å
¶æé å½æ°å¦ä¸æ示ï¼
CDialog( LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL );
CDialog( UINT nIDTemplate, CWnd* pParentWnd = NULL );
æé å½æ°çåæ°è¯´æä¸æ 模å¼å¯¹è¯æ¡çCreateå½æ°ç±»ä¼¼ãå¨æ¨¡å¼å¯¹è¯æ¡ä¸ï¼å½å建äºå¯¹è¯æ¡å¯¹è±¡åï¼å¯ä»¥éè¿è°ç¨DoModalå½æ°æ¥æ¾ç¤ºå¯¹è¯æ¡ã
ä¸è¬æ
åµä¸ï¼æ 论æ¯æ¨¡å¼å¯¹è¯æ¡è¿æ¯æ 模å¼å¯¹è¯æ¡ï¼é½æ两个æé®OKåCANCELã对è¯æ¡ä¸ºå®ä»¬æä¾äºé»è®¤çæ¶æ¯å¤çå½æ°OnOkåOnCancelãè°ç¨è¿ä¸¤ä¸ªå½æ°é½å°å
³é对è¯æ¡ãæä¸åçæ¯ï¼é»è®¤çOnOkå½æ°ä¸å
³é对è¯æ¡åå°æ´æ°å¯¹è¯æ¡æ°æ®ï¼èé»è®¤çOnCancelå½æ°ä¸æ´æ°å¯¹è¯æ¡æ°æ®ã
å½CDialogç±»æ£æµå°OKæCancelé®æ¶ï¼å®å°è°ç¨::EndDialogå½æ°ãEndDialogå½æ°è½ç¶ç»æäºå¯¹è¯æ¡åºç¨ç¨åºï¼ä½å´å¹¶æ²¡æå é¤å¯¹è¯æ¡å¯¹è±¡ï¼éæ¾å
åãè¿å¯¹äºæ¨¡å¼å¯¹è¯æ¡æ¥è¯´ï¼ä¸æ¯é®é¢ï¼å®ççåæ¶é´ä¸é¿ï¼æ们ä¸è¬å¨æ ä¸å建å®ä»¬ï¼ä½æ 模å¼å¯¹è¯æ¡åä¸åï¼å®ççåæ¶é´æ´é¿ï¼æ们é常å¨æ ä¸å建å®ä»¬ï¼å¹¶ä¸å¸æå®å¨æ¶å¤±ä¹åè½å¤å é¤èªå·±ãå æ¤ï¼å¤§å¤æ°æ
åµä¸ï¼æ们éè¦å¨æ 模å¼å¯¹è¯æ¡ä¸éè½½OnOKåOnCancelå½æ°ï¼å å
¥DestroyWindowså½æ°æ¥å½»åºå°å é¤å®ã
对è¯æ¡æ°æ®äº¤æ¢åéªè¯æºå¶
å¨VCä¸ï¼ææç对è¯æ¡å½æ°é½æ¯ä½¿ç¨C++代ç å®ç°çï¼å®å¹¶æ²¡æéç¨ç¹æ®çèµæºæâå¥ç¹âçå®ï¼ä½å´å¯ä»¥å¾å¥½å°å®ç°ç¨æ·ä¸åºç¨ç¨åºä¹é´ç交äºå·¥ä½ï¼è¿éçå
³é®å°±å¨äºå¯¹è¯æ¡åºç¨ç¨åºä¸å¹¿æ³éç¨ç对è¯æ¡æ°æ®äº¤æ¢åéªè¯æºå¶ã
对è¯æ¡æ°æ®äº¤æ¢ï¼DDX,Dialog Data Exchangeï¼ç¨äºåå§å对è¯æ¡ä¸çæ§ä»¶å¹¶è·åç¨æ·ç
æ°æ®è¾å
¥ï¼è对è¯æ¡æ°æ®éªè¯ï¼DDV,Dialog Data Validationï¼åç¨äºéªè¯å¯¹è¯æ¡ä¸æ°æ®è¾å
¥çæææ§ãMFCå¨æ¯ä¸ªå¯¹è¯æ¡ç±»ä¸æä¾äºä¸ä¸ªç¨äºéè½½ç
èå½æ°ââDoDataExchangeæ¥å®ç°å¯¹è¯æ¡æ°æ®äº¤æ¢åéªè¯å·¥ä½ã
对è¯æ¡æ°æ®äº¤æ¢
å¦æ使ç¨DDXæºå¶ï¼åé常å¨OnInitDialogç¨åºæ对è¯æ¡æé å½æ°ä¸è®¾ç½®å¯¹è¯æ¡å¯¹è±¡æååéçåå§å¼ãå¨å¯¹è¯æ¡å³å°æ¾ç¤ºåï¼åºç¨ç¨åºæ¡æ¶çDDXæºå¶å°æååéçå¼ä¼ éç»å¯¹è¯æ¡çæ§ä»¶ï¼å½å¯¹è¯æ¡ååºDoModalæCreateè被æ¾ç¤ºæ¶ï¼å¯¹è¯æ¡æ§ä»¶å°âæ¾ç¤ºâè¿äºå¼ãCdialogç±»ä¸çOnInitDialogå½æ°é»è®¤æ¶å°è°ç¨CWndç±»çUpdateDataæåå½æ°åå§å对è¯æ¡ä¸çæ§ä»¶ãUpdateDataå½æ°çååå¦ä¸ï¼
BOOL UpdateData( BOOL bSaveAndValidate = TRUE );
å½æ°åæ°ä¸ºTRUEï¼å³å°å¯¹è¯æ¡åå
¶æ§ä»¶ä¸çæ°æ®ä¼ éç»ç¨åºä»£ç ä¸çæååéï¼
å½æ°åæ°ä¸ºFALSEï¼å³å°ç±»ä¸çæ°æ®ç¶æä¼ éç»å¯¹è¯æ¡åå
¶æ§ä»¶ã
å½ç¨æ·éè½½DoDataExchangeå½æ°æ¶ï¼ä¹å°±ä¸ºæ¯ä¸ä¸ªæ°æ®æåï¼æ§ä»¶ï¼æå®äºä¸ä¸ªDDXå½æ°è°ç¨ã
对è¯æ¡æ°æ®éªè¯
é¤äºè°ç¨DDXåæ°æå®æ°æ®äº¤æ¢å¤ï¼ç¨æ·è¿å¯ä»¥ä½¿ç¨DDVå½æ°è¿è¡å¯¹è¯æ¡æ°æ®éªè¯ãå¨è°ç¨æ§ä»¶çDDXå½æ°åï¼å¿
é¡»ç«å³è°ç¨è¯¥æ§ä»¶çDDVå½æ°ã大é¨åDDVå½æ°çååå¦ä¸æ示ã
DDV_MinMaxCustom(pDX, Data, MinData, MaxData);
å
¶ä¸ï¼åæ°pDXæ¯ä¸ä¸ªæåCdataExchange对象çæéï¼åæ°Dataä¸åæ¾çå³å°è¢«éªè¯çæ°æ®ï¼å两个åæ°ç¨äºå®å¶æ°æ®çèå´ã
CdataExchangeç±»
å¦æä»
ä»
éè¦ä½¿ç¨å¯¹è¯æ¡æ°æ®ï¼ä¸è¬æ²¡æå¿
è¦äºè§£æ°æ®äº¤æ¢/éªè¯çæ ¸å¿å
容ãä½å¨äºè§£äºæ°æ®äº¤æ¢åéªè¯çå®è´¨åï¼ç¨æ·å°±å¯ä»¥ç¼åèªå·±çæ°æ®äº¤æ¢åéªè¯ä»£ç ï¼å®å¶DDX/DDV.
对è¯æ¡æ§ä»¶
æ§ä»¶æ¯ä¸ä¸ªå¯ä»¥ä¸å
¶äº¤äºä»¥å®æè¾å
¥ææä½æ°æ®æä½ç对象ï¼å®ä¹æ¯ä¸ç§ç¹æ®ççªå£ãæ§ä»¶é常åºç°å¨å¯¹è¯æ¡æå·¥å
·æ ä¸ãWindowsæä¾äºå¤ç§å¤æ ·çæ§ä»¶ï¼å¨MFCåºç¨ç¨åºä¸ï¼è½å¤ä½¿ç¨çæ§ä»¶é常å¯ä»¥å为ä¸ç§ã
1ï¼windowså
¬ç¨æ§ä»¶ï¼å
æ¬ç¼è¾æ§ä»¶ãæé®ãå表æ¡ãç»åæ¡ãæ»å¨æ¡æ§ä»¶çï¼å¦å¤ä¹å
æ¬ææè
æè¿°çæ§ä»¶ã
2ï¼
ActiveXæ§ä»¶ï¼æ¢å¯ä»¥å¨å¯¹è¯æ¡ä¸ä½¿ç¨ï¼ä¹å¯ä»¥å¨HTMLç½é¡µä¸ä½¿ç¨ã
3ï¼ç±MFCæä¾çå
¶ä»æ§ä»¶ç±»
æ们主è¦ä»ç»ç¬¬ä¸ç§ç±»åçæ§ä»¶ââWindowså
¬ç¨æ§ä»¶ã
Windowsæä½ç³»ç»æä¾äºå¤ç§windowså
¬ç¨æ§ä»¶ï¼è¿äºæ§ä»¶å¯¹è±¡é½æ¯å¯ç¼ç¨çï¼Visual C++ç对è¯æ¡ç¼è¾å¨æ¯æå°è¿äºæ§ä»¶å¯¹è±¡æ·»å å°å¯¹è¯æ¡ä¸ãç¨æ·å¯ä»¥å¨å·¥å
·ç®±ç对è¯æ¡ç¼è¾å¨ä¸çå°è¿äºwindowså
¬ç¨æ§ä»¶ãMFC为äºæ´å¥½çæ¯æwindowså
¬ç¨æ§ä»¶ï¼æä¾äºå¤ç§æ§ä»¶ç±»ï¼æ¯ä¸ä¸ªæ§ä»¶ç±»å°è£
ä¸ç§æ§ä»¶ï¼å¹¶æä¾ç¸åºçæåå½æ°æ¥ç®¡çæä½æ§ä»¶ã