3 ms·
These are all great points, and I will update the blog post to reflect them in the morning. I believe this approach can work while retaining the most apparentl
by piker 11mo ago
These are all great points, and I will update the blog post to reflect them in the morning.
I believe this approach can work while retaining the most apparently-idiomatic mapping. What do you guys think?
impl IRibbonExtensibility_Impl for Addin_Impl {
unsafe fn GetCustomUI(&self, _ribbon_id: BSTR, out: *mut BSTR) -> HRESULT {
log("GetCustomUI called()");
std::mem::forget(_ribbon_id);
if out.is_null() {
return windows::Win32::Foundation::E_POINTER;
}
unsafe {
std::ptr::write(out, BSTR::from(RIBBON_XML));
}
S_OK
}
}
- garaetjjte 11mo agoLooks fine to me, if you're avoiding wrappers like ManuallyDrop/MaybeUninit.
- piker 11mo agoActually the `windows-rs` team weighed in: impl IRibbonExtensibility_Impl for Addin_Impl { unsafe fn GetCustomUI( &self, _ribbon_id: windows::core::Ref<BSTR>, out: windows::core::OutRef<BSTR>, ) -> HRESULT { log("GetCustomUI called()"); if out.is_null() || out.write(BSTR::from(RIBBON_XML)).is_err() { return E_POINTER; }; S_OK } } https://github.com/microsoft/windows-rs/issues/3832 https://github.com/microsoft/windows-rs/issues/3832 Thanks for pushing on the issue! I've updated the blog post for GetCustomUI.