1
因爲Win-7的拖放實施已經改變,爲了使它工作我需要啓用一些使用ChangeWindowMessageFilter的東西。我的代碼在Windows XP上無法運行
存在問題。 ChangeWindowMessageFilter
自Vista以來是有效的,但是我也需要XP的解決方案。
因爲Win-7的拖放實施已經改變,爲了使它工作我需要啓用一些使用ChangeWindowMessageFilter的東西。我的代碼在Windows XP上無法運行
存在問題。 ChangeWindowMessageFilter
自Vista以來是有效的,但是我也需要XP的解決方案。
那麼,你應該嘗試動態調用它,因爲你需要LoadLibrary和GetProcAddress。
使用範例
if (/*IsVista()*/)
{
typedef BOOL (WINAPI *ChangeMessageFilter)(UINT message, DWORD dwFlag);
#define MSGFLT_ADD 1
#define MSGFLT_REMOVE 2
BOOL res = FALSE;
HMODULE user32 = LoadLibrary(L"User32.dll");
if (user32 != NULL)
{
ChangeMessageFilter filter = (ChangeMessageFilter)::GetProcAddress(user32, "ChangeWindowMessageFilter");
if (filter != NULL)
{
res = filter(/*your value*/, MSGFLT_ADD);
}
::FreeLibrary(user32);
}
}
另一件事,你應該更好地運用ChangeWindowMessageFilterEx,因爲它是能夠接受的只有一個窗口,並不是所有的項目信息。
這個效果很好。 – user3494350
「ChangeWindowMessageFilter」有什麼問題? – user3494350
['ChangeWindowMessageFilter()'](http://msdn.microsoft.com/en-us/library/windows/desktop/ms632675.aspx)(Vista +)將更改應用於整個進程。 ['ChangeWindowMessageFilterEx()'](http://msdn.microsoft.com/en-us/library/windows/desktop/dd388202.aspx)(Win7 +)改爲將改變應用於特定的窗口。 –