WEB开发网
开发学院软件开发VC VC学习:对话框 阅读

VC学习:对话框

 2010-11-01 08:07:59 来源:WEB开发网   
核心提示://>>再在CTestDlg类中添加CButton型的私有成员变量m_bt,为m_bt对象是否已经与窗口关联,VC学习:对话框(2),避免重复关联而出错,有如下三种实现方法://▲法一:BOOL型私有成员变量m_bIsCreated(在其构造函数中初始化为FALSE),可以利用CWnd类GetWindowT

//>>再在CTestDlg类中添加CButton型的私有成员变量m_bt。为m_bt对象是否已经与窗口关联,避免重复关联而出错,有如下三种实现方法:

//▲法一:BOOL型私有成员变量m_bIsCreated(在其构造函数中初始化为FALSE),用来标识是否已经创建过按钮窗口了

if(m_bIsCreated==FALSE) //确保m_bt没有与某窗口绑定了

{

m_bt.Create("New",BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE,CRect(0,0,100,200),this,123); //CButton类的Create用来创建按钮。若无WS_VISIBLE,则要加ShowWindow

m_bIsCreated=TRUE;

}

else

{

m_bt.DestroyWindow();

m_bIsCreated=FALSE;

}    

//▲法二:若不用成员变量m_bISCreated,也可以用下方法

   static BOOL bIsCreated=FALSE;//注意:必须是static,否则每次调用OnBtAdd函数时都会被重新定义,实现不了所需功能;而对于static,第一次加载时,就会为其分配内存空间并初始化为FALSE,以后再进入OnBtnAdd时,就不会再为这个静态分配内存空间并初始化了!

if(bIsCreated==FALSE) //确保m_bt没有与某窗口绑定了

{

m_bt.Create("New",BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE,CRect(0,0,100,200),this,123);//若无WS_VISIBLE,则要加ShowWindow

bIsCreated=TRUE;

}

else

{

m_bt.DestroyWindow();

bIsCreated=FALSE;

}*/

//▲法三:由于CWnd类有一个成员变量m_hWnd用来保存与窗口对象相关联的窗口句柄,如果窗口句柄没有任一窗口相关联,则句柄为NULL

if(!m_bt.m_hWnd)

{

m_bt.Create("New",BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE,CRect(0,0,100,200),this,123);

}

else

{

m_bt.DestroyWindow();

}

}

/*■4.<<静态文本控件的访问>>*/

//功能:单击一个静态文本(Number1:)时,把文本变成“数值1:”

void CTestDlg::OnNumber1() //静态文本Number1的响应函数

{

//先添加一个对话框及类,并添加菜单来显示(同前)

   //再添加静态文本Number1:,改变其ID(由于静态文本一般只其标签的作用,其ID默认都相同,特殊情况下需要操作它时需改变它)

//注意:静态文本控件默认是不发送通告消息的。需要勾上Notify选项

CString str;

if(GetDlgItem(IDC_NUMBER1)->GetWindowText(str), str == "Number1:") //if语句的一种使用方法

//控件实际上也是窗口,要获取静态文本控件上显示的文本,可以利用CWnd类GetWindowText来实现,之前需要由GetDlgItem来获取静态文本框件对象

{

GetDlgItem(IDC_NUMBER1)->SetWindowText("数值1:");

}

else

{

GetDlgItem(IDC_NUMBER1)->SetWindowText("Number1:");

}

}

/*■5.<<编辑框控件>>*/

//功能:在前两个编辑框中分别输入数字,然后单击Add按钮,把其和显示在第三个编辑框

void CTestDlg::OnBtnAdd()

{

//▲法一:GetDlgItem->GetWindowText

int num1, num2, num3;

char ch1[10], ch2[10], ch3[10];

GetDlgItem(IDC_EDIT1)->GetWindowText(ch1,10);

GetDlgItem(IDC_EDIT2)->GetWindowText(ch2,10);

num1 = atoi(ch1);//atoi将数字组成的字符串转换成数值

num2 = atoi(ch2);

num3 = num1 + num2;

itoa(num3,ch3,10);//以十进制的形式把数值转换成文本

上一页  1 2 3 4  下一页

Tags:VC 对话框

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接