擴充套件Static控制項

2021-06-07 01:18:45 字數 2419 閱讀 1723

在vb或者.net環境下,靜態控制項的顏色、字型大小等等屬性都可以通過屬性對話方塊很輕易的設定,但是在vc++環境下要實現同樣的目的,必須自己手動編寫**實現,一種常用的做法是響應對話方塊的wm_ctrcolor訊息。

hbrush csettingdlg::onctlcolor(cdc* pdc, cwnd* pwnd, uint nctlcolor)

return hbr;

}

這樣做也有其不方便的地方,需要對每乙個控制項設定,而且預設的靜態控制項比較單調,所以自己檢視擴充套件一下靜態控制項,於是通過繼承cstatic類寫了自己的乙個擴充套件的靜態類。

類定義檔案:

#if !defined(afx_staticex_h__436e57e9_f7e9_4728_8910_f22cde1ce3d0__included_)

#define afx_staticex_h__436e57e9_f7e9_4728_8910_f22cde1ce3d0__included_

#if _msc_ver > 1000

#pragma once

#endif // _msc_ver > 1000

// staticex.h : header file///

// cstaticex window

class cstaticex : public cstatic

}afx_virtual

// implementation

public:

virtual ~cstaticex();

// generated message map functions

protected:

//}afx_msg

declare_message_map()};/

//}// microsoft visual c++ will insert additional declarations immediately before the previous line.

#endif // !defined(afx_staticex_h__436e57e9_f7e9_4728_8910_f22cde1ce3d0__included_)

類實現檔案:

// staticex.cpp : implementation file

//#include "stdafx.h"

#include "exstatic.h"

#include "staticex.h"

#ifdef _debug

#define new debug_new

#undef this_file

static char this_file = __file__;

#endif

/// cstaticex

cstaticex::cstaticex()

cstaticex::~cstaticex()

begin_message_map(cstaticex, cstatic)

//}afx_msg_map

end_message_map()

/// cstaticex message handlers

void cstaticex::onpaint()

poldfont=memdc.selectobject(pfont);//設定文字字型

memdc.settextcolor(m_textcolor);//設定文字顏色

datart.right-=5;

memdc.drawtext(sztext,&datart,format);

dc.bitblt(rt.left,rt.top,rt.width(),rt.height(),&memdc,0,0,srccopy);

//恢復預設的dc

memdc.selectobject(oldpen);

memdc.selectobject(oldbrush);

memdc.selectobject(poldfont);

memdc.selectobject(poldbit);

membitmap.deleteobject();

memdc.deletedc();

//刪除物件

pen_bodeline->deleteobject();

delete pen_bodeline;

brush_fill->deleteobject();

delete brush_fill;

brush_bode->deleteobject();

delete brush_bode;

}

測試效果:

擴充套件 GridView 控制項

解決 方法一 採用其emptytemplate來實現,模版中寫乙個靜態的table 缺點 麻煩,每個gridview都需要設定一下.方法二 若資料來源為datatable,則當無資料時,始終返回乙個空行的datatable 若資料來源是集合類 arraylist,list等 無資料時,生成乙個空的實...

TreeView控制項擴充套件

這是我做第乙個專案遇到的問題 關於許可權分配的問題。當時客戶的要求是這樣 許可權分為父許可權和子許可權,子許可權率屬於父許可權。比如員工的基本資訊管理 父許可權 包括增 刪 改以及查詢 子許可權 當擁有父權限時則說明至少擁有乙個子許可權。我當時第一想法就是用 treeview 控制項來實現,應該還是...

MiniGUI實現擴充套件控制項

minigui就不作詳細介紹了。反正就是嵌入式方面用的比較廣泛的一套開源的東西。不過貌似現在新版本不開源了。其實貌似mgncs這套東西實現了按鈕的擴充套件的,不過不知道怎麼用,丫的一點介紹都沒得。無賴就自己寫了。乙個自定義按鈕類。可以實現載入,滑鼠滑動會有相應的效果。static int loadm...