@picture control控件加载图片
{
HBITMAP hBitMap = (HBITMAP)::LoadImage(NULL, L"D:\\data\\phone417.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
m_child_pic.SetBitmap(hBitMap);
}
@创建一张位图
{
if (!m_bmp.GetSafeHandle())
{
m_bmp.LoadBitmap(IDB_BITMAP1);
nCount = m_bmp.GetBitmapBits(0, NULL);
char *p = new char[nCount];
m_bmp.GetBitmapBits(0, p);
delete []p;
}
CDC mdc;
mdc.CreateCompatibleDC(&dc);
mdc.SelectObject(&m_bmp);
BITMAP bm;
m_bmp.GetBitmap(&bm);
dc.SetStretchBltMode(STRETCH_HALFTONE);
//dc.BitBlt(0, 0, bm.bmWidth, bm.bmHeight, &mdc, 0, 0, SRCCOPY);
dc.StretchBlt(bm.bmWidth, 0, -bm.bmWidth, bm.bmHeight, &mdc, 0, 0, bm.bmWidth, bm.bmHeight, SRCCOPY);
}
@控件随窗口变化
{
void CYRDlg::ReSize(void)
{
float fsp[2];
POINT Newp; //获取现在对话框的大小
CRect recta;
GetClientRect(&recta); //取客户区大小
Newp.x = recta.right - recta.left;
Newp.y = recta.bottom - recta.top;
fsp[0] = (float)Newp.x / m_old.x;
fsp[1] = (float)Newp.y / m_old.y;
CRect Rect;
int woc;
CPoint OldTLPoint, TLPoint; //左上角
CPoint OldBRPoint, BRPoint; //右下角
HWND hwndChild = ::GetWindow(m_hWnd, GW_CHILD); //列出所有控件
while (hwndChild) {
woc = ::GetDlgCtrlID(hwndChild);//取得ID
GetDlgItem(woc)->GetWindowRect(Rect);
ScreenToClient(Rect);
OldTLPoint = Rect.TopLeft();
TLPoint.x = long(OldTLPoint.x*fsp[0]);
TLPoint.y = long(OldTLPoint.y*fsp[1]);
OldBRPoint = Rect.BottomRight();
BRPoint.x = long(OldBRPoint.x *fsp[0]);
BRPoint.y = long(OldBRPoint.y *fsp[1]);
Rect.SetRect(TLPoint, BRPoint);
GetDlgItem(woc)->MoveWindow(Rect, TRUE);
hwndChild = ::GetWindow(hwndChild, GW_HWNDNEXT);
}
m_old = Newp;
}
void CYRDlg::ChangeSize(UINT nID, int x, int y)
{
CWnd *pWnd = GetDlgItem(nID);
if (pWnd != NULL)
{
CRect rec;
pWnd->GetWindowRect(&rec);//获取控件变化前的大小
ScreenToClient(rec); //将控件大小装换位在对话框中的区域坐标
// x / m_rect.Width(); 伸缩rate
rec.left = rec.left * x / m_rect.Width();
rec.top = rec.top * y / m_rect.Height();
rec.bottom = rec.bottom * y / m_rect.Height();
rec.right = rec.right * x / m_rect.Width();
pWnd->MoveWindow(rec);//伸缩控件
}
}
void CYRDlg::OnSize(UINT nType, int cx, int cy)
{
CDialogEx::OnSize(nType, cx, cy);
// TODO: 在此处添加消息处理程序代码
if (nType != SIZE_MINIMIZED) //判断窗口是不是最小化了,因为窗口最小化之后 ,窗口的长和宽会变成0,当前一次变化的时就会出现除以0的错误操作
{
ReSize();
}
}
}
@创建矩形并填充颜色
{
//分割线
CDC *pDC = GetDlgItem(IDC_STATIC_LINE)->GetDC();
CRect rct;
GetDlgItem(IDC_STATIC_LINE)->GetWindowRect(&rct);
CBrush brs;
brs.CreateSolidBrush(RGB(211, 211, 211));
CRect picrct;
picrct.top = 0;
picrct.left = 0;
picrct.bottom = rct.Height();
picrct.right = rct.Width();
pDC->FillRect(&picrct, &brs);
GetDlgItem(IDC_STATIC_LINE)->ReleaseDC(pDC);
}
@设置Edit编辑框内容
{
int intergrateTime = 1;
CString timeInt;
timeInt.Format(L"%d", intergrateTime);
SetDlgItemText(IDC_EDIT_SCORE, timeInt);
@获取Edit编辑框内容
{
CString numStr;
GetDlgItemText(IDC_EDIT, numStr);
}
@CString 转换为 char *
{
USES_CONVERSION;
CString str;
T2A(str);
}
@CString 装欢为 int
{
CString numStr;
GetDlgItemText(IDC_EDIT_DBD, numStr);
g_dbd = _ttoi(numStr);
}
&CString 转换为 double
{
_tstof(str);
}
@char * 转换为 CString
{
USES_CONVERSION;
char * str;
A2T(str);
}
@string 转换 CString unicode
{
string strr = m_detector->GetErrorInfo(errid);
CString str(strr.c_str());
}
@检查目录是否存在,不存在则创建
{
CString phonedir;
phonedir.Format(L"D:\\data");
if (FALSE == PathFileExists(phonedir))
{
CreateDirectory(phonedir, NULL);
}
}
@MessageBox
{
MessageBox(L"请设置积分时间", L"警告");
}
@图片跟随控件大小显示
{
CImage imagePic;
if (imagePic.Load("路径") == S_OK)
{
CRect rect;
m_myView->m_child_pic.GetClientRect(&rect);
CDC *pDC = m_myView->m_child_pic.GetDC();
SetStretchBltMode(pDC->m_hDC, STRETCH_HALFTONE);
SetBrushOrgEx(pDC->m_hDC, 0, 0, NULL);
imagePic.StretchBlt(pDC->m_hDC, rect, SRCCOPY);
m_myView->m_child_pic.ReleaseDC(pDC);
}
}
@控件平移
{
CClientDC dc(this->m_myView);
CRect rect, rect2, rt;
m_myView->GetClientRect(rt);
m_myView->m_child_pic.GetWindowRect(rect);
m_myView->ScreenToClient(rect);
rect.OffsetRect(-1, 0);
m_myView->m_child_pic.MoveWindow(rect);
if (rect.right <= 0)
{
rect.OffsetRect(rect.Width() + rt.Width(), 0);
}
m_myView->m_child_pic.MoveWindow(rect);
}
@屏蔽Esc和Enter
{
//重写函数
BOOL CYRDlg::PreTranslateMessage(MSG* pMsg)
{
/*if (pMsg->message == WM_NCLBUTTONDBLCLK)
{
return TRUE;
}*/
if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_ESCAPE)
{
// 屏蔽Esc键
return TRUE;
}
if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN)
{
// 屏蔽Entert键;
return TRUE;
}
return CDialogEx::PreTranslateMessage(pMsg);
}
}
@获取当前时间
{
CString CYRDlg::onGetTime()
{
CTime m_time;
m_time = CTime::GetCurrentTime();
CString time = m_time.Format(_T("%X"));
return time + " | ";
}
}
@Edit自动换行
{
void CYRDlg::SetInfoText()
{
SetDlgItemText(IDC_EDIT_ERR_INFO, m_infoStr);
m_edit.LineScroll(m_edit.GetLineCount());
}
}
@检查复选框是否选中
{
void CYRDlg::OnBnClickedCheckLr()
{
// TODO: 在此添加控件通知处理程序代码
if (BST_CHECKED == IsDlgButtonChecked(IDC_CHECK_LR))
b_pic_dir = true;
else
b_pic_dir = false;
}
}
@读取ini文件数据
{
void CYRDlg::OnBnClickedButtonCheck()
{
// TODO: 在此添加控件通知处理程序代码
USES_CONVERSION;
CString PROGRAM_PATH = L"D:\\data.ini";
if (_access(T2A(PROGRAM_PATH), 0) == -1)
{
MessageBox(L"D:\\data.ini 文件不存在", L"警告");
return;
}
//if (m_bright_bdark_count == 2)
{
CString str;
int datasize = 64 * m_detector_num;
for (int i = 0; i < datasize; i++)
{
str = "";
str.Format(L"%d", i);
g_buf_ming[i] = GetPrivateProfileInt(L"ming", str, 999, PROGRAM_PATH);
}
for (int i = 0; i < datasize; i++)
{
str = "";
str.Format(L"%d", i);
g_buf_an[i] = GetPrivateProfileInt(L"an", str, 999, PROGRAM_PATH);
}
b_bcheck = true;
WriteInfoStr(L"校验完成");
GetDlgItem(IDC_BUTTON_CHECK)->EnableWindow(SW_HIDE);
}
}
}
@写入ini文件数据
{
CString PROGRAM_PATH = L"D:\\data.ini";
//防止第二次删除
if (m_bright_bdark_count == 1)
{
DeleteFile(PROGRAM_PATH);
}
CString str;
CString str_buf;
for (int i = 0; i < datasize; i++)
{
str = "";
str.Format(L"%d", i);
str_buf = "";
str_buf.Format(L"%d", g_buf_two[g_buf_second - 1][i]);
if (b_bright)
::WritePrivateProfileString(_T("ming"), str, str_buf, PROGRAM_PATH);
else
::WritePrivateProfileString(_T("an"), str, str_buf, PROGRAM_PATH);
}
}
@只允许输入数字
{
BOOL CWeiXinQ::PreTranslateMessage(MSG* pMsg)
{
// TODO: 在此添加专用代码和/或调用基类
//指定对话框只接受数字按键输入,其他符号输入无效
//获取控件窗口指针
CEdit* pEdit1 = (CEdit*)GetDlgItem(IDC_EDIT1_Q_MONEY);
CEdit* pEdit2 = (CEdit*)GetDlgItem(IDC_EDIT2_Q_CODE);
if( (GetFocus() == pEdit1 ||GetFocus() == pEdit2) && (pMsg->message == WM_CHAR) )
{
//只允许输入数字和小数点“.”
if((pMsg->wParam <= '9' && pMsg->wParam >= '0') || pMsg->wParam == '.')
{
//金额输入框只允许输入一个小数点
if(pMsg->wParam == '.')
{
CString str;
int nPos = 0;
GetDlgItemText(IDC_EDIT1_Q_MONEY, str); // 获取edit中文本
nPos = str.Find('.'); // 查找.的位置
if(nPos >= 0)
{
return 1;
}
}
return 0;
}
else if(pMsg->wParam == 0x08 || pMsg->wParam == 0x10) //接受Backspace和delete键
{
return 0;
}
else
{
//响应标签页切换的快捷键
switch(pMsg->wParam)
{
case 'q':
case 'Q':
case 'w':
case 'W':
case 'e':
case 'E':
case 'r':
case 'R':
case 't':
case 'T':
case 'y':
case 'Y':
case 'u':
case 'U':
case 'i':
case 'I':
case 'o':
case 'O':
CWnd *pParent = GetParent();
pParent->SetFocus();
}
return 1;
}
}
return CDialogEx::PreTranslateMessage(pMsg);
}
}
@数据写入文档 较卡
{
CStdioFile File;
File.Open(_T("E:\\Project\\YR\\YR\\res\\filename.txt"), CFile::modeWrite | CFile::modeCreate);
File.WriteString(textStr);
File.Close();
}
@自定义单个消息
{
.h文件 #define WN_MYMSG WM_USER+1
.c文件
BEGIN_MESSAGE_MAP()
ON_MESSAGE(WN_MYMSG, OnFunMyMsg)
END_MESSAGE_MAP()
调用
SendMessage(WN_MYMASE,0,0);
PostMessage(WN_MYMASE,0,0);
}
@多个程序调用一个消息
{
.h文件 static UINT WM_MYMSG_TEST = RegisterWindowMessage(L"myMessage");
.c文件
BEGIN_MESSAGE_MAP()
ON_REGISTERED_MESSAGE(WM_MYMSG_TEST, OnMyMsgHandler)
END_MESSAGE_MAP()
调用
::SendMessage(HWND_BROADCAST, WM_MYMSG_TEST, 0, 0);
}
@创建工具栏
{
//m_ImageList.Create(64, 64, ILC_COLOR24 | ILC_MASK, 1, 1);
//CBitmap bmp;
//for (int n = 0; n<5; n++)
//{
// bmp.LoadBitmap(IDB_BITMAP1 + n);
// m_ImageList.Add(&bmp, RGB(255, 255, 255));
// bmp.DeleteObject();
//}
定义工具栏命令ID数组
//UINT nArray[5];
//for (int i = 0; i<5; i++)
//{
// nArray[i] = ID_ADDINFO + i;
//}
//m_wndToolBar.CreateEx(this);
//m_wndToolBar.SetButtons(nArray, 5);
设置工具栏按钮和按钮图像大小
//m_wndToolBar.SetSizes(CSize(120, 120), CSize(64, 64));
设置工具栏文本
//m_wndToolBar.SetButtonText(0, L"信息添加");
//m_wndToolBar.SetButtonText(1, L"信息修改");
//m_wndToolBar.SetButtonText(2, L"信息删除");
//m_wndToolBar.SetButtonText(3, L"信息查询");
//m_wndToolBar.SetButtonText(4, L"信息保存");
设置工具栏按钮显示图标
//m_wndToolBar.GetToolBarCtrl().SetImageList(&m_ImageList);
显示工具栏
//RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);
}
@动态创建Static text
{
//m_pStatic = NULL;
//if (m_pStatic && m_pStatic->IsWindowVisible())
//{
// return 0;
//}
//else
//{
// CRect rt;
// m_pView->GetWindowRect(rt);
// m_pStatic = new CStatic;
// m_pStatic->Create(_T("时间显示..."), WS_CHILD | WS_VISIBLE | DT_RIGHT, CRect(770, 20, 770+180, 40), this, IDC_STATIC_TIME);
// CFont font;
// font.CreatePointFont(120, L"宋体");//一个为字体大小,另一个为字体类型
// m_pStatic->SetFont(&font);//设置字体
//}
}
@但文档创建/选择View
{
mainfrm.h
CSplitterWnd m_Splitter;
int OnCreate(....)
{
m_myPicView = (CMyPicDlg*)m_Splitter.GetPane(0,0);
m_pView = (CDkView*)m_Splitter.GetPane(0,1);
}
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: 在此添加专用代码和/或调用基类
m_Splitter.CreateStatic(this, 1, 2);
m_Splitter.CreateView(0, 0, RUNTIME_CLASS(CMyPicDlg), CSize(700, 700), pContext);
m_Splitter.CreateView(0, 1, RUNTIME_CLASS(CDkView), CSize(250, 0), pContext);
return true;
}
}
@禁止拉伸对话框
{
LRESULT CMainFrame::OnNcHitTest(CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
int ret = CFrameWnd::OnNcHitTest(point);
if (HTTOP == ret || HTBOTTOM == ret || HTLEFT == ret || HTRIGHT == ret || HTBOTTOMLEFT == ret || HTBOTTOMRIGHT == ret || HTTOPLEFT == ret || HTTOPRIGHT == ret || HTCAPTION == ret)
return HTCLIENT;
return CFrameWnd::OnNcHitTest(point);
}
}
@ListCtrl报错 (void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct))
{
资源文件设置 Owner Draw Fixed 为 false
}