项目设计总结

时间:2024.4.1

设计总结

二〇##年十一月


目录

1工程概况. 1

2设计过程. 2

3主要设计依据. 2

4设计内容. 3

5设计变更情况. 4

6设计单位对工程质量的评价意见. 4

7设计体会. 4


1 工程概况

江南大道是贯穿滨江区的东西向主轴线,是滨江区沟通钱塘江大桥、复兴大桥和西兴大桥的交通干道,是杭州萧山国际机场通往杭州主城区的主要通道,是杭州市重要的城市门户形象道路。江南大道作为杭州市城市交通走廊,是杭州市城市道路网的重要组成部分。江南大道西接钱塘江大桥,东接西兴大桥,全长约9.3km,现状全路段限速80km/h。

江南大道(西环路-西兴路段)由西向东分别与西环路、东信大道、伟业路、火炬大道、环兴路、信诚路、南北支路、建业路、江三加油站、时代大道地面道路、长河路、江虹路、江汉路、江晖路、泰安路、通和路、江陵路、阡陌路、西兴路平面相交,含规划交叉口共计19个交叉口。江南大道(西环路-西兴路段)19个路口全部已设置信号控制系统,其中4个路口信号灯暂未启用(中间现状采用护栏隔离),9个路口现状设置电子警察,16个路口现状设置交通监视。


2 设计过程

20##年8月,我院接受委托进行江南大道交通设施提升改造工程的设计工作,在现场调查并深入对接设计需求后,于20##年10月完成江南大道交通设施提升改造项目建议书,并于20##年11月完成江南大道交通设施提升改造工程工程可行性研究报告,根据批复意见和技术需求,于20##年11月完成本项目施工图。


3 设计内容

本设计主要内容包括交通信号控制系统、交通违法监测系统、交通视频监视系统、高点球机系统等,具体主要包括:

1)  交通信号控制系统改造17套;

2)  交通违法监测系统新增15套;

3)  交叉口视频监视系统新增18套。

4)  高点监视系统新增4套,保留原先1套;

5)  设置10套雷达测速箱体,另配备1套移动测速设备;

6)  行车诱导系统新增4套;

7)  三百米严管区系统新增4套;

8)  拥堵检测系统新增8套;

9)  对交警大队指挥中心进行升级改造。

4 设计变更情况

配合工程建设实际,对300米严管区、电子警察杆件等进行了变更调整,详见相关联系单。


5 设计单位对工程质量的评价意见

本工程建设期短、标准高、施工难度大,业主、监理和承包商均能够较好的按施工图设计文件要求进行施工,使工程质量较好的达到了设计要求。

6 设计体会

本工程设计时间较紧、任务重,自始至终得到了相关领导和建设各方的支持,使得整个工程得以顺利完成,在此表示衷心的感谢。

浙江省交通规划设计研究院

20##年11月


第二篇:MFC设计项目技术小总结


自己在MFC环境下设计项目的一些技术小点技术文章 2006-01-16 08:41:57 阅读150 评论0 字号:大中小 订阅 .//获取应用程序的主框架类指针CMainFrame *pFrame=(CMainFrame*)AfxGetApp()->m_pMainWnd;//获取状态条指针CStatusBar* pStatus=&pFrame->m_wndStatusBar;CString str1;str1.Format("高度:%d",cxDIB);pStatus->SetPaneText(pStatus->CommandToIndex(ID_INDICATOR_ROW),str1);CString str;CRect rect(10,10,200,300);CDC *pDC=new CClientDC(this);str.Format(....);pDC->DrawText(str,&rect,DT_LEFT|DT_TOP);或者CString str;CRect rect(10,10,200,300);CClientDC dc(this);OnPrepareDC(&dc); //设定映射方式和DC原点 如果Document的SIZE没有改变,则无须此行代码dc.DrawText(......);如何得到视图指针方法一://获得文档模板:POSITION curTemplatePos = theApp.GetFirstDocTemplatePosition();CDocTemplate *m_doc=theApp.GetNextDocTemplate(curTemplatePos); //获得文档:curTemplatePos=m_doc->GetFirstDocPosition();CYourDoc *m_pdoc=(CA8Doc*)m_doc->GetNextDoc(curTemplatePos);//获得视图:curTemplatePos=m_pdoc->GetFirstViewPosition();CYourView *m_pview=(CYourView*)m_pdoc->GetNextView(curTemplatePos);//调用视图函数:m_pview->Put();第二种方法: (上次在DOC里面使用有问题的)//获得窗体指针:CMainFrame *pFrame = (CMainFrame*)AfxGetApp()->m_pMainWnd;//获得与该窗体符合的视图:CYourView *m_pView = (CYourView *) pFrame->GetActiveView();//调用视图函数:m_pView->Put(); 菜单操作--前面加箭头标示GetMenu()->GetSubMenu(0)->CheckMenuItem(0,MF_BYPOSITION|MF_CHECKED);菜单操作-- 设置默认菜单项GetMenu()->GetSubMenu(0)->SetDefaultItem(1,TRUE);菜单操作--使菜单变灰 //需将m_bAutoMenuEnable=False添加在CMainFrame构造函数中GetMenu()->GetSubMenu(0)->EnableMenuItem(1,MF_BYPOSITION|MF_DISABLED|MF_GRAYED);//移走菜单SetMenu(NULL);//添加菜单项GetMenu()->AppendMenu(MF_POPUP,(UINT)menu.m_hMenu,"WinSun");//插入菜单项GetMenu()->InsertMenu(2,MF_POSITION|MF_POPUP,(UINT)menu.m_hMenu,"WinSun");对话框7种访问方式1.GetDlgItem()->GetWindowText()/SetWindowText();2.GetDlgItemText()/SetDlgItemText;3.GetDlgItemInt()/SetDlgItemInt();4.将控件和整型变量相关联5.将控件和控件变量相关联6.SendMessage(.WM_GETTEXT....);7.SendDlgItemMessage(.EM_SETSEL.....);与CString进行转换1.int/CStringint->CStringint n=1;CString str;str.Format("%d",n);CString->intCString str="1";int n=atoi(str.GetBuffer(0));2.char*/CStringchar*->CStringchar sz[128];CString str;str.Format("%s",sz);CString->char*CString str;int nLength=str.GetLength();char* sz=new char[nLenght];sz=str.GetBuffer(0);3.float/CStringfloat->CStringfloat f=0.0;CString str;str.Format("%f",f);CString->floatCString="0.0";float f=atof(

str.GetBuffer(0)); //可以以托放图标打开 CXXApp::InitInsatance()中添加//enable drag/drop openpMainFrame->DragAcceptFiles();//Enable DDE Execute openEnableShellOpen();RegisterShellFileTypes(TRUE);//启动时不自动打开一个空文档cmdInfo.m_nShellCommand=CCommandLineInfo::FileNothing;//绘图一: 通过CDC 得到一个指针 需要GetDC和ReleaseDCCWnd* pWnd = GetDlgItem(IDC_STATICS);CDC* pDC = pWnd->GetDC();......pWnd->ReleaseDC(pDC);pWnd->Invalidate();pWnd->UpdateWindow();//绘图二: 通过CClientDC 得到一个对象 不需要GetDC和ReleaseDC 因为CClientDC继续自CDC 它已经作好GetDC和ReleaseDC的工作CClientDC dc(this);dc.。。。。。//绘图操作//绘图三:通过CWindowDC 得到一个对象 它继承自CDC 但已经作好了GetWindowDC和ReleaseDC的工作 包含客户区和非客户区CWindowDC dc(this);dc.。。。。//绘图操作显示ID为IDB_BITMAP1的位图资源void CMyView::OnDraw(CDC*pDC){//CBitmap对象CBitmap bitmap;//加载资源bitmap.LoadBitmap(IDB_BITMAP1);//取得高和宽BITMAP bm;bitmap.GetBitmap(&bm);int width=bm.bmWidth;int height=bm.bmHeight;//CDC对象CDC dcMemory;//创建内存设备环境dcMemory.CreateCompatibleDC(pDC);//将位图选入内存设备环境中CBitmap *pOldBitmap=dcMemory.SelectObject(&bitmap);//将内存设备环境复制到真正的设备环境中pDC->BitBlt(0,0,width,height,&dcMemory,0,0,SRCCOPY);//恢复dcMemory.SelectObject(pOldBitmap);//CDC析构函数退出前将删除dcMemory,位图选出//CBitmap析构函数删除位图}复制缩小或放大的位图void CMyView::OnDraw(CDC*pDC){//CBitmap对象CBitmap bitmap;//CDC对象CDC dcMemory;//加载资源bitmap.LoadBitmap(IDB_BITMAP1);//创建内存设备环境dcMemory.CreateCompatibleDC(pDC);//将位图选入内存设备环境中dcMemory.SelectObject(&bitmap);//将内存设备环境复制到真正的设备环境中pDC->BitBlt(0,0,699,919,&dcMemory,0,0,SRCCOPY);//缩小一半显示pDC->StretchBlt(699,0,699/2,919/2,&dcMemory,0,0,699,919,SRCCOPY);pDC->StretchBlt(699,919/2,699/2,919/2,&dcMemory,0,0,699,919,SRCCOPY);//CDC析构函数退出前将删除dcMemory,位图选出//CBitmap析构函数删除位图}显示资源中的位图对象&从磁盘读取一个位图文件来显示void CWuwenView::OnDraw(CDC* pDC){CWuwenDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);//方法1 显示资源中的位图对象//创建CBitmap对象CBitmap bit;bit.LoadBitmap(IDB_BITMAP1);//创建CDC对象CDC dcComp;dcComp.CreateCompatibleDC(pDC);dcComp.SelectObject(&bit);//获取位图大小以供函数调用BITMAP bmInfo;bit.GetObject(sizeof(bmInfo),&bmInfo);//显示位图pDC->BitBlt(0,0,bmInfo.b

mWidth,bmInfo.bmHeight,&dcComp,0,0,SRCCOPY);pDC->TextOut(bmInfo.bmWidth/2-1,bmInfo.bmHeight,"1.显示资源中位图");//方法2 从磁盘读取一个位图文件来显示CBitmap bit2;//获取图像句柄HBITMAP hbitmap=(HBITMAP)::LoadImage(NULL,"D:\\照片\\xx1.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);//关联图像句柄到位图对象bit2.Attach(hbitmap);dcComp.SelectObject(&bit2);//获取位图大小以供函数使用BITMAP bmInfo2;bit2.GetObject(sizeof(bmInfo2),&bmInfo2);//显示位图pDC->BitBlt(bmInfo.bmWidth,0,bmInfo2.bmWidth,bmInfo2.bmHeight,&dcComp,0,0,SRCCOPY);pDC->TextOut(bmInfo.bmWidth+bmInfo2.bmWidth/2-1,bmInfo2.bmHeight,"2.显示磁盘中的位图文件");// TODO: add draw code for native data here}动态增加菜单和删除菜单void CDynMenuView::OnControlPlus() //增加按钮所对应的控制函数{// TODO: Add your command handler code hereCMenu *pTopMenu,*pNewMenu;pTopMenu=AfxGetMainWnd()->GetMenu();//得到主菜单指针pNewMenu=pTopMenu->GetSubMenu(4);//文件-0 编辑-1 ...以此类推 要增加的分割线在对应的菜单项下pNewMenu->AppendMenu(MF_SEPARATOR);CString newMenuName;newMenuName.LoadString(IDM_ITEM_NEW);pNewMenu->AppendMenu(MF_STRING,IDM_ITEM_NEW,newMenuName);}void CDynMenuView::OnControlRestore() //删除按钮所对应的控制函数{// TODO: Add your command handler code hereCMenu *pTopMenu,*pNewMenu;pTopMenu=AfxGetMainWnd()->GetMenu();//得到主菜单指针pNewMenu=pTopMenu->GetSubMenu(4);pNewMenu->DeleteMenu(2,MF_BYPOSITION);pNewMenu->DeleteMenu(1,MF_BYPOSITION);}创建无模式对话框要点CModalDlg *dlg=new CModalDlg;dlg->Create(IDD_MOUSEPOINT,NULL);dlg->ShowWindow(SW_SHOW);创建模式对话框CModalDlg ModalDlg;CModalDlg.DoModal();//无模式对话框需要调用Create()函数创建和ShowWindow()函数显示,而模式对话框的显示可以调用DoModal()成员函数.//而且模式对话框可以用对象 但无模式对话框一般用指针 主要原因是考虑局部对象资源的释放问题 分配的指针存放在堆中 随程序生命结束而结束实现用键盘来操作滚动条,在XXXVIEW中编辑OnKeyDown成员函数void CMyScrollView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) {// TODO: Add your message handler code here and/or call defaultswitch(nChar){case VK_HOME: //按HOME键实现自动定位到文档最顶部和最左部OnVScroll(SB_TOP,0,NULL);OnHScroll(SB_LEFT,0,NULL);break;case VK_END: //按END键实现自动定位到文档最下部和最右部OnVScroll(SB_BOTTOM,0,NULL);OnHScroll(SB_RIGHT,0,NULL);break;case VK_UP: //按UP键实现自动定位到光标的上一行OnVScroll(SB_LINEUP,0,NULL);break;case VK_DOWN: //按DOWN键实现自动定位到光标的下一行OnVScroll(SB_LINEDOWN,0,NULL);break

;case VK_PRIOR: //按PGUP实现翻到上一页OnVScroll(SB_PAGEUP,0,NULL);break;case VK_NEXT: //按PGDOWN实现翻到下一页OnVScroll(SB_PAGEDOWN,0,NULL);break;case VK_LEFT: //按Left键实现左移一个字OnHScroll(SB_LINELEFT,0,NULL);break;case VK_RIGHT: //按Right键实现右移一个字OnHScroll(SB_LINERIGHT,0,NULL);break;default:break;}CScrollView::OnKeyDown(nChar, nRepCnt, nFlags);}隐藏或者显示桌面图标 桌面窗口:ProgMan 桌面任务栏:Shell_TrayWndvoid CTubiaoDlg::OnOK() //显示图标按钮对应函数{// TODO: Add extra validation hereCWnd *Desktop;Desktop=FindWindow("ProgMan",NULL);Desktop->ShowWindow(SW_SHOW);m_display.EnableWindow(FALSE); //使本按钮变灰m_hide.EnableWindow(TRUE); //使隐藏按钮激活//CDialog::OnOK();}void CTubiaoDlg::OnCancel() //显示隐藏按钮对应函数{// TODO: Add extra cleanup hereCWnd *Desktop;Desktop=FindWindow("ProgMan",NULL);Desktop->ShowWindow(SW_HIDE);m_hide.EnableWindow(FALSE); //使本按钮变灰m_display.EnableWindow(TRUE); //使显示按钮激活//CDialog::OnCancel();}void CTubiaoDlg::OnButton1() //必须设置一个退出按钮,因为上述两个函数无退出功能.{// TODO: Add your control notification handler code hereCDialog::OnCancel();}播放WAV声音void CPlaySoundDlg::OnButton1() {// TODO: Add your control notification handler code hereCString Str1;GetDlgItemText(IDC_EDIT1,Str1);//取得输入的wav文件名BOOL result=sndPlaySound(Str1,SND_ASYNC);//异步方式播放声音if(result!=TRUE)MessageBox("Play Sound Fail!");}动态改变光标void CChangeCursorView::OnMouseMove(UINT nFlags, CPoint point) {// TODO: Add your message handler code here and/or call defaultif(point.x<=150) //当鼠标在窗口的右半边时{hCursor1=AfxGetApp()->LoadCursor(IDC_CURSOR1);::SetCursor(hCursor1);}if(point.x>150){hCursor2=AfxGetApp()->LoadCursor(IDC_CURSOR2);::SetCursor(hCursor2);}CView::OnMouseMove(nFlags, point);}获取系统信息//获取计算机名DWORD size=MAX_COMPUTERNAME_LENGTH+1;TCHAR buffer[MAX_COMPUTERNAME_LENGTH+1];GetComputerName(buffer,&size);m_name=buffer;//获取版本信息OSVERSIONINFO osvi;char buf[50];osvi.dwOSVersionInfoSize=sizeof(OSVERSIONINFO);GetVersionEx(&osvi);wsprintf(buf,"Win%d.%d",osvi.dwMajorVersion,osvi.dwMinorVersion); //诸如版本5.1 则dwMajorVersion=5,dwMinorVersion=1m_version=buf;//获取CPU信息SYSTEM_INFO CPU_info;GetSystemInfo(&CPU_info);if(CPU_info.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_INTEL){if(CPU_info.dwProcessorType==PROCESSOR_INTEL_486);m_cpu="80486处理器";if(CPU_info.dwProcessorType

==PROCESSOR_INTEL_PENTIUM);m_cpu="奔腾或更高处理器";}if(CPU_info.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_UNKNOWN)m_cpu="未知的处理器";//获取内存信息MEMORYSTATUS memStatus;memStatus.dwLength=sizeof(MEMORYSTATUS);GlobalMemoryStatus(&memStatus);m_phsyTotal=memStatus.dwTotalPhys; //总物理内存m_phsyvival=memStatus.dwAvailPhys; //可用物理内存m_usedl=memStatus.dwMemoryLoad; //使用的百分比m_virtualTotal=memStatus.dwTotalVirtual; //总虚拟内存m_virtualAvail=memStatus.dwAvailVirtual; //可用的虚拟内存在一个程序中调用其他可执行文件的方法:ShellExecute(...);详解HINSTANCE ShellExecute(HWND hwnd, LPCTSTR lpOperation,LPCTSTR lpFile, LPCTSTR lpParameters, LPCTSTR lpDirectory,INT nShowCmd);参数一为使用该语句的窗口句柄 GetSafeHwnd()参数二为表示操作的字符串 print edit open explorer参数三为要执行的文件名 如果它带了完整的路径,参数四和五就不需要,用NULL参数六表示显示方式 常用: SW_SHOWNORMALShellExecute(NULL,NULL,_T("1.txt"),NULL,_T("c:\\temp"),SW_SHOWMAXMIZED)文件对话框的使用CfileDialog(....);详解CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, //这个就是用来选择打开何种类型的文件,用来过滤!CWnd* pParentWnd = NULL );参数一 选择TURE是打开文件对话框,FALSE是构造一个另存为文件对话框参数二 包含默认的文件扩展名的字符串参数三 包含默认的文件名的字符串参数四 是否永许定制文件对话框参数五 是否显示需要过滤的文件类型的字符串参数六 文件对话框父窗口的指针例如:CFileDialog openBox(TRUE,NULL,"",OFN_HIDEREADONLY,"Bitmap(*.bmp)|*.bmp||",NULL);openBox.m_ofn.lpstrTitle="打开文件对话框";openBox.DoModal();//显示对话框得到系统目录: GetSystemDirectory(Buffer,100);得到Windows目录: GetWindowsDirectory(Buffer,100);得到当前目录: GetCurrentDirectory(Buffer,100); //都将目录存入大小为100的字符Buffer中关于鼠标的设置GetDoubleClickTime() 得到鼠标双击的速的SetDoubleClickTime(int x) 将X的值赋予鼠标双击的速度程序:通过滑动块更改鼠标双击速度BOOL CMouseDlg::OnInitDialog()中添加m_MouseSpeedSlider.SetRange(100,900,FALSE);//设定滑动条的最大最小值MouseSpeed=::GetDoubleClickTime(); //取得鼠标双击时间m_MouseSpeedSlider.SetPos(MouseSpeed); //设定当前滑杆位置与MouseSpeed一致CString str;str.Format("%d毫秒",MouseSpeed);SetDlgItemText(IDC_STATICSPEED,str); //在对话框中,显示双击

鼠标的时间void CMouseDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 中添加MouseSpeed=m_MouseSpeedSlider.GetPos();//取得当前滑杆的取值,放在MouseSpeed中CString str;str.Format("%d毫秒",MouseSpeed);SetDlgItemText(IDC_STATICSPEED,str); //更新显示当前选择的双击时间void CMouseDlg::OnOK() 中添加SetDoubleClickTime(MouseSpeed); 拷贝文件API函数:CopyFile(.....)BOOL CopyFile(LPCTSTR lpExistingFileName,// pointer to name of an existing fileLPCTSTR lpNewFileName, // pointer to filename to copy toBOOL bFailIfExists // flag for operation if file exists);第一个参数:源文件完整的路径字符串第二个参数:目标文件完整的路径字符串第三个参数:取FALSE 有同文件名存在,直接覆盖 取TRUE 有同文件名存在,取消此次复制static控件显示其他void CVvvvDlg::OnButton1() //设置Staic显示文本{// TODO: Add your control notification handler code hereCStatic *pStatic1=(CStatic*)GetDlgItem(IDC_STATIC1);pStatic1->SetWindowText("新文本");}void CVvvvDlg::OnButton2() //设置Static显示图标资源{// TODO: Add your control notification handler code hereCStatic *pStatic2=(CStatic*)GetDlgItem(IDC_STATIC2);pStatic2->SetWindowText("");pStatic2->ModifyStyle(0x0,SS_ICON|SS_CENTERIMAGE);pStatic2->SetIcon(AfxGetApp()->LoadIcon(IDI_ICON1));}void CVvvvDlg::OnButton3() //设置Static显示位图资源{// TODO: Add your control notification handler code hereCStatic *pStatic3=(CStatic*)GetDlgItem(IDC_STATIC3);pStatic3->SetWindowText("");pStatic3->ModifyStyle(0x0,SS_BITMAP|SS_CENTERIMAGE);pStatic3->SetBitmap(::LoadBitmap(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDB_BITMAP1)));}//响应鼠标事件,必须手动添加消息处理函数, afx_msg void OnStatic4(); 然后添加与控件相对应的处理 ON_BN_CLICKED(IDC_STATIC4,OnStatic4) 然后具体给函数OnStatic4()写实现代码,最后才同按钮BUTTON4实现单击显示效果:void CVvvvDlg::OnButton4() //设置Static响应鼠标点击事件{// TODO: Add your control notification handler code hereCStatic *pStatic4=(CStatic*)GetDlgItem(IDC_STATIC4);pStatic4->ModifyStyle(0x0,SS_NOTIFY);}给工具栏添加文字说明在CMainFrame中,OnCreate(LPCREATE.....)中添加如下代码//给工具栏附加文字说明for(int i = 0; i < m_wndToolBar.GetCount(); i++){UINT id = m_wndToolBar.GetItemID(i);CString s;if(!s.LoadString(id)) continue;int j = s.Find(_T('\n'));if(j < 0) continue;s = s.Right(s.GetLength() - j - 1);m_wndToolBar.SetButtonText(i,s); }// Adjust sizes to include textCRect rect;m_wndToolBar.GetItemRect(0,&rect);m_wndToolBar.SetSizes(rect.Size(),CSize(16,15));给工具栏以激活形式显示在CMainFrame中,OnCreate(LPCREATE....)

中,在函数 if(!m_wndToolBar.CreateEx()...)与函数if(!m_wndStatusBar.Create(this)..)之间添加如下代码//给工具栏以激活形式显示,IDB_MAINFRAME表示新的鼠标停留时显示的工具栏。CImageList img;if(!img.Create(IDB_MAINFRAME,16,0,RGB(128,128,128))){TRACE0("Failed to load hot images\n");return -1;}m_wndToolBar.GetToolBarCtrl().SetHotImageList(&img);img.Detach();JPEG使用的颜色空间是CCIR601推荐标准采用的彩色空间.在这个彩色空间中,每个分量,每个象素的电平规定为255级,用8bit表示.从RGB到YCbCr的转换Y=0.299R+0.587G+0.114BCb=0.5B-0.3313G-0.1687R+128Cr=0.5R-0.4187G-0.0813B+128从YCbCr到RGB的转换:R=Y+1.402(Cr-128)G=Y-0.34414(Cb-128)-0.71414(Cr-128)B=Y+1.772(Cb-128)为防止同时运行两个相同的程序,下面两个函数是必需的void CscreensverWnd::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized) {CWnd::OnActivate(nState, pWndOther, bMinimized);if(nState==WA_INACTIVE)PostMessage(WM_CLOSE);// TODO: Add your message handler code here}void CscreensverWnd::OnActivateApp(BOOL bActive, HTASK hTask) {CWnd::OnActivateApp(bActive, hTask);if(!bActive)PostMessage(WM_CLOSE);// TODO: Add your message handler code here}打开/关闭光驱一、打开CD-ROM mciSendString("Set cdAudio door open wait",NULL,0,NULL); 二、关闭CD_ROM mciSendString("Set cdAudio door closed wait",NULL,0,NULL); 关闭计算机 OSVERSIONINFO OsVersionInfo; //包含操作系统版本信息的数据结构 OsVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&OsVersionInfo); //获取操作系统版本信息 if(OsVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) { //Windows98,调用ExitWindowsEx()函数重新启动计算机 DWORD dwReserved; ExitWindowsEx(EWX_REBOOT,dwReserved); //可以改变第一个参数,实现注销用户、关机、关闭电源等操作 } //ExitWindowsEx第一个参数设置如下 第二个参数一般都可填0//EWX_FORCE   强制终止程序运行而退出系统 //EWX_LOGOFF  退出而以其它身份登录 //EWX_REBOOT  重新启动 //EWX_SHUTDOWN 关机   重启计算机typedef int (CALLBACK *SHUTDOWNDLG)(int); //显示关机对话框函数的指针 HINSTANCE hInst = LoadLibrary("shell32.dll"); //装入shell32.dll SHUTDOWNDLG ShutDownDialog; //指向shell32.dll库中显示关机对话框函数的指针 if(hInst != NULL) { //获得函数的地址并调用之 ShutDownDialog = (SHUTDOWNDLG)GetProcAddress(hInst,(LPSTR)60); (*ShutDownDialog)(0); } 一次只运行一个程序实例,如果已运行则退出 if( FindWindow(NULL,"程序标题")) exit(0); 得到当前鼠标所在位置CPoint pt; GetCursorPos(&pt); //得到位置 显示或者隐藏菜单BOOL s

tatic b_m=TRUE;// TODO: Add your command handler code hereCWnd *pWnd=AfxGetMainWnd(); if(b_m) //隐藏菜单 { pWnd->SetMenu(NULL); pWnd->DrawMenuBar(); b_m=false; } else //显示菜单{ CMenu menu; menu.LoadMenu(IDR_LIANXITYPE); ////显示菜单 也可改变菜单项 pWnd->SetMenu(&menu); pWnd->DrawMenuBar(); b_m=true; menu.Detach(); } 获取可执行文件的图标HICON hIcon=::ExtractIcon(AfxGetInstanceHandle(),_T("NotePad.exe"),0); if (hIcon &&hIcon!=(HICON)-1) { pDC->DrawIcon(10,10,hIcon); } DestroyIcon(hIcon); 确定应用程序的路径Use GetModuleFileName 获得应用程序的路径,然后去掉可执行文件名。Example:TCHAR exeFullPath[MAX_PATH]; // MAX_PATH在API中定义了吧,好象是128GetModuleFileName(NULL,exeFullPath,MAX_PATH)如何让窗口和 MDI窗口一启动就最大化和最小化?先说窗口。在 InitStance 函数中设定 m_nCmdShow的 取值。加前面。m_nCmdShow=SW_SHOWMAXMIZED ; //最大化m_nCmdShow=SW_SHOWMINMIZED ; //最小化m_nCmdShow=SW_SHOWNORMAL ; //正常方式MDI窗口:如果是创建新的应用程序,可以用 MFC AppWizard 的Advanced 按钮并在MDI 子窗口风格组中检测最大化或最小化; 还可以重载 MDI Window 的PreCreateWindow函数,设置WS_MAXMIZE or WS_MINMIZE;如果从 CMDIChildWnd 派生,调用 OnInitialUpdate函数中的 CWnd::Show Window来指定 MDI Child Window的风格。如何在代码中获取工具条和状态条的指针缺省时, 工作框创建状态条和工具条时将它们作为主框窗口的子窗口,状态条有一个AFX_IDW_STATUS_BAR 标识符,工具条有一个AFX_IDW_TOOLBAR标识符,下例说明了如何通过一起调用CWnd: : GetDescendantWindow和AfxGetMainWnd来获取这些子窗口的指针://Get pointer to status bar .CStatusBar * pStatusBar =(CStatusBar *) AfxGetMainWnd ( ) —> GetDescendantWindow(AFX_IDW_STUTUS_BAR);//Get pointer to toolbar .CToolBar * pToolBar =(CToolBar * ) AfxGetMainWnd ( ) —> GetDescendantWindow (AFX_IDW_TOOLBAR);动态分配二维数组template<class T>void Make2DArry(T** &x,int rows,int cols){//创建行指针x=new T*[rows];//为每一行分配空间for(int i=0;i<rows;i++){x[i]=new int[cols];}}释放该二维数组template<class T>void Delete2DArry(T** &x,int rows){//释放为每一行所分配的空间for(int i=0;i<rows;i++){delete []x[i];//释放行指针delete []x;x=0;}例子:int** data;int row,col;Make2DArry<int>(data,row,col);Delete2DArry<int>(data,row);注意:使用模板类时,需要包含头文件#include"afxtempl.h"如何过滤输入的字符1.新建一个类CmyEdit,继承自Cedit,在包含有CEdit控件的类里,#include"myEdit.h" 并创建新对象CmyEdit m_edit在初始化函数中 m_edit.SubclassDlgItem(IDC_EDIT1);2.void Cm

yEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) {// TODO: Add your message handler code here and/or call defaultif(::IsCharAlpha((TCHAR)nChar)) //此行为添加的行CEdit::OnChar(nChar, nRepCnt, nFlags);}//IsCharAlpha 表示只有字母才可输入//IsCharAlphaNumeric 表示只有字母和数字才可输入//IsCharLower 表示只有小写字母才可输入//IsCharUpper 表示只有大写字母才可输入 设定静态文本框的背景色和文本颜色 在OnPaint()中增添代码//获得静态文本框的窗口指针和其他设备场景CStatic* pTxt=(CStatic*)GetDlgItem(IDC_TXT);CDC *pDC=pTxt->GetDC();//获得静态文本框的客户区域CRect rc;pTxt->GetClientRect(&rc);//创建画背景的画刷,并用其填充 背景CBrush brush;brush.CreateSolidBrush(RGB(23,35,67));pDC->FillRect(&rc,&brush);//设定文字的色彩,并输出文字pDC->SetBkColor(RGB(255,255,67)); //设定文字区域的背景色pDC->SetTextColor(RGB(255,0,0)); //设定文字的颜色pDC->DrawText("调色程序",&rc,DT_CENTER|DT_SINGLELINE|DT_VCENTER); //显示所要表达的文字pTxt->ReleaseDC(pDC); //释放窗口指针InvalidateRect(&rc);//进行重画如何使用颜色对话框void XXXDlg::OnColor(){//构造颜色通用对话框CColorDialog colorDlg;//显示if(colorDlg.DoModal()==IDOK){//获得颜色 m_clrTxtColor为预先定义的COLORREF值m_clrTxtColor=colorDlg.GetColor();//刷新窗口Invalidate();}}如何使用字体对话框void CTestDlg::OnButton1() {// TODO: Add your control notification handler code here//构造通用对话框CFontDialog fontDlg(NULL,CF_EFFECTS|CF_SCREENFONTS,NULL,NULL);//显示if(fontDlg.DoModal()==IDOK){//获得字体fontDlg.GetCurrentFont(&m_LogFont); //m_LogFont 是预先定义的LOGFONT类型//刷新窗口Invalidate();}//将LOGFONT转化为CFONT字体CFont font;VERIFY(font.CreateFontIndirect(&m_LogFont));//对于文本框,用选择的字体重新写CStatic* pTxt=(CStatic*)GetDlgItem(IDC_TXT);pTxt->SetFont(&font,TRUE);//对于通用控件,控件也是窗口,所以可以调用CWnd::SetFont指定新字体CWnd *pWnd=GetDlgItem(IDOK); //诸如要改变IDOK按钮的字体pWnd->SetFont(&font);}改变窗口背景色--用某种单一颜色填充BOOL CBckGrndClrView::OnEraseBkgnd(CDC* pDC) {// TODO: Add your message handler code here and/or call defaultCBrush brush;brush.CreateSolidBrush(RGB(123,23,45));CBrush* pOldBrush=pDC->SelectObject(&brush);CRect rc;GetClientRect(&rc);pDC->Rectangle(&rc);pDC->SelectObject(pOldBrush);return TRUE; //注意必须返回TRUE//return CView::OnEraseBkgnd(pDC);}改变窗口背景

色--用某BMP位图填充 因为有改变窗口大小带来的刷新问题,所以建议程序设为最大化显示,并图像大小为1024×645BOOL CTestView::OnEraseBkgnd(CDC* pDC) {// TODO: Add your message handler code here and/or call defaultCRect rc;GetWindowRect(&rc);//载入位图CBitmap bmp1;CBitmap* OldBitmap=NULL;bmp1.LoadBitmap(IDB_BITMAP2);CDC memDC;memDC.CreateCompatibleDC(pDC);OldBitmap=memDC.SelectObject(&bmp1);//显示位图pDC->BitBlt(0,0,rc.Width(),rc.Height(),&memDC,0,0,SRCCOPY);if(OldBitmap)memDC.SelectObject(OldBitmap);return TRUE;//return CView::OnEraseBkgnd(pDC);}生成其他形状的窗体在OnInitDialog()中添加:// TODO: Add extra initialization hereCRect rc;GetClientRect(&rc); m_rgn.CreateEllipticRgn(0,0,rc.Width(),rc.Height()); //m_rgn为预先定义好的CRgn对象::SetWindowRgn(GetSafeHwnd(),(HRGN)m_rgn,TRUE); return TRUE;是指针无需指在标题兰就可移动窗口重载OnLButtonDown函数 最后加一行PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(point.x,point.y));使对话模式程序半透明化在OnInitDialog()中添加// TODO: Add extra initialization here//加入WS_EX_LAYERED扩展属性SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000);HINSTANCE hInst=LoadLibrary("User32.DLL");if(hInst){typedef BOOL(WINAPI*MYFUNC)(HWND,COLORREF,BYTE,DWORD);MYFUNC fun=NULL;//取得SetLayeredWindowAttributes函数指针fun=(MYFUNC)GetProcAddress(hInst,"SetLayeredWindowAttributes");if(fun)fun(this->GetSafeHwnd(),0,128,2); //128表示透明程度的大小,其范围为0到255,0即为不可见,同HIDE,255即为全部显示。FreeLibrary(hInst);}保持窗口的大小不变cs.style&=~WS_THICKFRAME;cs.style&=~WS_MAXIMIZEBOX;WS_THICKFRAME 表示所创建的窗口可以通过鼠标拖曳边线改变大小WS_MAXIMIZEBOX表示所创建的窗口有一个最大化按钮上面都进行与和反的操作,就能使窗口不能改变大小了同理:解释下窗口的styleWS_BORDER 创建一个有边框的窗体。WS_CAPTION 创建一个有标题栏的窗体(隐含了WS_BORDER). 不能和WS_DLGFRAME一起使用.WS_CHILD 创建一个子窗体。不能和WS_POPUP一起使用。WS_CLIPCHILDREN 不包括在父窗体中被子窗体占用的区域。用于创建父窗体。WS_CLIPSIBLINGS 使子窗体彼此别住;就是当一个指定的子窗体接收到一个paint消息时,WS_CLIPSIBLINGS类型将别住所有重叠的子窗体超过区域的部分一起更新,(如果没有使用WS_CLIPSIBLINGS并且子窗体重叠,当你在一个子窗体的客户区绘图时,可能会绘图到邻近的子窗体的客户区。)只与WS_CHILD一起使用。WS_DISABLED 创建一个初始不可用的窗体。WS_DLGFRAME 创建一个有双边

但无标题的窗体。WS_GROUP 指定一个用户可以用方向键从一个控件移到另一个控件的控件组的第一个控件。All controls defined with the WS_GROUPstyle FALSE after the first control belong to the samegroup. The next control with the WS_GROUP style startsthe next group (that is, one group ends where the nextbegins).WS_HSCROLL 创建一个带水平滚动条的窗体。WS_MAXIMIZE 创建一个最大尺寸的窗体。WS_MAXIMIZEBOX 创建一个有最大化按扭的窗体。WS_MINIMIZE 创建一个初始最小化的窗体。只与WS_OVERLAPPED一起使用。WS_MINIMIZEBOX 创建一个有最小化按扭的窗体。WS_OVERLAPPED 创建一个重叠窗体。一个重叠窗体一般有标题和边框。WS_OVERLAPPEDWINDOW 创建一个和WS_OVERLAPPED, WS_CAPTION, WS_SYSMENU,WS_THICKFRAME, WS_MINIMIZEBOX, and WS_MAXIMIZEBOX一使用的重叠窗体。WS_POPUP 创建一个弹出式窗体。不能和WS_CHILD一起使用。WS_POPUPWINDOW 创建一个和WS_BORDER, WS_POPUP, and WS_SYSMENU一起使用的弹出式窗体。WS_CAPTION必须和WS_POPUPWINDOW组合使用才能让控件菜单可见。WS_SYSMENU 创建一个在标题栏有控件菜单框的窗体。只能和有标题栏的窗体一起使用。WS_TABSTOP 指定任意数量控件中的一个可以由用户使用TAB键移动到的控件。TAB键使用户移动到由WS_TABSTOP指定的下一个控件。WS_THICKFRAME 创建一个有厚边框的Window,当鼠标在边线拖动时,使其可以改变大小。WS_VISIBLE 创建一个初始可见的窗体。WS_VSCROLL 创建一个有垂直滚动条的窗体。窗口居中对应桌面居中CenterWindow(CWnd::GetDesktopWindow());对应父窗口居中CenterWindow();窗口置顶::SetWindowPost(AfxGetMainWnd()->m_hWnd,HWND_TOPMOST,-1,-1,-1,-1,SWP_NOMOVE|SWP_NOSIZE);如果要取消置顶,HWND_TOPMOST改为HWND_NOTOPMOST;同时该函数也具备将窗口移动到指定位置的作用,但必须指定具体位置::SetWindowPost(NULL,0,0,reWindow.Width()*2,reWindow.Height()*2,SWP_NOMOVE|SWP_NOZORDER);用来获得屏幕的大小象素GetSystemMetrics(SM_CXSCREEN) 和 GetSystemMetrics(SM_CYSCREEN)在对话框项目中创建工具条,先添加工具栏资源,自己画好各个按钮,并声明CToolBar变量m_wndToolBar,在OnInitDialog函数中添加如下代码//创建工具条if(!m_wndToolBar.CreateEx(this,TBSTYLE_FLAT,WS_CHILD|WS_VISIBLE|CBRS_ALIGN_TOP|CBRS_GRIPPER|CBRS_TOOLTIPS,CRect(4,4,0,0))||!m_wndToolBar.LoadToolBar(IDR_TOOLBAR1)){TRACE0("failed to create toolbar\n");return FALSE;}m_wndToolBar.ShowWindow(SW_SHOW);RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);设光标热区 在光标热区更改光标和显示文字BOOL CTestDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) {// TODO: Add your message handler code here and/or cal

l defaultswitch(pWnd->GetDlgCtrlID()) {case IDC_PICTURE://注:此种情况要把PICTURE和EDIT属性设置中NOTIFY打上勾,表示响应鼠标事件。{//设置鼠标指针为“手形”指针SetCursor(AfxGetApp()->LoadCursor(IDC_HAND));//IDC_HAND必须自己IMPORT定义//将提示文字可见GetDlgItem(IDC_TEXT)->SetWindowText("This is a picture");//IDC_TEXT是对话框中已经定义好的GetDlgItem(IDC_TEXT)->ShowWindow(SW_SHOW);return TRUE;}break;case IDC_BUTTON1:{SetCursor(AfxGetApp()->LoadCursor(IDC_HAND));GetDlgItem(IDC_TEXT)->SetWindowText("This is a Button");GetDlgItem(IDC_TEXT)->ShowWindow(SW_SHOW);return TRUE;}break;default: //鼠标离开热点{//将提示性文字隐藏GetDlgItem(IDC_TEXT)->ShowWindow(SW_HIDE);//返回系统默认的光标SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW));//IDC_ARROW无须自己定义return TRUE;}break;}随意改变光标的形状BOOL CTestDlg::PreTranslateMessage(MSG* pMsg) {// TODO: Add your specialized code here and/or call the base classif(pMsg->message==WM_MOUSEMOVE){//鼠标移动消息//获得当前鼠标位置POINT pt=pMsg->pt;//转换为客户坐标系ScreenToClient(&pt);//获得当前位置的控件窗口指针CWnd* pWnd=ChildWindowFromPoint(pt);//获得该窗口的IDUINT nCtrlID=pWnd->GetDlgCtrlID();switch(nCtrlID) {case IDC_BUTTON_WAIT://显示漏斗光标SetCursor(LoadCursor(NULL,IDC_WAIT));break;case IDC_BUTTON_CROSS://显示十字光标SetCursor(LoadCursor(NULL,IDC_CROSS));break;default:break;}}return CDialog::PreTranslateMessage(pMsg);}获得设定区域的RECT//获得要限定的区域CWnd* pWnd=GetDlgItem(IDC_CLIPRECT);CRect rc;pWnd->GetWindowRect(&rc);锁定鼠标范围ClipCursor(&rc) -解锁用NULL得到关闭按钮的控件//得到系统菜单CMenu* pMenu=GetSystemMenu(FALSE);//得到关闭按钮的IDint x=pMenu->GetMenuItemCount();UINT pID=pMenu->GetMenuItemID(x-1);//使关闭按钮无效pMenu->EnableMenuItem(pID,MF_DISABLED);根据文件后缀名不同选择不同的打开方式char drive[5];char dir[20];char filename[20];char ext[10];_splitpath(lpszPathName, drive, dir, filename, ext);//获得文件后缀名 存在ext[10]中 此函数用来分离出路径中的信息//如果是数据文件if (_stricmp(ext,".dat") == 0 || _stricmp(ext,".DAT") == 0) //stricmp是字符串比较函数{.......}注:常用字符串函数 包含头文件<string.h>strcpy 字符串拷贝strcat 字符串拼接strcmp 字符串比较strlen 求字符串长度 strncpy(字符数组名,字符串,长度X) 将字符串中长度为X的前面的字符拷贝给第一个参数所指定的数组strncmp(字符串1,字符串2,长度X) 将字符串1和字

符串2的前面的长度为X的字符进行比较//下压式按钮例子 一般在VIEW里写这些函数 此为举例void CMainFrame::OnFileOpen() {// TODO: Add your command handler code herem_bCheck=!m_bCheck;}void CMainFrame::OnUpdateFileOpen(CCmdUI* pCmdUI) {// TODO: Add your command update UI handler code hereif(m_bCheck)pCmdUI->SetCheck(1);elsepCmdUI->SetCheck(0);}//如何使用链表在头文件中#include<AfxTempl.h>C++ template class 区分为简单型 CArray CList CMap类型指针型 CTypedPtrArray CTypedPtrList CTypedPtrMap两种使用方法不同对第一种 使用时指定两种参数 如 CArray<int,int> myArray;第一个int表示创建什么类型的数组 第二个表示函数的参数 如:myArray.Add(10);对第二种 使用时也指定两种参数如 CTypedPtrList<CPtrList,XXX*> YYY;//XXX为定义的结构指针, YYY为链表名称

更多相关推荐:
2项目设计工作总结报告

来宾市兴宾区五山乡止马村等2个村土地整治项目设计工作总结报告编制单位北京国泰天平行土地规划设计有限公司南宁分公司日期二O一二年七月二十五日一项目概况11建设规模项目区总面积为121101hm实施面积103111...

项目设计个人总结

项目管理课程学习和项目设计总结报告一、项目设计个人总结通过一段时间的努力,终于完成了我们小组的创业项目的报告。在这项项目中,我主要的任务是对项目的资源需求计划以及项目风险进行分析。刚开始自己对二手市场了解不足,…

设计工作总结报告完整

ZZZZZZZZ项目工程设计报告单位名称工程设计证号年月日审定校核编写1目录1工程建设必要性2设计工作概况3工程范围和建设内容二工程规划设计要点1设计依据2设计标准3工程布置及主要建筑物4设计工程量三主要设计变...

设计师个人年终工作总结

新的一年又开始了,在我们昂首期待未来的时候,有必要对过去一年的工作做一个回顾,总结以往的经验教训,以待在新的一年有所改进。回顾过去一年,在各级领导的带领下,在各位同事的大力协助下,工作上取得满意得成果。我的岗位…

网站设计项目总结报告

国家软件人才国际培训西安基地lt项目名称gt项目总结报告编写华祥约校对李丽君指导教师贺光辉项目名称项目总结报告目录一简介311目的312定义首字母缩写词和缩略语313参考文档3二开发成果321完成程序322完成...

平面设计工作总结

自今年x月加入xx文化,我主要从事平面设计,在这阶段的工作中,我从实践中不断成长,不断学习,我与公司一起成长,我和同事一起工作生活,让我融入了这个群体也融入这个社会,实现个人价值。在这里,我得到了同事的很多帮助…

设计部年终总结

设计部20xx年年终总结在20xx年到来之际,在我们展望明年的同时,我们有必要回顾一下这个平凡又不平凡的20xx年。总结一下我们的生活,总结一下我们的工作。掰着自己的手指头数一下,看看做过多少让自己自豪的事情,…

设计工作总结

工作总结部门运营支持部姓名韩俊超职位设计师日期20xx1203工作总结二商务沟通与商务沟通时多问一些客户的资料思想设计理念等从中抓住核心理念从而更好地着手设计三需要改进1从设计上自己从以往偏爱的风格到现在多元化...

深化设计工作总结范本1

目前国内建筑装饰行业对深化设计环节还没有足够重视通常做法是方案设计单位进行施工图设计施工单位直接按施工图现场施工由于方案设计单位一般只负责本专业设计范围内的设计而且对具体施工工艺经验不足对现场实际情况又缺乏必要...

设计师工作总结20xx

20xx年是不平凡的一年这一年我积极响应党的号召学习相关文件精神正确指导人生价值观在院科室领导的关怀和同事的帮助下我逐渐适应了院的工作制度熟悉了院的同事和XXXX主要领导给以后工作打下了良好的基础在此表示感谢我...

室内设计工作总结

室内设计工作总结室内设计gt工作总结一一个人的工作态度折射着一个人的人生态度而一个人的人生态度又决定一个人一生的成就我的工作就是我的生命的投影一个天性乐观对工作充满热忱的人无论他眼下是在洗马桶挖土方或者是在经营...

工程设计总结

220kV娄塘变电站工程设计总结上海市电力公司电网建设公司年月日批准日期审核日期编制日期说明一编制目的贯彻百年大计质量第一的方针落实国家建设工程质量管理条例及国家电网公司建设坚强电网的战略目标树立质量精品意识强...

设计项目总结(58篇)