How to use CVSListBox – afxVSListBox.cpp assert

在整合到 porject 的時候基本上就是和

How to use CVSListBox – AppWizard 要新增的東西相同

但是卻在下面這行讓我碰上了一個奇怪的警告:

ENSURE(strButton.LoadString(IDS_AFXBARRES_NEW));

 

afxvslistbox.cpp

BOOL CVSListBoxBase::SetStandardButtons(UINT uiBtns)
{
	if (GetSafeHwnd() == NULL)
	{
		ASSERT(FALSE);
		return FALSE;
	}

	CString strButton;
	if (uiBtns & AFX_VSLISTBOX_BTN_NEW)
	{
		ENSURE(strButton.LoadString(IDS_AFXBARRES_NEW)); // Failed here
					.
					.
	}
}

 

[解決方法]

1. 雙擊 resource.rc,打開資源檢視視窗

2. 在 resource.rc 上按右鍵,選擇資源包含

2014-09-01-01

 

3. 在編譯時期指示詞的最後面加上以下程式碼就可以編過了

#ifndef _AFXDLL
#include"afxribbon.rc"
#endif

2014-09-01-02

 

[思考比較]

在和上一個 AppWizard 做出來的比較之後發現在 CString strButton; 這行執行後會產生不一樣的結果

 

MyProject

2014-09-01-03

AppWizard

2014-09-01-04

 

不過到底是為什麼會導致這樣的變化目前還是不太清楚

而且在成功解決掉上面那個 assert 之後顯示的結果也有中英文之分

 

MyProject

2014-09-01-05

AppWizard

 

2014-09-01-06

 

真的是挺神奇的,到底是為甚麼可能還要再深入了解才能知道原因

現在道行還不夠高,無法參悟,待研究中

 

[參考資料]

1. 使用CVSListBox时出现afxVSListBox.cpp assert错误