【总结】在使用一些常用控件中常遇到的问题

Kudeet 2004-12-06 08:54:54
如果大家有什么好的问题解决方法,也拿出来共享咯!:P
...全文
586 31 打赏 收藏 举报
写回复
31 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
gohappy_1999 2005-09-07
mark
  • 打赏
  • 举报
回复
bluestone 2004-12-27
谢谢高手开贴学习!
  • 打赏
  • 举报
回复
king_lanzhou 2004-12-26
学习
  • 打赏
  • 举报
回复
syl5005 2004-12-24
如何在CDialog里面加一个拆分视图?呀
  • 打赏
  • 举报
回复
lg2001 2004-12-23
mark,收藏
  • 打赏
  • 举报
回复
tgwang 2004-12-23
mark
  • 打赏
  • 举报
回复
SatanLi1982 2004-12-22
收藏!谢谢楼主
  • 打赏
  • 举报
回复
likunfeng 2004-12-22
鼠标自动移动到控件中心(likfeng原创)
//CSDN ID:likfeng 原创
1.
对话框上加一个Button,定义关联的CButton变量m_btn1

2.
void CDlgTest::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CPoint pointMouse;//鼠标
CRect rectButton;//按钮
pointMouse = point;

m_btn1.GetWindowRect(rectButton);
ScreenToClient(rectButton);

int dI = 30;//鼠标接近按钮的距离,看需要加以调整,需dI>0


if((pointMouse.x > (rectButton.left - dI))&&
(pointMouse.x < rectButton.right + dI)&&
(pointMouse.y > rectButton.top - dI)&&
(pointMouse.y < rectButton.bottom + dI))
{
ClientToScreen(rectButton);
SetCursorPos(rectButton.left + rectButton.Width()/2,
rectButton.top + rectButton.Height()/2);//设置鼠标在屏幕上的坐标(屏幕坐标)
}

CDialog::OnMouseMove(nFlags, point);
}
3.好了试试吧
  • 打赏
  • 举报
回复
likunfeng 2004-12-22
怎样调整 Dialog 窗口上控件的 TabStop 的顺序?

1)选择资源管理(ResourceView),选Dialog的ID,双击,选菜单中的LayOut->Tab Order,按住Alt,顺序点下来就行了
2)选择资源管理(ResourceView),选Dialog的ID,双击,按住Ctrl+D顺序点下来就行了

///

//控件适应窗体变化

CWinsizeDlg::CWinsizeDlg(CWnd* pParent /*=NULL*/)
: CDialog(CWinsizeDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CWinsizeDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
m_bResizeable=FALSE;//added
}

BOOL CWinsizeDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon

// TODO: Add extra initialization here

ReSetCtrlSize();//added
m_bResizeable=TRUE;//added
return TRUE; // return TRUE unless you set the focus to a control
}

void CWinsizeDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
if(m_bResizeable==TRUE)//added
ReSetCtrlSize();//added
}

void CWinsizeDlg::ReSetCtrlSize()
{
//all is added
//用户自定义函数,用来使窗体变化时EDIT控件也跟着适应变化

CEdit* pEdit=(CEdit*)GetDlgItem(IDC_EDIT_DEMO);

CRect rcEdit;
CRect rcDlg;

GetClientRect(rcDlg); //取得对话框的客户区坐标
pEdit->GetWindowRect(rcEdit); //取得编辑框的屏幕坐标
ScreenToClient(rcEdit); //将编辑框的屏幕坐标转化为相对于对话框客户区的相对坐标

rcEdit.right=rcDlg.right-5; //设置编辑框的新坐标
rcEdit.bottom=rcDlg.bottom-5;

pEdit->MoveWindow(rcEdit); //调整编辑框位置

}

///

CComboBox下拉高度太小问题
手工解决方法:
Combo Box Styles属性改为Simple,改变其高度,再该回所需Styles属性

以下是用代码初始化Combo Box的数据
CComboBox * pPort=(CComboBox *) GetDlgItem(IDC_COMBO1);
pPort->AddString("COM1");
pPort->AddString("COM2");
pPort->SetWindowText("TTT");

///

对话框上有一个静态文本IDC_STATIC,要求鼠标点击这个文本,然后弹出ie到一个网站!请问怎么做?

如果再进一步,鼠标移到静态文本的时候,变成手状,静态文本变成蓝色加下划线,就想浏览网站一样!!又怎么做呢?

在你对话框的同样函数里
BOOL C****Dlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
// TODO: Add your message handler code here and/or call default
switch(pWnd->GetDlgCtrlID())
{
case IDC_STATIC1: //静态控件的ID
SetCursor(AfxGetApp()->LoadCursor(IDC_CURSOR1));
//IDC_CURSOR1就是你的手鼠标
return TRUE;
}
return CDialog::OnSetCursor(pWnd, nHitTest, message);
}

点击后要访问网站可以用
ShellExecute(NULL,"open","http://www.google.com","","", SW_SHOW);

///

CFileDialog读写文件

{//写文件
TCHAR szFilters[]=_T("设置文件(*.set)|*.set|所有文件|*.*||");
CFileDialog dlg(FALSE, _T("set"), _T("*.set"),
OFN_FILEMUSTEXIST|OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFilters);
if(dlg.DoModal()==IDOK)
{
CString strTest;
strTest.Format("%s","Hello!");

CString strFileName=dlg.GetPathName();
try
{
CStdioFile file(strFileName,CFile::modeWrite|CFile::modeCreate);
MessageBox(strTest);
file.SeekToEnd();
file.WriteString(strTest);
}
catch(CFileException* e)
{
e->ReportError();
e->Delete();
}

}
}
{//读文件
CString strTest;
TCHAR szFilters[]=_T("设置文件(*.set)|*.set|所有文件|*.*||");
CFileDialog dlg(TRUE, _T("set"), _T("*.set"),
OFN_FILEMUSTEXIST|OFN_HIDEREADONLY,szFilters);
if(dlg.DoModal()==IDOK)
{
CString strFileName=dlg.GetPathName();//取得文件名
try
{
CStdioFile file(strFileName,CFile::modeRead);//创建
file.ReadString(strTest);//读
MessageBox(strTest);//显示
}
catch(CFileException* e)
{
e->ReportError();
e->Delete();
}
}
}

///

//在一个子窗口或曰控件上绘图
void CMy0x10Dlg::OnButton1()
{

CWnd* pWnd = this->GetDlgItem(IDC_STATIC_X);//静态控件
CRect rect;
pWnd->GetClientRect(rect);
CDC *dc=pWnd->GetDC();
//dc->MoveTo(10,10);
//dc->LineTo(100,100);
//dc->Rectangle(1,1,10,10);
Arc(dc->m_hDC,1,1,100,100,200,200,5,5);
}
  • 打赏
  • 举报
回复
likunfeng 2004-12-22
收藏
  • 打赏
  • 举报
回复
liuyan4794 2004-12-22
不错,谢谢
  • 打赏
  • 举报
回复
whwjn 2004-12-22
你的blog地址是多少阿?先谢了
  • 打赏
  • 举报
回复
Kudeet 2004-12-21
to whwjn(菜鸟学飞)
对,现在老是停电,等下弄个例子放到blog里
  • 打赏
  • 举报
回复
chqu18 2004-12-21
mark
  • 打赏
  • 举报
回复
5iDream 2004-12-19
gz
  • 打赏
  • 举报
回复
whwjn 2004-12-19
QuerySiblings没用过,看得不太明白,是干嘛用的?
是不是从一个属性页A调用QuerySiblings,在属性页B响应PSM_QUERYSIBLINGS消息,
然后属性页B通过给lParam赋值把一些信息通过lParam参数传给属性页A,然后属性页A里面的
mystring就等于"Test String"了。
请问是这样吗?谢谢
  • 打赏
  • 举报
回复
whwjn 2004-12-19
不错,谢谢
  • 打赏
  • 举报
回复
Kudeet 2004-12-15
现在的资料比较少,做成CHM版的不太合适,如果大家有什么好的贡献出来,我就会整理为CHM格式的
  • 打赏
  • 举报
回复
tgwang 2004-12-14
mark
  • 打赏
  • 举报
回复
hurricane511 2004-12-14
不错,楼主好雷锋!
  • 打赏
  • 举报
回复
加载更多回复(11)
发帖
VC/MFC

1.6w+

社区成员

VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
帖子事件
创建了帖子
2004-12-06 08:54
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……