
MFC中的控件大小是可以修改的,但是有点麻烦,具体方法如下:
CWnd类的函数MoveWindow()或SetWindowPos()可以改变控件的大小和位置。
void MoveWindow(int x,int y,int nWidth,int nHeight);void MoveWindow(LPCRECT lpRect);第一种用法需给出控件新的坐标和宽度、高度;第二种用法给出存放位置的CRect对象;例:CWnd pWnd;pWnd = GetDlgItem( IDC_EDIT1 ); //获取控件指针,IDC_EDIT1为控件ID号pWnd->MoveWindow( CRect(0,0,100,100) ); //在窗口左上角显示一个宽100、高100的编辑控件
SetWindowPos()函数使用更灵活,多用于只修改控件位置而大小不变或只修改大小而位置不变的情况:BOOL SetWindowPos(const CWnd pWndInsertAfter,int x,int y,int cx,int cy,UINT nFlags);第一个参数我不会用,一般设为NULL;x、y控件位置;cx、cy控件宽度和高度;nFlags常用取值:SWP_NOZORDER:忽略第一个参数;SWP_NOMOVE:忽略x、y,维持位置不变;SWP_NOSIZE:忽略cx、cy,维持大小不变;例:CWnd pWnd;pWnd = GetDlgItem( IDC_BUTTON1 ); //获取控件指针,IDC_BUTTON1为控件ID号pWnd->SetWindowPos( NULL,50,80,0,0,SWP_NOZORDER | SWP_NOSIZE ); //把按钮移到窗口的(50,80)处pWnd = GetDlgItem( IDC_EDIT1 );pWnd->SetWindowPos( NULL,0,0,100,80,SWP_NOZORDER | SWP_NOMOVE ); //把编辑控件的大小设为(100,80),位置不变pWnd = GetDlgItem( IDC_EDIT1 );pWnd->SetWindowPos( NULL,0,0,100,80,SWP_NOZORDER ); //编辑控件的大小和位置都改变以上方法也适用于各种窗口。
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的显示文字
为按钮添加CButton型的变量m_Btn;
CRect rc;
GetWindowRect(&rc);
int Wnd_W = rcWidth();//当然,也可以直接用rc
int Wnd_H = rcHeight();
m_BtnMoveWindow(Wnd_W/4,Wnd_H/8,100,50);//这其中的坐标可以按要求变化
多看看别人的代码,所谓观千剑而识器嘛,慢慢就会了,望采纳:-)
openfile很简单,你只需要重载CDocment类的OnOpenFile就可以了,然后再它里边就可以得到要打开的文件路径。如果你要用按钮打开,也挺好做的,你在按钮响应里,声明CFileDialog类的变量fdlg然后fdlgDoModel()就可以了,然后
if(fdlgOnOk())//意思就是打开了文件
{
fdlgGetPathName();
}就可以得到文件目录了,哈哈,给分吧。都帮你解决了。!!!~~~
c++中如果你的按钮是从资源管理器中的控件框创建的,那可以用鼠标拖动来改变大小,通过继承自CWND类的GetWindowRect()函数可以获得一个关于这个控件的大小和位置参数。
如果是在代码中创建的,创建时调用CBUTTON类的
Create( LPCTSTR lpszCaption,DWORD dwStyle,const RECT& rect,CWnd pParentWnd,UINT nID )函数,const RECT& rect这个参数可以指定大小和位置。在创建之后,也可以调用SetWindowRgn( HRGN hRgn, BOOL bRedraw )来改变大小。
文本框和按钮基本一样。以上函数的具体使用如果不明白,可查看MSDN
mfc 窗口大小变化时让窗口内部控件也一起随比例改变位置:
void CXTest2Dlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
// TODO: 在此处添加消息处理程序代码
//将窗口移动到合适位置和大小
CRect rc,rc0,rc1;
GetClientRect(&rc0);//先取得整个对话框的大小及位置
//设置Tab控件位置
rc1top=rc0top;
rc1left=rc0left+1;
rc1bottom=rc0bottom-30;
rc1right=rc0right-1;
if(GetDlgItem(IDC_TAB1)!=NULL)
{
GetDlgItem(IDC_TAB1)->MoveWindow(&rc1);
}
//设置时钟位置
rc1top=rc0bottom-20;
rc1left=rc0left+5;
rc1bottom=rc0bottom;
rc1right=rc0left+160;
if(GetDlgItem(IDC_CLOCKTEST)!=NULL)
{
GetDlgItem(IDC_CLOCKTEST)->MoveWindow(&rc1);
}
//设置关闭按钮位置
rc1top=rc1top-5;
rc1left=rc0right-200;
rc1bottom=rc1bottom;
rc1right=rc0right-120;
if(GetDlgItem(IDOK)!=NULL)
{
GetDlgItem(IDOK)->MoveWindow(&rc1);
}
//设置取消按钮位置
rc1left=rc0right-100;
rc1right=rc0right-20;
if(GetDlgItem(IDCANCEL)!=NULL)
{
GetDlgItem(IDCANCEL)->MoveWindow(&rc1);
}
//将三个对话框资源定位到Tab控件中
if(GetDlgItem(IDC_TAB1)!=NULL)
{
GetDlgItem(IDC_TAB1)->GetClientRect(&rc);
rc1top=rctop+20;
rc1left=rcleft+1;
rc1bottom=rcbottom-10;
rc1right=rcright-1;
tab1GetClientRect(&rc1);
tab1GetDlgItem(IDC_MSGINFO)->MoveWindow(&rc1);//移动第一个
rc1bottom=rcbottom-35;//第二个及第三个底部留出按钮位置
tab2GetDlgItem(IDC_BNSLIST)->MoveWindow(&rc1);
tab3GetDlgItem(IDC_MSGERRINFO)->MoveWindow(&rc1);
它是1978年由 Niklaus Wirth 在 ETH 创立的通用过程式语言。它与 Pascal 类似,具有系统编程和多重编程功能。
以上就是关于VS C++ MFC 控件怎么修改大小属性里 没有size一项。。难道只能用鼠标去拉着看左下角的坐标和大小吗全部的内容,包括:VS C++ MFC 控件怎么修改大小属性里 没有size一项。。难道只能用鼠标去拉着看左下角的坐标和大小吗、mfc如何将编辑框的内容读取到列表控件中、MFC中逃跑按钮用SetWindowPos()实现的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)