1、问题:获取CString长度时使用GetLength获取的都为0
解决办法:在取长度之前用GetBuffer()了
如果用了,就在用后ReleaseBuffer()一下
2、从一个类调用另一个类的函数(函数中有控件操作)
一般的从一个类调用另一个类的函数、变量一般就是:A、B两个类,
在B类中添加就可以
CMyA a;
a.变量或者函数;
但如果调用A中的函数有控件操作就会程序错误,可以使用指针的方式:
CMyA *dlg = (CMyA*)GetParent();//
dlg.函数();
3、在对话框Border设置为None后,怎么拖动对话框
在左键按下消息函数添加:PostMessage(WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(point.x, point.y));
同时可以判断point可以设置在哪些区域才能拖动
4、在任务栏点击最小化程序和还原程序的响应函数
WM_SYSCOMMAND
SC_CLOSE,"61536", , 关闭
SC_RESTORE,"61728", , 还原
SC_SIZE,"61440", , 大小
SC_MAXIMIZE,"61488", , 最大化
SC_MINIMIZE,"61472", , 最小化
其中
if(nID == MAXIMIZE)//当点击任务栏上图标最小化程序的判断
5、 MFC中使对话框变成圆角矩形的代码(有锯齿)
BOOLCLoginDlg::OnInitDialog()
{
CDialog::OnInitDialog();
SetWindowLong(m_hWnd,GWL_HWNDPARENT,NULL);
CRgnm_rgn;
RECT rc;
GetWindowRect(&rc); //有边框对话框
//GetClientRect(&rc);//无边框对话框
m_rgn.CreateRoundRectRgn(rc.left,rc.top,rc.right,rc.bottom,100,100); //矩形圆角
//m_rgn.CreateEllipticRgn(rc.left,rc.top,rc.right,rc.bottom);//椭圆
SetWindowRgn(m_rgn,TRUE);
return TRUE; // return TRUE unless you set the focus to a control
}
6、判断CString中有某个字符的个数
CString add = TEXT("zxcvcxvzx");
//查找替换:Replace函数返回值:返回被替换的字符数。如果这个字符串没有改变则返回零。
int sum = add.Replace(TEXT("z"),TEXT("z"));//sum = 2