First load an image with ID idb_bitmap2
In testdlg. h:
Cbrush m_brbk; // defined in public
In testdlg. cpp:
Add the following to the oninitdialog () initialization function:
Bool ctestdlg: oninitdialog ()
{
Cdialog: oninitdialog ();
Cbitmap BMP;
BMP. loadbitmap (idb_bitmap2 );
M_brbk.createpatternbrush ( BMP );
BMP. deleteobject ();
Return true; // return true unless you set the focus to a control
}
Open the Class Wizard and find the wm_ctlcolor message. The onctlcolor () function is reloaded
M_list.AddString (GetItem (I ));}}
5. Add the button ("set Color") Response Function to set the Color attribute of the control.Void CToppPropPage: OnButtonSetcolor (){// TODO: Add your control notification handler code hereCColorDialog dlg;If (dlg. DoModal () = IDOK ){Long lcolor = dlg. GetColor ();SetPropText ("Color", lcolor );GetDlgItem (IDC_STATIC_COLOR)-> Invalidate ();}}
6. Add the WM_CTLCOLOR message response function, obtain the Color attribute of the control in the function, and use th
C/C ++ codeCimagelist imglist; // sets an image list for clistctrl to set the Row Height.Imglist. Create (idb_bitmap4, 16, 1, RGB (255,255,255); // idb_bitmap4 is 16*16, so the row height is 16 pixels.
Clistctrl listctrl = (clistctrl ) getlistctrl ();Listctrl. setimagelist ( imglist, lvsil_small );
I have only used this method at present. There may be other methods, which may be troublesome.
// Self-Summary
In oninitial:
M_clistresult.setitemheight (0, 30 );
Hbrush cate1368manufocusdlg: onctlco
ctestdlg: oninitdialog (){Cdialog: oninitdialog ();Cbitmap BMP;BMP. loadbitmap (idb_bitmap2 );M_brbk.createpatternbrush ( BMP );BMP. deleteobject ();Return true; // return true unless you set the focus to a control}In the Open Class Wizard, find the wm_ctlcolor message, reload the corresponding function onctlcolor (), and add the following:Hbrush ctestdlg: onctlcolor (CDC * PDC, cwnd * pwnd, uint nctlcolor){Hbrush HBr = cdialog: onctlcolor (PDC, pwnd
nctlcolor){Hbrush HBr = cdialog: onctlcolor (PDC, pwnd, nctlcolor );If (pwnd-> getdlgctrlid () = idc_static ){If (this-> color) PDC-> setbkcolor (this-> color );PDC-> settextcolor (0x333333 );}Return HBr;}
Here we mainly want to determine whether pwnd is the static one we want to set.
Finally, we add code in the button and click the button to change the static state.
Void csxdlg: onbutton1 (){This-> font =
The cwnd: onctlcolor function is provided in the MFC class library. This function is called when the child window of the working framework is re-painted. therefore, you can reload the response function of the wm_ctlcolor message. prototype of this function:
Afx_msg hbrush onctlcolor (CDC * PDC, cwnd * pwnd, uint nctlcolor );
The nctlcolor parameter is used to specify the control type, which can be:
. Ctlcolor_btn button control
. Ctlcolor_dlg dialog box
. Ctlcolor_edit edit box
. Ctlcolor_listbo
Use of the VC picture control
Method 1. First, use the picture control to implement it in the simplest way.
Steps:
Import an image in the resource with the ID idb_bitmap2
Then, add a picture control in the dialog box and right-click to open properties,
Select bitmap from the type drop-down box, and an image drop-down box will appear below,
After the image is opened, all the loaded images are displayed,
Select the image you want and run the program.
Method 2vc picture control.
Similarly, load an
:Code:1. Load bitmap in the dialog initialization function OnInitDialog, and then create a new paint brush.Cbitmapdemodlgメッセージハンドラーbool Cbitmapdemodlg::oninitdialog () {cdialogex::oninitdialog ();//"バージョン ..." メニューをシステムメニューに Append します. Idm_aboutboxは, システムコマンドの range girth になければなりません. ASSERT ((Idm_aboutbox 0xfff0) = = Idm_aboutbox); ASSERT (Idm_aboutbox 2. Add a response function for Windows message wm_ctlcolor.Hbrush Cbitmapdemodlg::onctlcolor (cdc* PDC, cwnd* pWnd, UINT nctlcolor) {hbrush
("this is a test "));
Or:
Getdlgitem (idc_edit1)-> setwindowtext ("sdfsa ");Getdlgitem (idc_static1)-> setwindowtext ("sdfsa ");
The following continues ....
//////////////////////////////////////// ////////////
//////////////////////////////////////// /////////////
1. Set the cedit background color
You need to add a message function:
Hbrush ceditdlg: onctlcolor (CDC * PDC, cwnd * pwnd, uint nctlcolor){Hbrush HBr = cdialog: onctlcol
Label: static text
Idc_showtime is the ID of the edit box.
M_showtime is the variable in the static edit box.
1. In DLG. h
Cbrush m_showtimebrush;
Cfont m_editfont; // font
2. oninitdialog ()
M_showtimebrush.createsolidbrush (RGB (204,0, 204); // edit the background color of the box.Cedit * m_editaa = (cedit *) getdlgitem (idc_showtime); // idc_showtime is the edit box ID.M_editfont.createpointfont (220, _ T (""); // select the fontM_editaa-> setfont ( m_editfont );
3. Add onctlcolor in the Clas
Old brother has such a ready-madeProgram, The function is not much more than yours: It adds the function of changing to red, which is relatively simple:1 define a hand-shaped mouse Resource:# Ifndef idc_hand# Define idc_hand makeintresource (32649)# Endif2. Define the font color switch bool m_bcolorswitchopened. If it is not true, the font turns red and the initialization value is false,3. Define the offline function to facilitate calling.
Void cctmpdlg: addline () {crect rect; cstatic * sta =
1. Add the font and color variable [cpp] public: CFont m_myFont; // font object COLORREF m_myColor; // color object 2. initialize the OnInitDialog () function in the dialog box () initialize the font and color [cpp] // TODO: add additional initialization code m_myFont.CreatePointFont (150, _ T (" 文 "); m_myColor = RGB (255, 0,255); 3. Add the WM_CTLCOLOR message response function for the dialog box class, and add the Code [cpp] afx_msg HBRUSH OnCtlColor (CDC * pDC, CWnd * pWnd, UINT nCtlColor);
. LoadBitmap (IDB_BITMAP2);M_brbk.createpatternbrush (bmp);Bmp. DeleteObject ();...return TRUE; Return TRUE unless you set the focus to a control}In the Open Class Wizard, locate the WM_CTLCOLOR message, overload the corresponding function OnCtlColor (), and add the following:Hbrush Ctestdlg::onctlcolor (cdc* PDC, cwnd* pWnd, UINT nCtlColor){Hbrush HBR = Cdialog::onctlcolor (PDC, PWnd, nCtlColor);if (pWnd = = this){return M_BRBK;}return
::OnInitDialog ();CBitmap bmp;Bmp. LoadBitmap (IDB_BITMAP2);M_brbk.createpatternbrush (bmp);Bmp. DeleteObject ();return TRUE; Return TRUE unless you set the focus to a control}In the Open Class Wizard, locate the WM_CTLCOLOR message, overload the corresponding function OnCtlColor (), and add the following:Hbrush Ctestdlg::onctlcolor (cdc* PDC, cwnd* pWnd, UINT nCtlColor){Hbrush HBR = Cdialog::onctlcolor (PDC, PWnd, nCtlColor);if (pWnd = = this){return
Re-on_wm_paint (), On_wm_ctlcolor () the corresponding function of the message OnPaint (), OnCtlColor ()
(i) OnPaint ()
Cdialogex::onpaint ();
CRect rect;
CPaintDC DC (this);
GetClientRect (rect);
dc. Fillsolidrect (Rect, RGB (217, 241)); Set to light blue background(ii) OnCtlColor ()
Hbrush HBR = Cdialogex::onctlcolor (PDC, pwnd, nCtlColor);
TODO: Change any features of the DC here if (nCtlColor = ctlcolor_btn
First build a dialog-based MFC application Engineering Testdlg, the dialog class is Ctestdlgdlg, next, define and create a brush
[CPP]View plain Copy//Add Member variable CBrush m_bkbrush in Ctestdlgdlg class; Create a yellow background brush M_bkbrush.createsolidbrush (RGB (255,255,0)) in OnInitDialog (); Second, add the WM_CTLCOLOR response message function, click the dialog Class Ctestdlgdlg properties--Message response-->wm_ctlcolor--> automatically generate code
[CPP]View Plain copy hbrush
I have collected some of the online and shut down the code, found that the shutdown code is almost the same, and the effect of the shutdown before the code of several subjects did not, only a WIN2000, its methods such as: To create a brush, with a gray brush screen! This section below is an old version of the online shutdown effect code, not very good.
HBITMAP hbm=CreateBitmap(8, 8, 1, 1, pbit); HBRUSH hbr=CreatePatternBrush(hbm); HDC hdc=CreateDC(_T
The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion;
products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the
content of the page makes you feel confusing, please write us an email, we will handle the problem
within 5 days after receiving your email.
If you find any instances of plagiarism from the community, please send an email to:
info-contact@alibabacloud.com
and provide relevant evidence. A staff member will contact you within 5 working days.