How to use CVSListBox – Two CVSListBox in one Dialog

這次有一個 Dialog 需要有兩個 CVSListBox 來分別儲存 Input/Output

所以我就像 上次 一樣的方式拉了兩個 CVSListBox 分別宣告使用

 

2014-10-01-01

 

不過就在 <afxvslistbox.cpp> 的 AddButton() 產生了 Assert,

 

2014-10-01-02

 

往前追追追發現是 m_pctlListOutput->SetStandardButtons(); 發生了問題

 

2014-10-01-03

 

所以猜想是不是只能夠執行一次

把 m_pctlListOutput->SetStandardButtons(); 註解掉之後就可以編譯過關

但是卻發生有一個有 OnBrowse() 的 … 按鈕,一個沒有(真奇怪~~~)

 

2014-10-01-04

 

所以就被我找到另一個解法:

在資源檢視中在 CVSListBox 按右鍵→加入變數→填好變數名稱→完成

 

2014-10-01-05

 

如此一來就可以看到在 DoDataExchange() 中程式自動幫你處理好了變數和控制項的連接

(變數也在 .h 檔中宣告好了)

 

2014-10-01-06

 

接下來要做的呢,就是把直接使用變數來設定值就可以了 (y)

 

BOOL CFileCustomDlg::OnInitDialog()
{
	CDialog::OnInitDialog();
	
	m_pctlListInput.SetWindowText("Input file(s):");
	m_pctlListOutput.SetWindowText("Output file(s):");

	return true;
}

是說這個方式簡單明瞭許多阿~~~~~~好嗨芯

 

[參考資料]

1. CVSListBox类的扩展使用