摘要://注意SetWindowLong()和SetWindowPos()先后順序,詳見MSDN::SetWindowLong(hFig,GWL_STYLE,lStyle&(~WS_CAPTION)&(~WS_THICKFRAME))::SetWindowPos(hFig,NULL,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_NOZORDER|SWP_NOACTIVATE|SWP_FRAMECHANGED);CRectPlotRec;CWnd*PlotArea=GetDlgItem(IDC_STATIC_FIGURE);
//注意SetWindowLong()和SetWindowPos()先后順序,詳見MSDN
::SetWindowLong(hFig,GWL_STYLE,lStyle&(~WS_CAPTION)&(~WS_THICKFRAME))
::SetWindowPos(hFig,NULL,0,0,0,0,SWP_NOMOVE|SWP_
NOSIZE|SWP_NOZORDER|SWP_NOACTIVATE|SWP_
FRAMECHANGED);CRect PlotRec;
CWnd *PlotArea = GetDlgItem(IDC_STATIC_FIGURE); //設(shè)置圖像顯示區(qū)域
PlotArea->GetWindowRect(&PlotRec);
long Width = PlotRec.right - PlotRec.left;
long Height = PlotRec.bottom - PlotRec.top;
::SetParent(hFig,PlotArea->GetSafeHwnd());
//設(shè)置圖像的父窗口
::SetWindowPos(hFig,NULL,0,0,Width,Height,SWP_NOZORDER|SWP_NOACTIVATE);
3.2基于Bitmap類的圖像嵌入
通過Bitmap類將Matlab生成的。bmp文件加載到VC工程中,使用Bitmap類中的成員函數(shù)對(duì)圖像進(jìn)行處理。由于相關(guān)函數(shù)可以通過幫助手冊(cè)獲取,所以此處不再給出相應(yīng)代碼,運(yùn)行結(jié)果如圖2所示。該方法避免了方法一生成圖像時(shí)的閃爍現(xiàn)象,但是BMP圖像顯示效果較差而且無(wú)法使用Matlab提供的工具菜單,這是其不足之處。
使用COM組件進(jìn)行混合編程時(shí),往往習(xí)慣于在VC平臺(tái)下思考所遇到的問題,但是這樣不僅使得問題可能變得復(fù)雜化,或得不到妥善解決,而且也違背了“混合”的初衷。二維數(shù)組參數(shù)處理就是一個(gè)很好的例證。其次,充分利用Matlab特性可以使得程序具備良好的擴(kuò)展性和穩(wěn)定性,對(duì)Excel文件讀取方式進(jìn)行的擴(kuò)展,明顯使軟件更加人性化。對(duì)于圖像嵌入問題,雖然文中提出的兩種嵌入方式可以滿足基本需求,但是仍然存在一些瑕疵,還需要進(jìn)一步研究。
[1] [2] [3] [4] [5]