var mycars = new Array()
Composite comp2 = new Composite("Composite XY");
comp2Add(new Leaf("Leaf XYA"));
comp2Add(new Leaf("Leaf XYB"));
rootAdd(comp2);
rootAdd(new Leaf("Leaf C"));
CWnd GetDlgItem ( int nID ) const;
void CWnd::GetDlgItem( int nID, HWND phWnd ) const;
FindWindow函数是获取顶层窗口的函数,不能获取子窗口。
FindWindowEx才是获取指定窗口的子窗口句柄(指针)的函数,要成功获取,需要以下几个条件:
第一参数必须指定明确的父窗口,如果为NULL,则是获取顶层窗口(即,父窗口为桌面);
被查找窗口(控件)必须和第二参数是明确的父子关系,且子窗口不是模态窗口(模态窗口有些特殊,一般不这样获取);
子窗口获取可能不是一次成功,如果类似子窗口很多,可能需要判断hwndChildAfter。
从你图中代码,无法判断需要获取的是否是顶层窗口,如果是,那么第一参数要写ClassName,而不是你的资源号,比如这样:
CWnd pwnd = FindWindow(NULL,_T("资源管理器"));如果是希望获取子窗口,在MFC下不推荐使用这两个函数。
另外,报错是因为在UNICODE字符集的工程下,第一参数需要使用宽字节字符串,加上_T转换就可以了。
既然你是要在子窗口显示进度条,那天在资源中编辑对话框嘛,添加了进度条,然后为这个对话框创建一个类,在对话框类中的函数中处理你的进度条啊,在DoMoal之后自然会执行进度条的代码了,比如你可以再InitDIalog中初始化进度条为50%等等
//不要用模态Dialog
CRGBDlg rgb_dlg=new CRGBDlg();
rgb_dlg->Create(IDD_RGBDlG,NULL);
rgb_dlg->ShowWindow(SW_SHOWNORMAL);
rgb_dlg->SetWindowText(""); //你要修改caption的代码
//试试
//另外你用的VS什么版本的啊 竟然不用加_T(""),或SetWindowTextW( )
本来希望的效果是在对话框上设置两个picture控件,分别显示两幅图像,然后将两幅图像中的相似部分利用一条直线连接起来。要实现这样的效果需要知道相似位置在这两幅图中的坐标以及这两个控件在对话框上的坐标,然后通过加减运算就可以得到图像上的相似区域在对话框的坐标,直接将这两个坐标用直线连接就可以了。
为此,如何获得控件在对话框上的坐标是关键问题。编写了如下的测试小程序,目的是将两个picture控件中的点用直线连接起来,比较直观的是picture控件的四个角,所以程序中是将控件的拐角连接起来。首先在对话框上并排放置两个同样大小的picture控件,将他们的标识分别设成IDC_LEFT和IDC_RIGHT,然后添加两个编辑框用于显示picture控件的大小,给这两个编辑框添加相应的数据成员m_row和m_colume。添加一个按钮用于连接picture控件中的点,为这个按钮添加成员函数OnMatch() 。
void CControlDlg::OnMatch(){// TODO: Add your control notification handler code here
CRect rectL,rectR;
GetDlgItem(IDC_LEFT)->GetWindowRect(&rectL);//获取控件相对于屏幕的位置
ScreenToClient(rectL);//转化为对话框上的相对位置
GetDlgItem(IDC_RIGHT)->GetWindowRect(&rectR);//获取控件相对于屏幕的位置
ScreenToClient(rectR);//转化为对话框上的相对位置
m_row=rectLbottom-rectLtop;
m_colume=rectLright-rectLleft;
UpdateData(FALSE);
CClientDC dc(this);
dcMoveTo(rectLleft,rectLtop);
dcLineTo(rectRright,rectRbottom);
dcMoveTo(rectLright,rectLtop);
dcLineTo(rectRleft,rectRbottom);
dcMoveTo(rectLleft+m_colume/2,rectLtop+m_row/2);//连接两个控件中心点
1、为界面添加一个List Control控件。\x0d\2、更改这个控件的view属性为Report\x0d\3、为这个控件添加一个控制型变量 假设为m_ctlList;\x0d\4、在界面的初始化函数OnInitDialog()函数中初始化这个控件主要是插入列表的头,主要调用\x0d\int InsertColumn( int nCol, LPCTSTR lpszColumnHeading, int nFormat = LVCFMT_LEFT, int nWidth = -1, int nSubItem = -1 );这个函数。\x0d\其中 nCol是列的索引,从0开始 ;lpszColumnHeading 列的名称 ;nFormat 文字的摆放方式;nWidth 宽的度度。\x0d\如:\x0d\m_ctlListInsertColumn(0,"姓名",LVCFMT_CENTER,60);//第一列,名称为姓名,文字居中显示,列的宽度为60像素\x0d\m_ctlListInsertColumn(1,"性别",LVCFMT_CENTER,60);//第二列,名称为性别,文字居中显示,列的宽度为60像素\x0d\\x0d\5在界面中添加一个“添加按钮”,在按钮的响应函数中向列表控件m_ctlList插入数据主要代码如下。\x0d\ UpdateData(TRUE);//将界面的数据更新到对应的变量中\x0d\int count=m_ctlListGetItemCount();//获取当前存在的数据总量\x0d\m_ctlListInsertItem(count,"张三");//插入一行\x0d\m_ctlListSetItemText(count,1,"男");//改变列2的显示文字
好吧,你得告诉我你的C++是基于CLR平台的还是API编程
如果基于CLR平台:
button1->Text="确定";
如果使用API来编程:
首先,你要得到这个控件的句柄
C++中的控件都是以句柄来控制的,
然后用一个Windows API的自带函数来进行修改:
SetWindowText(你的按钮句柄,"确定");
如果你还不知道怎么新建这个按钮,先添加一个变量:
HWND button;
然后在WndProc中添加WM_CREATE消息的处理事件,在里面加入:
button=CreateWindow("PUSHBUTTON","确定",BS_PUSHBUTTON|WM_VISIBLE|WM_CHILD,0,0,100,20,hWnd,NULL,hInst,NULL);
这样就新建了一个标题是确定的按钮
——————————————————
用C++进行windows编程和其他语言都不一样你还没有脱离VB的显式类的思想
以上就是关于MFC程序如何用代码设置控件属性全部的内容,包括:MFC程序如何用代码设置控件属性、MFC获取当前对话框指针、关于C++MFC窗口控件句柄获取问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)