duilib 封裝win32控制項

2021-08-09 18:35:37 字數 1503 閱讀 5662

思路:就是建立乙個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...