接一位親戚工作時的需求,需要做乙個簡單的藥量計算程式,分為粉劑和水劑兩種情況計算。計算的公式並不複雜,為了將兩種情況合在乙個對話方塊程式中實現,需要用類似屬性單的功能,但不知道基於對話窗的mfc程式要怎麼使用屬性單(基類是cwnd而不是cdialog),看到tabcontrol控制項可以實現了類似的功能,就嘗試做了一下。最後效果是這樣的:
其實嚴格來說這個控制項並不是像屬性單那樣的(或者說這個控制項需要自己定義的東西更多),屬性單可以直接切換不同的子對話方塊,而tabcontrol控制項還需要你設定好視窗的位置,大小,切換時的操作等。
比如這個例子,首先要將tabcontrol控制項拉到最大,佔據整個原對話方塊,並設定好選項卡在下方(在熟悉後這些可以根據自己接下來設定子視窗的位置來改動)。並新增控制項變數mycal。在對話方塊的初始函式oninitdialog()中加入如下語句:(粗體為新增的)
// todo: 在此新增額外的初始化**mycal.insertitem(0, l"粉劑"); //新增引數一選項卡
mycal.insertitem(1, l"水劑"); //新增引數二選項卡
mycalsolid.create(idd_cal_solid, getdlgitem(idc_mytab));
mycalwater.create(idd_cal_water, getdlgitem(idc_mytab));
//獲得idc_tabtest客戶區大小
crect rs;
mycal.getclientrect(&rs);
//調整子對話方塊在父視窗中的位置
rs.top -= 10;
rs.bottom -= 20;
rs.left += 1;
rs.right -= 2;
//設定子對話方塊尺寸並移動到指定位置
mycalsolid.movewindow(&rs);
mycalwater.movewindow(&rs);
//分別設定隱藏和顯示
mycalsolid.showwindow(true);
mycalwater.showwindow(false);
//設定預設的選項卡
mycal.setcursel(0);
return true; // 除非將焦點設定到控制項,否則返回 true
首先設定好tabcontrol控制項中選項卡的名字並對應好選項卡序號,然後新建對應的無邊框(border)的對話方塊(該例子子對話方塊的id為idd_cal_water和idd_cal_solid)。建立完成對應的新增它們的類並呼叫create函式把它加入到tabcontrol控制項中。接下來再調整好子對話方塊的位置,最後設定預設的顯示子視窗的形式,該例子中為顯示solid的視窗,隱藏water的視窗,並將它與預設的選項卡序號對應上。為了完成切換選項卡時切換視窗,我們再加入tabcontrol控制項的時間響應函式:
void ccalculatemedicinedlg::ontcnselchangemytab(nmhdr *pnmhdr, lresult *presult)
*presult = 0;
}
此時即可實現功能。
ps:另外還有就是這次做專案的時候發現對既可以是控制也可以是值的控制項新增變數時,如果變數不需要自動的改動之類的(如使用者手動輸入的原始質量等),可以新增值變數,如果是需要自動更新值之類的(如輸出的提取體積),則最好用控制變數。顏色控制項類似的也是如此。
react native專案中時間計算異常問題
hermes存在部分機型,設定了時區,new date 返回值和jsc表現不一樣,有問題 描述 真機連線本地服務跑起來一切正常,斷開連線本地,就會有bug,由於new date導致算時間有問題,有相關時間計算的最後都顯示nan 機型 iphone11 oppo 等 原因 hermes有問題的時間格式...
邊緣計算在CDN融合專案中的應用
隨著時間推移,cdn競爭趨於理性,戰勢頭減弱。cdn廠商策略有所調整,市場份額 流水 淨利潤同步看齊,部分廠商轉向輕資產路線,控制一次性建設成本支出。公司策略 b 通過外採方式控制綜合採購成本,提公升淨利潤空間。業務挑戰 現金流緊張,需要較長業務週期,降低一次性成本投入。idc建設及維護成本高,彈性...
專案中的思考
從2.0上線,一夜之間湧入20w 使用者,對於我們這種經常看不到併發的應用,壓力隨之而來,在緊急情況下,使用了最為暴力的擴容方案,堆機器,當機器堆到近20台時,使用者反饋卡頓降低了。但是隨之而來的另乙個問題又出現了,因為某乙個模組對資料操作的頻繁程度太高,大約每乙個使用者每秒插入5條記錄 本身這一模...