每个月的流量大多贡献给查资料了,学习果然是件烧钱的事情啊(正经脸)
清空手机谷歌浏览器缓存的二十几个网页,也做一个简单的知识回顾。
使用CImage加载PNG的一般方法
- 打开stdafx.h添加
#include<atlimage.h>
;
- 定义一个CImage类对象,调用CImage::Load方法装载一个外部图像文件;
- 调用CImage::Draw方法绘制图像。
eg.(待测试)
1
2
3
4
5
6
7
8
9
10
|
CRect rc;
m_picCtrl.GetClientRect(&rc);
SetWindowPos(this, 0, 0, 320, 80, SWP_SHOWWINDOW);
CString strTemp;
strTemp.Format(_T("%d%d"), rc.right, rc.bottom);
CImage image;
image.Load(_T("D:\\1.png"));
CDC* pDc = m_picCtrl.GetWindowDC();//获取设备句柄
image.Draw(pDc->m_hDC, rc);
UpdateWindow();
|
MFC tab控件
- 创建一个对话框,放tab控件,将控件添加变量m_tabCtrl
- 再创建两个对话框,修改属性Border:none,Style:Child
- 在tabDlg中添加两个对话框类变量
1
2
|
CDialog1 m_dlg1;
CDialog2 m_dlg2;
|
- 在tabDlg的OnInitDialog()函数中添加:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
CRect rect;
m_tabCtrl.GetClientRect(&rect);
rect.top+=20;
rect.bottom-=1;
rect.left+1=1;
rect.right-=2;
m_tabCtrl.InsertItem(0,"第一页");
m_tabCtrl.InsertItem(1,"第二页");
m_dlg1.Create(IDD_DIALOG1,&m_tabCtrl);//或者Create(IDD_DIALOG1,GetDlgItem(IDC_TAB));
m_dlg2.Create(IDD_DIALOG2,&m_tabCtrl);
m_dlg1.ShowWindow(&rect);
m_dlg2.ShowWindow(&rect);
m_dlg1.ShowWindow(true);
m_dlg2.ShowWindow(false);
|
- 在tabDlg中添加TCN_SELECHANGE消息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
void CtabDlg::OnTcnSelchangeTab1(NMHDR *PNMHDR, LRSULT *pResult)
{
switch(m_tabCtrl.GetCurSel())
{
case 0:
m_dlg1.ShowWindow(true);
m_dlg2.SWP_SHOWWINDOW(false);
break;
case1:
m_dlg1.ShowWindow(false);
m_dlg2.ShowWindow(true);
break;
}
*pResult = 0;
}
|
安全函数
strtok_s
wcstok_s
在MFC对话框中显示html网页
创建对话框时勾选html对话框,添加控件变量m_html;
然后在OnInitDialog()中添加
1
|
m_html.Navigate("www.baidu.com");
|
CXImage的使用
另成一篇。
限制只启动一个exe
1
2
3
4
5
|
if(FindWindow(NULL,"caption")!= 0)
{
MessageBox("程序已运行!");
return;
}
|
PCE.js
https://jamesfriend.com.au/pce-js/mobile/
MFC复选框
法一:
1
2
|
CButton* pBtn=(CButton*)GetDlgItem(IDC_CHECK1);
int state = pBtn->GetCheck();
|
state==0 复选框没有被选中
state==1 复选框被选中
state==2 不确定(只有button有BS_3STATE或BS_AUTO3STATE style时才可用)
设置状态:
1
2
|
CButton* pBtn=(CButton*)GetDlgItem(IDC_CHECK1);
int state = pBtn->GetCheck(1);
|
法二:
1
2
3
4
|
if(BST_CHECKED == IsDlgButtonChecked(IDC_CHECK1))
{
//对应操作
}
|
使用BS_AUTOCHECKBOX、BS_AUTORADIOBUTTON、BS_AUTO3STATE、BS_CHECKBOX、BS_RADIOBUTTON或BS_3STATE样式创建的按钮的返回值可以是如下值之一:
BST_CHECKED 按钮被选中
BST_UNCHECKED 按钮未被选中
BST_INDETERMINATE 不确定,按钮灰显(只有button有BS_3STATE或BS_AUTO3STATE style时才可用)
法三:
为控件添加BOOL变量m_delete;
1
2
3
4
5
|
void CTestDlg::DoDataExchange(CDataExchange *pDX)
{
CTestDlg::DoDataExchange(pDX);
DDX_Check(pDX,IDC_CHECK1,m_delete);
}
|
关于“不允许指针指向不完整的类类型”问题分析
神贴必看,自从看过后,再也没犯过这个错,我不会说脑海里都是作者满满的嘲讽笑声的
http://m.blog.csdn.net/luna84/article/details/50380186
树节点遍历
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
Traverse(m_tree, hChild)
{
HTREEITEM hChild = m_tree.GetChildren(hItem);
while(hChild)
{
bool temp=Traverse(m_tree,hChild);
if(temp==true)
{
return true;
}
hChild=m_tree.GetNextSiblingItem(hChild);
}
return false;
}
|
遍历Vector的几种方法
C++11
法一:
1
2
3
4
|
for(size_t i=0;i<vec.size();++i)
{
int iTemp = vec[i];
}
|
法二:
1
2
3
4
|
for(auto it = vec.begin();it!=vec.end();++it)
{
int iTemp = *it;
}
|
法三:
1
2
3
4
|
for(int i:vec)
{
int iTemp = i;
}
|
法四:
1
2
3
|
for_each(vec.begin(),vec.end(),[](int i){
int iTemp = i;
});
|
表达式的副作用
http://www.cnblogs.com/shiguangshuo/p/5236962.html
理解递归
另成一篇。
屏蔽回车和ESE
1
2
3
4
5
6
7
8
9
10
11
12
|
BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message==WM_KEYDOWN)
{
if(pMsg->wParam==VK_RETURN||pMsg->wParam==VK_ESCAPE)
{
return true;
}
}
return CDialogEx::PreTranslateMessage(pMsg);
}
|
MFC查找特定后缀文件
法一:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
CFileFind findfile;
CString strPath;
CString strName;
CString strFilePath;
BOOL bRet=findfile.FindFile(strPath+_T("*.txt"));//以.txt为例
if(!bRet)
{
MessageBox(_T("无此文件!"));
}
while(bRet)
{
bRet=findfile.FindNextFile();
strName=findfile.GetFileTitle();
strFilePath=findfile.GetFilePath();
if(//操作)
{
//所需操作;
}
}
|
法二:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
vector<CString> fileList;
WIN32_FIND_DATA wfd;
CString sPath=_T("*.txt");
HANDLE hFile=FindFirstFile(sPath.GetBuffer(),&wfd);
if(INVALID_HANDLE_VALUE==hFile)
{
TRACE(_T("不合法!\n"));
return;
}do
{
fileList.push_back(wfd.cFileName);
TRACE("%s\n",wfd.cFileName);
}while(FindNextFile(hFile,&wfd));
|
使用WIN32_FIND_DATA好像存在内存释放的问题。
为CDHtmlDialog添加滚动条
初始化中添加以下代码即可。
1
|
SetHostFlags(DOCHOSTUIFLAG_NO3DBORDER|DOCHOSTUIFLAG_DIALOG);
|
Notepad++ 没有自动补全敲代码好累…