思路:就是建立乙個duilib控制項來容納win32控制項。
1.和網上的資料一樣,我們建立乙個duilib控制項
#pragma once
#include
"resource.h"
#include
"stdafx.h"
class cwndui : public ccontrolui
; ~cwndui(void){};
virtual void setinternvisible(bool bvisible =
true)
virtual void setpos(rect rc)
bool attach(hwnd hwndnew)
m_hwnd = hwndnew;
return
true;
}hwnd detach()
protected:
hwnd m_hwnd;
};
這裡能得到控制項的控制代碼。
2.像自定義控制項一樣,我們在視窗類中需要繼承重寫createcontrol(lpctstr pstrclass);函式
ccontrolui* cclockdlg::createcontrol(lpctstr pstrclass)
return
null;
}
xml:
m_timehwnd是我寫的類中的變數,因為我要得到時間控制項的控制代碼。win32中日期時間的控制項型別是sysdatetimepick32,這個一定要弄清楚,不然無法顯示控制項。另外是這個控制項預設是顯示日期的,我們需要顯示時間,這裡我們createwindow的時候就要新增dts_timeformat屬性。還有乙個是網上使用mfc控制項在xml中留下位置和大小資訊,我發現在win32中沒有用,所以設定位置和大小我就寫在了createwindow裡。(真坑爹)
3.就是要得到我們的時間了
systemtime systime;
::sendmessage(m_timehwnd, mcm_getcursel, null, (lparam)&systime);
cduistring str;
str.format(l"%d小時%d分鐘%d秒", systime.whour, systime.wminute, systime.wsecond);
說明:需要說明一點是我這裡視窗類是繼承的public windowimplbase,如果是繼承public cwindowwnd, public inotifyui,顯示不出來,就需要在create函式裡新增上自身的this指標。
win32 控制項操作
int getwindowtext hwnd hwnd,lptstr lpstring,int nmaxcount boolsetwindowtext hwndhwnd,lpctstrlpstring 問題 如下,vc6 問題描述請看注釋.char sztext 256 wparam wparam ...
Win32控制項使用 Edit控制項
drecik學習經驗分享 edit控制項是乙個很強大的輸入控制項,可以處理很多樣式,通過vs的控制項屬性來設定,有單行,多行,密碼框,滾動條等。其中通知碼可以如下所示 獲得edit控制項輸入的內容可以通過之前討論過的通用函式 參考前面的博文 getwindowtext等。剪下,複製,刪除當前選擇內容...
簡單的WIN32視窗封裝
封裝視窗物件。注意。有些命名我是直接複製win32api的,偷懶了 本來是想直接用虛函式來處理訊息的,但是訊息很多,寫的會很吃力,所以採用類似mfc的訊息對映,現在記憶體是很富裕的,不用擔心虛函式表會占用大量記憶體,個人建議是採用虛函式的,我這裡偷偷懶。該類主要作用 訊息處理函式呼叫該類的靜態函式w...