SOUI中啟用拖檔案

2022-06-21 16:00:11 字數 2447 閱讀 5438

本文所用soui版本為1.0版本,在拖檔案上與一般的訊息略有不同。

先與常規新增訊息相同。

class cmainfrm : public

shostwnd

else

}::dragfinish(hdropinfo);

}void

onclose() ;

protected

:

//soui訊息

event_map_begin()

event_name_command(l

"btn_close

", onclose)

event_map_end()

//hostwnd真實視窗訊息處理

begin_msg_map_ex(cmainfrm)

msg_wm_dropfiles(ondropfile)

chain_msg_map(shostwnd)

reflect_notifications_ex()

end_msg_map()

}

到這裡完成了soui新增訊息的比較完整的過程。但是發現視窗並不響應拖檔案。

參考簡單方法解決vista/win7 無法接收wm_dropfiles問題 ,新增如下函式

bool changewndmessagefilter(uint umessage, bool ballow)

//獲取changewindowmessagefilter函式介面指標

changewindowmessagefilterfn pfnchangewindowmessagefilter = (changewindowmessagefilterfn)getprocaddress( husermod, "

changewindowmessagefilter

");

if ( pfnchangewindowmessagefilter ==null )

bresult = pfnchangewindowmessagefilter( umessage, ballow?1:2 ); //

1-msgflt_add, 2-msgflt_remove

freelibrary( husermod );

return

bresult;

}

然後在初始化函式中新增如下:

bool oninitdialog(hwnd wndfocus, lparam linitparam)

這樣就實現了檔案拖曳。

完整**如下:

class cmainfrm : public

shostwnd

//獲取changewindowmessagefilter函式介面指標

changewindowmessagefilterfn pfnchangewindowmessagefilter = (changewindowmessagefilterfn)getprocaddress( husermod, "

changewindowmessagefilter

");

if ( pfnchangewindowmessagefilter ==null )

bresult = pfnchangewindowmessagefilter( umessage, ballow?1:2 ); //

1-msgflt_add, 2-msgflt_remove

freelibrary( husermod );

return

bresult;

}bool oninitdialog(hwnd wndfocus, lparam linitparam)

void

ondropfile(hdrop hdropinfo)

else

}::dragfinish(hdropinfo);

}void

onclose() ;

protected

:

//soui訊息

event_map_begin()

event_name_command(l

"btn_close

", onclose)

event_map_end()

//hostwnd真實視窗訊息處理

begin_msg_map_ex(cmainfrm)

msg_wm_initdialog(oninitdialog)

msg_wm_dropfiles(ondropfile)

chain_msg_map(shostwnd)

reflect_notifications_ex()

end_msg_map()

private

: bool m_blayoutinited;

/***/

}

SOUI中事件中心的使用

在soui中為了方便將工作者執行緒中的處理結果及時反饋到ui執行緒設計了事件中心來解決此類問題。在使用事件中心需要注意的事項如下 snotifycenter pnotifycenter new snotifycenter delete pnotifycenter 向事件中心新增事件 snotifyc...

SOUI中快樂的使用32 64位程式設計

目前64系統已經普及,但是市面上仍不少軟體跑在32上。順應時代。soui一直都可以32,64使用,不過實際使用過程中,可能仍有實際情況不得不保留32位的軟體系統。以前的soui只能單獨使用32或64位,無法同時使用 當然有經驗的同學肯定自己已經配置好了 為方便大家,soui開始支援同時編譯32 64...

vue element中的table實現拖曳效果

用到的外掛程式是 sortablejs sortablejs github位址 sortablejs 中文配置 element中table的row key等屬性的說明 正確的效果圖 注意 這裡是給element中的table繫結了識別符號row key id 錯誤的效果圖 沒有繫結識別符號row k...