如果你想實現有工具條的浮動和定位功能,而且可以方便的擺放任何控制項上去,請繼續看這篇文章吧!
那就使用cdialogbar就可以擁有和cdialog一樣的方便和快捷。
步驟1:新增乙個cdialogbar派生類
在資源中新增乙個對話方塊,再採用類嚮導來新增類,找不到cdialogbar作為基類吧,可以先用cdialog作為基類產生乙個,然後把所以的「cdialog」替換為「cdialogbar」,替換完成了。編譯一下,^_^有錯誤吧!!請看步驟2。
步驟2:解決編譯錯誤並完善該類
其實錯誤就是構著函式呼叫基類時有問題,: cdialogbar(/*cdlgbar::idd, pparent*/)象這樣注釋掉就可以了,新增乙個類似oninitdialog的函式,在cdialogbar中是不存在oninitdialog的訊息的,至少我還不知道,因為初始化是在建立後呼叫的所以我們就重寫virtual bool create(cwnd* pparentwnd,uint nidtemplate,uint nstyle,uint nid);這個函式。注意哦用嚮導新增的create函式的引數是不對的喔,看上面。下面是實現**(很簡單的)
bool cdlg***::create(cwnd* pparentwnd,uint nidtemplate,uint nstyle,uint nid)
bool cdlg***::initdialogbar()
步驟3:建立和使用
if (!m_barattrib.create(this,idd_dlg_***_attrib, cbrs_right|cbrs_gripper, ***))
m_barattrib.setwindowtext("部件屬性");
***是乙個資源id手工直接在資源的.h檔案中新增一條,不會,這裡就不教了。
工具條的顯示和隱藏**如下,自己慢慢理解吧:
showcontrolbar(&m_barattrib, (m_barattrib.getstyle() & ws_visible) == 0, false);
上面**實現後dodataexchange也是可以用,給控制項新增控制項就和cdialog一樣的方便咯
但是還有乙個要注意的是就是控制項類物件的新增,我試了一下好像不行,視窗控制代碼好像
總是0的,不能使用。還是使用getdlgitem(idc_driver_list)來取得控制項指標吧。
其他方面的心得
利用dodataexchange來控制自定義的輸入格式控制這裡就舉乙個文字框的例子
給文字控制項新增完變數後就在dodataexchange會出現如下**
ddx_text(pdx, idc_***_var, m_strvar);//系統產生的
ddv_maxchars(pdx, m_strvar,var_max_len);//加入長度控制後產生的
ddv_filenamestring(pdx, m_strvar);//自定義的手工新增的實現見下面
void c***::ddv_filenamestring(cdataexchange *pdx, cstring m_strfilename)
}還有幾個注意點是
1.只有執行了updatedata()才會呼叫dodataexchange函式若中途 執行了pdx->fail(); updatedata()就返回false。
2. ddx_text(pdx, idc_***_var, m_strvar);//系統產生的
ddv_maxchars(pdx, m_strvar,var_max_len);//加入長度控制後產生的
ddv_filenamestring(pdx, m_strvar);//自定義的手工新增的實現見下面
如上面幾句都是對乙個控制項的內容的控制,他們必須放在一塊,且ddx_text要放在第一句,這樣在介面上就可以正確的指出那個控制項的內容有問題,控制項會被設定焦點並選中全部內容。
好了先寫這麼多了
利用shellcode來實現API的自動定位
include void main 拖入od中把shellcode轉換成機器碼 太麻煩了就不做了 但是這串 尋找kernel32.dll的方法是直接mov ebp,ecx 0x08 根據偏移量直接找到。ldr ininitializationmodulelist鍊錶在win7後把kernel32.d...
利用static來實現單例模式
class singleton private static singleton instance null publicsynchronizedstatic singleton getinstance return instance 就利用sington.getinstace就可以了,獲得的是同乙...
利用HandlerInteceptor來做請求驗證
小疑問 為什麼是interceptor的名字是用handler開頭的而不是httprequest?其實這是spring自己的 servlet的api裡是沒有interceptor的,功能相似的是filter,但是spring需要更強的控制能力,可以說是定製能力,filter只有interceptor...