VS C++ MFC 控件怎么修改大小属性里 没有size一项。。难道只能用鼠标去拉着看左下角的坐标和大小吗

VS C++ MFC 控件怎么修改大小属性里 没有size一项。。难道只能用鼠标去拉着看左下角的坐标和大小吗,第1张

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()实现的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9785565.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存