當前位置:編程學習大全網 - 源碼下載 - VC++ 怎麽通過控件的ID 獲得對應的變量名

VC++ 怎麽通過控件的ID 獲得對應的變量名

通過控件ID獲取控件變量(無論是哪種變量)是不可能實現的。

控件變量和控件窗口(包括指針、句柄、ID)之間,是“弱”關聯關系,沒有真正的實現整合,它們之間的關聯,是通過DoDataExchange實現的,具體過程是這樣:

對話框界面的初始化和界面變化,都會調用UpdateData函數,而這個函數之中,會調用DoDataExchange,從每個對話框的成員函數DoDataExchange中,我們可以看到,在這裏才實現了控件和變量的關聯,類似形式如下:

DDX_Control(pDX,?IDC_BUTTON2,?m_bn2);

DDX_Radio(pDX,?IDC_RADIO1,?m_radio);

這個關聯是通過壹系列API函數DDX_實現的,那麽這裏做了什麽呢?可以在MFC源代碼中看壹看具體實現:

void?AFXAPI?DDX_Text(CDataExchange*?pDX,?int?nIDC,?LPTSTR?value,?int?nMaxLen)

{

ASSERT(nMaxLen?!=?0);

HWND?hWndCtrl?=?pDX->PrepareEditCtrl(nIDC);

if?(pDX->m_bSaveAndValidate)

{

int?nLen?=?::GetWindowTextLength(hWndCtrl);

int?nRetrieved?=?::GetWindowText(hWndCtrl,?value,?nMaxLen);

if?(nLen?>?nRetrieved)

TRACE1("Text?in?control?ID?%d?is?too?long.?Call?DDV_MaxChars()!\n",?nIDC);

}

else

{

AfxSetWindowText(hWndCtrl,?value);

}

}

從這裏可以看到,變量和控件窗口直接,沒有直接關聯關系,完全是通過壹個函數進行的賦值和取值操作,因此,無法通過控件ID或者指針獲取其變量。

  • 上一篇:星際比特的壹天增益
  • 下一篇:echarts圖表,怎麽獲取當前選擇的X軸的值
  • copyright 2024編程學習大全網