VC学习:对话框
2010-11-01 08:07:59 来源:WEB开发网//>>再在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);//以十进制的形式把数值转换成文本
更多精彩
赞助商链接