古詩詞大全網 - 口號大全 - Cpp口號13

Cpp口號13

這應該是創建窗口代碼的問題。

ASSERT是斷言,是C++中用於調試的宏。原理如下:檢查傳入參數是否為假(即0),如果是,則在stderr中輸出錯誤並彈出窗口。偽代碼如下:

void myassert(int canshu){

如果(參數表){

返回;

}

否則{

//彈出並輸出

}

}

好了,進入正文。

報錯部分的代碼是ASSERT(::is window(m _ hWnd));

通過m_hWnd可以判斷這個程序是MFC寫的,用IsWindow函數判斷窗口是否有效,傳入判斷句柄。如果窗口有效,則輸出TRUE,否則輸出FALSE。

以下是MSDN對這壹功能的解釋:

IsWindow函數(winuser.h)

10/13/2021

閱讀2分鐘

這個頁面有幫助嗎?

確定指定的窗口句柄是否標識現有窗口。

句法

C++CopyBOOL IsWindow(?[in,可選]HWND HWND);

因素

[輸入,可選] hWnd

類型:?HWND

要測試的窗口的句柄。

返回值

類型:?布爾

如果窗口句柄標識壹個現有的窗口,返回值是非零的。

如果窗口句柄不標識現有窗口,則返回值為零。

評論

壹個線程不應該使用?IsWindow?因為調用此函數後窗口可能會被銷毀。此外,因為窗口句柄被回收,句柄甚至可以指向不同的窗口。

例子

有關示例,請參見?創建無模式對話框。

然後可以看到,由於某種原因,句柄或者句柄對應的窗口無效,導致IsWindow返回FALSE,ASSERT接收返回值FALSE,判斷函數錯誤,於是報錯。

綜上所述,應該是程序作者的代碼在創建窗口時出錯了,應該反饋給程序作者。