您的位置:首页 > 其它

VS2005 VC 基与对话框 的程序 常用控件小结

2014-01-13 08:36 274 查看
作者:BB高擎天的空间

转自:http://hi.baidu.com/cahbb/item/99538a17c99c384ce75e064a

前一段时间要做一个小程序,用到了一些控件,也是找了些资料,再加上实际试验,证实了可用的使用方法,现记录如下,以方便自己及他人查询调用。

基于对话框得到键盘消息方法:

在实际使用时有一个问题,我在基于对话框的窗中,再加上一个Tab控件,这时,主窗口就得不到消息了,这时候,下面的函数就用在Tab控件中的最后一个分页面去做定义,这样才能得到键盘消息。个人认为,最后一个分页它在最上面,它是活动页,所以能得到消息。

在。h头文件中加入函数的定义 public型

BOOL CkeyDlg::PreTranslateMessage(MSG* pMsg) ;

在dlg。cpp中加入

BOOL CkeyDlg::PreTranslateMessage(MSG* pMsg)

{

if(pMsg->message==WM_KEYDOWN) // && pMsg-> hwnd==GetSafeHwnd())

{

switch(pMsg->wParam)

{

case VK_UP://各上的键

MessageBox(TEXT("dd"));

break;

}

}

return CDialog::PreTranslateMessage(pMsg);

}

//-------TabControl 使用方法-----------

环境:VS2005,基与对话框程序。

1:在主窗口增加TABcontrol 控件

2:右键增加控件变量CTabCtrl m_tab

3: 新建三个对话框(在资源中插入资源对话框),其中属性项-》Style->child,Border->none.

4: 在新建的窗口上右键,增加新类起个名子CPage1到3.

5:在主窗口中手动加入全局变量

CPage1 m_page1;

CPage2 m_page2;

CPage3 m_page3;

6:在主窗口的.h头文件中加入

#include "Page1.h"

#include "Page2.h"

#include "Page3.h"

7:在主窗口的OnInitDialog函数中加入初始化代码

m_tab.InsertItem(0, _T("1自动工作"));

m_tab.InsertItem(1, _T("2手动工作"));

m_tab.InsertItem(2, _T("3配置"));

m_page1.Create(IDD_DIALOG1, &m_tab);//关联窗口与tab页

m_page2.Create(IDD_DIALOG2, &m_tab);

m_page3.Create(IDD_DIALOG3, &m_tab);

//设定在Tab内显示的范围

CRect rc;

m_tab.GetClientRect(rc);

rc.top += 20;

rc.bottom -= 2;

rc.left += 2;

rc.right -= 2;

m_page1.MoveWindow(&rc);//移动到定点位置

m_page2.MoveWindow(&rc);

m_page3.MoveWindow(&rc);

//显示初始页面

m_page1.ShowWindow(TRUE);

m_page2.ShowWindow(FALSE);

m_page3.ShowWindow(FALSE);

m_tab.SetCurSel(0);

8:先选中TAB控件,在属性页中,点击“控件事件”(闪电)。

找到TCN_SELCHANGE,增加OnTcnSelchangeTab事件函数

int CurSel = m_tab.GetCurSel(); //得到当前是第几属性页序列号

switch(CurSel)

{

case 0:

m_page1.ShowWindow(true);

m_page2.ShowWindow(false);

m_page3.ShowWindow(false);

break;

case 1:

m_page1.ShowWindow(false);

m_page2.ShowWindow(true);

m_page3.ShowWindow(false);

break;

case 2:

m_page1.ShowWindow(false);

m_page2.ShowWindow(false);

m_page3.ShowWindow(true);

break;

default:

;

//===================================================

//---为窗体增加背景图片---

1:在资源视图中,找到Bitmap目录,

右键增加 资源 -》导入-》找到准备好的bmp图片。

2: 在要操作窗体的.h头文件中加入

CBrush m_brBk;//在public中定义

3:在类视图,找到想要加图片的类,因这个类没有OnInitDialog初始化函数,

所以要给它加一个OnCreate函数.

选中类视图中,找到那个窗口类,再点击,增加消息WM_CREATE

在OnCreate函数中加入

CBitmap bmp;

bmp.LoadBitmap(IDB_BITMAP4);

m_brBk.CreatePatternBrush(&bmp);

bmp.DeleteObject();

4:在类视图,选中操作的类,增加消息WM_CTLCOLOR

在OnCtlColor函数中加入

if (pWnd == this)

{

return m_brBk;

}

//----在WINCE 环境下为窗体增加图片方法----

在资源视图下,找到那个窗体,增加消息PAINT,示例如下:

void CPage3::OnPaint()

{

CPaintDC dc(this); // device context for painting

// TODO: 在此处添加消息处理程序代码

// 不为绘图消息调用 CDialog::OnPaint()

CRect rect;

GetClientRect(&rect);

CDC dcMem;

dcMem.CreateCompatibleDC(&dc);

CBitmap bmpBackground;

bmpBackground.LoadBitmap(IDB_BITMAP1);

//IDB_BITMAP是你自己的图对应的ID

//这个资源我在做时,如果VS环境下的路径和wince不一致的话,也会出现加载失败,后来,我在上位机也做一个和wince一样的路径进行加载,这样在wince也能正常显示了。

BITMAP bitmap;

bmpBackground.GetBitmap(&bitmap);

CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground);

dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,

bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);

}

//========================================

//-----将按钮加上图片显示------

1:在窗口上放一个BUTTON控件

2:将BITMAP属性设成true,再将 owenr Draw设成true

3:在这个控件上右键,增加一个控件变量

4:在这个窗体的.h头文件中找到这个控件定义,

如 CButton Mybut; 将其改成CBitmapButton Mybut;

5: 在窗口的初始化函数中加入如下

MyDia4Btn1.LoadBitmaps(IDB_BITMAP5,IDB_BITMAP6);

第一项为默认状态,第二项为按下状态。

//===============================================

//---------------------------

子对话框调用主对话框中的函数:试验环境是,子对话框中加入了tab控件,在tab控件中增加的对话框。

示例:

主对话框类的名子:Cmfc_dialog_tabDlg

第一个GetParent()得到的是tab控件的父窗口,第二个是子对话框的父窗口,就是主对话框了。

TestMessag()这个函数是在主对话框中定义的一个函数。

Cmfc_dialog_tabDlg *pDlg = (Cmfc_dialog_tabDlg *)GetParent()->GetParent();

pDlg->TestMessage();

同理,在这样的环境中,第一子对话框调用第三个子对话框中的函数 使用方法:

说明:CPage3 是第三个子窗口类的名子, OnBnClickedButton1(),是第三个窗口中的一个函数。

CPage3 *MyPage3 =(CPage3 *)GetParent();

MyPage3->OnBnClickedButton1();

//=======================================

//---------------------------

Edit Control 控件 组成数组使用方法:

1:在要使用的.cpp文件中 手动定义全局变量

例:float MyDia3[6];

2:在窗口中定义四个Edit control控件,将这几个控件关联数值型成员变量。

3:找到这几个变量关联的地方,将最后一项,手动改成你定义的数组名的变量。

void CPage3::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

DDX_Text(pDX, IDC_EDIT1, MyDia3[0]);

DDX_Text(pDX, IDC_EDIT2, MyDia3[1]);

DDX_Text(pDX, IDC_EDIT3, MyDia3[2]);

DDX_Text(pDX, IDC_EDIT4, MyDia3[3]);

DDX_Radio(pDX, IDC_RADIO1, MyRadio);

}

UpdateData(FALSE); 将数据刷新到Edit control 控件中。

TRUE ;将控件中的数据刷新到变量中。

//===========================

//----------------------------------------------------

static text 静态文本 使用操作方法

在程序中动态改变static text控件的caption值

方法1,给STATIC控件取个名字叫IDC_STATICTITLE

然后在ClassWizard中设定一个控件变量给它叫m_statictitle

然后用m_statictitle.SetWindowText("你要写的字串");updata(False);

方法2,给STATIC控件取个名字叫IDC_STATICTITLE

GetDlgItem(IDC_STATICTITLE)->SetWindowText(_T("你要写的字串"));updata(False);

方法3,给STATIC控件取个名字叫IDC_STATICTITLE

然后在ClassWizard中设定一个CString变量给它叫m_statictitle

然后用m_statictitle = "你要写的字串";updata(False);

方法4:

给STATIC控件取名IDC_STATIC1,SetDlgItemText(IDC_STATIC1,_T("你要写的字符串");

//=====================================
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: