RT,小弟在做一个单文档的工程,要求根据设置的个数动态创建带有颜色的客户区,并且在每个客户区内动态创建四个按钮。
现在解决了初步的问题,可以动态创建出子窗口,并且可以动态创建出来四个按钮,问题就是,只在第一个子窗口内可以显示,其他的都没有显示。调试了一下午,只能解决到这步了,故求教各位。下面是我的代码: if(bIsDraw == true)
{
delete []m_wndUnit; //子窗口指针数组
delete []m_btnUnit; //按钮指针数组
} CRect rect ;
GetClientRect(rect);
int nTop = rect.top;
int nLeft = rect.left + 20;
int nEquipNum = atoi(m_strEquipNum);
int nRight = rect.right/(nEquipNum) - 20;
int nButtom = rect.bottom/(nEquipNum) - 20;
int nTemp = nRight;
int nbtnNum = 0; //按钮计数 m_wndUnit = new CCreateUnit[nEquipNum]; //nEquipNum为外部传入的客户区数量
m_btnUnit = new CButton[nEquipNum * 4];
for(int i = 0; i < nEquipNum; i++)
{
//画子客户区
CRect rectUnit(nLeft, nTop, nRight, nButtom);
DWORD dwStyle = WS_CHILD | WS_BORDER | WS_TABSTOP | WS_VISIBLE; m_wndUnit[i].Create( "MFCUnitCtrl" , NULL ,dwStyle , rectUnit , this , NULL ) ;
m_wndUnit[i].ShowWindow( SW_NORMAL ) ; //在每个客户区生成按钮
CRect rectBtn1(nLeft - 20, nTop, nRight/2 - 20, nButtom/2 - 5);
m_btnUnit[nbtnNum].Create("初始化", WS_VISIBLE|BS_PUSHBUTTON, rectBtn1, &m_wndUnit[i], NULL);
m_btnUnit[nbtnNum].ShowWindow( SW_NORMAL ); CRect rectBtn2(nRight/2, nTop, nRight, nButtom/2 - 5);
m_btnUnit[nbtnNum + 1].Create("运行位置", WS_VISIBLE|BS_PUSHBUTTON, rectBtn2, &m_wndUnit[i], NULL);
m_btnUnit[nbtnNum + 1].ShowWindow( SW_NORMAL ); CRect rectBtn3(nLeft - 20, nButtom/2 + 5, nRight/2 - 20, nButtom);
m_btnUnit[nbtnNum + 2].Create("取样位置", WS_VISIBLE|BS_PUSHBUTTON, rectBtn3, &m_wndUnit[i], NULL);
m_btnUnit[nbtnNum + 2].ShowWindow( SW_NORMAL ); CRect rectBtn4(nRight/2, nButtom/2 + 5, nRight, nButtom);
m_btnUnit[nbtnNum + 3].Create("旁路位置", WS_VISIBLE|BS_PUSHBUTTON, rectBtn4, &m_wndUnit[i], NULL);
m_btnUnit[nbtnNum + 3].ShowWindow( SW_NORMAL ); //变量后续处理
nLeft += nTemp + 20;
nRight += nTemp + 20;
nbtnNum += 4;
} bIsDraw = true; RedrawWindow();
现在解决了初步的问题,可以动态创建出子窗口,并且可以动态创建出来四个按钮,问题就是,只在第一个子窗口内可以显示,其他的都没有显示。调试了一下午,只能解决到这步了,故求教各位。下面是我的代码: if(bIsDraw == true)
{
delete []m_wndUnit; //子窗口指针数组
delete []m_btnUnit; //按钮指针数组
} CRect rect ;
GetClientRect(rect);
int nTop = rect.top;
int nLeft = rect.left + 20;
int nEquipNum = atoi(m_strEquipNum);
int nRight = rect.right/(nEquipNum) - 20;
int nButtom = rect.bottom/(nEquipNum) - 20;
int nTemp = nRight;
int nbtnNum = 0; //按钮计数 m_wndUnit = new CCreateUnit[nEquipNum]; //nEquipNum为外部传入的客户区数量
m_btnUnit = new CButton[nEquipNum * 4];
for(int i = 0; i < nEquipNum; i++)
{
//画子客户区
CRect rectUnit(nLeft, nTop, nRight, nButtom);
DWORD dwStyle = WS_CHILD | WS_BORDER | WS_TABSTOP | WS_VISIBLE; m_wndUnit[i].Create( "MFCUnitCtrl" , NULL ,dwStyle , rectUnit , this , NULL ) ;
m_wndUnit[i].ShowWindow( SW_NORMAL ) ; //在每个客户区生成按钮
CRect rectBtn1(nLeft - 20, nTop, nRight/2 - 20, nButtom/2 - 5);
m_btnUnit[nbtnNum].Create("初始化", WS_VISIBLE|BS_PUSHBUTTON, rectBtn1, &m_wndUnit[i], NULL);
m_btnUnit[nbtnNum].ShowWindow( SW_NORMAL ); CRect rectBtn2(nRight/2, nTop, nRight, nButtom/2 - 5);
m_btnUnit[nbtnNum + 1].Create("运行位置", WS_VISIBLE|BS_PUSHBUTTON, rectBtn2, &m_wndUnit[i], NULL);
m_btnUnit[nbtnNum + 1].ShowWindow( SW_NORMAL ); CRect rectBtn3(nLeft - 20, nButtom/2 + 5, nRight/2 - 20, nButtom);
m_btnUnit[nbtnNum + 2].Create("取样位置", WS_VISIBLE|BS_PUSHBUTTON, rectBtn3, &m_wndUnit[i], NULL);
m_btnUnit[nbtnNum + 2].ShowWindow( SW_NORMAL ); CRect rectBtn4(nRight/2, nButtom/2 + 5, nRight, nButtom);
m_btnUnit[nbtnNum + 3].Create("旁路位置", WS_VISIBLE|BS_PUSHBUTTON, rectBtn4, &m_wndUnit[i], NULL);
m_btnUnit[nbtnNum + 3].ShowWindow( SW_NORMAL ); //变量后续处理
nLeft += nTemp + 20;
nRight += nTemp + 20;
nbtnNum += 4;
} bIsDraw = true; RedrawWindow();
m_btnUnit[i].ShowWindow( SW_NORMAL );
你为你的按钮 分配不同的ID试验下
为毛打出来的是繁体字
{
//画子客户区
CRect rectUnit(nLeft, nTop, nRight, nButtom);
rectUnit.OffsetRect(i * (nTemp + 20), 0)
DWORD dwStyle = WS_CHILD | WS_BORDER | WS_TABSTOP | WS_VISIBLE; m_wndUnit[i].Create( "MFCUnitCtrl" , NULL ,dwStyle , rectUnit , this , NULL ) ;
m_wndUnit[i].ShowWindow( SW_NORMAL ) ; //在每个客户区生成按钮
CRect rectBtn1(nLeft - 20, nTop, nRight/2 - 20, nButtom/2 - 5);
m_btnUnit[nbtnNum].Create("初始化", WS_VISIBLE|BS_PUSHBUTTON, rectBtn1, &m_wndUnit[i], NULL);
m_btnUnit[nbtnNum].ShowWindow( SW_NORMAL ); CRect rectBtn2(nRight/2, nTop, nRight, nButtom/2 - 5);
m_btnUnit[nbtnNum + 1].Create("运行位置", WS_VISIBLE|BS_PUSHBUTTON, rectBtn2, &m_wndUnit[i], NULL);
m_btnUnit[nbtnNum + 1].ShowWindow( SW_NORMAL ); CRect rectBtn3(nLeft - 20, nButtom/2 + 5, nRight/2 - 20, nButtom);
m_btnUnit[nbtnNum + 2].Create("取样位置", WS_VISIBLE|BS_PUSHBUTTON, rectBtn3, &m_wndUnit[i], NULL);
m_btnUnit[nbtnNum + 2].ShowWindow( SW_NORMAL ); CRect rectBtn4(nRight/2, nButtom/2 + 5, nRight, nButtom);
m_btnUnit[nbtnNum + 3].Create("旁路位置", WS_VISIBLE|BS_PUSHBUTTON, rectBtn4, &m_wndUnit[i], NULL);
m_btnUnit[nbtnNum + 3].ShowWindow( SW_NORMAL ); //变量后续处理
//nLeft += nTemp + 20;
//nRight += nTemp + 20;
nbtnNum += 4;
}