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

作者: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("你要写的字符串");   

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

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值