VC界面设计代码收集_第1页
VC界面设计代码收集_第2页
VC界面设计代码收集_第3页
VC界面设计代码收集_第4页
VC界面设计代码收集_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、VC代码收集一、改变视图背景色: 在CView的OnDraw函数中添写如下一段程序代码: void CFileNameView:OnDraw(CDC pDC) CFileNameDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);CRect rectClient;CBrush brushBkColor;GetClientRect(rectClient);brushBkColor.CreateSolidBrush(RGB(255,0,0); /颜色设置pDC-DPtoLP(rectClient);pDC-FillRect(rectClient,&brushB

2、kColor); 二、往基于对话框的程序添加菜单:1 先添加菜单(IDR_MENU1)资源,并加上需要的菜单项。2 编辑对话框资源IDD_DLGMENUTOOLBAR_DIALOG的属性,在属性对话框中选择IDR_MENU1即可。3 假如您不希望在对话框属性中直接设置菜单,而通过代码在程序中动态生成可以采用如下方法:在CFileNameDlg类声名中添加成员变量CMenu m_menu,再在CFileNameDlg:OnInitDialog() 中添加如下代码:/加载菜单m_menu.LoadMenu(IDR_MENU1);/设置当前菜单SetMenu(&m_menu);/当你不需要菜单时可以

3、用 SetMenu(NULL);来取消当前菜单三、往基于Dialog的程序添加工具栏:1 先添加工具栏(IDR_TOOLBAR1)资源,并画好各个按钮。2 在CFileNameDlg类声名中添加成员变量 CToolBar m_wndtoolbar;3 在CFileNameDlg:OnInitDialog() 中添加如下代码/添加一个平面工具条if (!m_wndtoolbar.CreateEx( this,TBSTYLE_FLAT ,WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS, CRect(4,4,

4、0,0) | !m_wndtoolbar.LoadToolBar(IDR_TOOLBAR1) )TRACE0(failed to create toolbarn);return FALSE;m_wndtoolbar.ShowWindow(SW_SHOW);RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);四、改变对话框背景色:在CDlgMenuToolbarDlg:OnPaint()中修改代码实现Dialog 填充颜色:CPaintDC dc(this);CRect rect;GetClientRect(r

5、ect);dc.FillSolidRect(rect, RGB(60,110,170);方法二、在InitInstance()(不是OnInitDialog())中加入:SetDialogBkColor(RGB(255,0,0),RGB(0,255,0);注意:要放在InitInstance函数的最前面!五、为dialog的工具栏添加工具提示:1 在CFileNameDlg类定义中手工添加消息映射函数的定义,如下黑体部分 /AFX_MSG(CFileNameDlg)virtual BOOL OnInitDialog();afx_msg void OnPaint();afx_msg BOOL O

6、nToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult);/AFX_MSGDECLARE_MESSAGE_MAP()2 在CFileNameDlg.cpp添加函数的实现代码/工具栏提示BOOL CFileNameDlg:OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult)ASSERT(pNMHDR-code = TTN_NEEDTEXTA | pNMHDR-code = TTN_NEEDTEXTW); / UNICODE消息TOOLTIPTEXTA* pTTTA = (TOOLTIPTEXTA*)

7、pNMHDR;TOOLTIPTEXTW* pTTTW = (TOOLTIPTEXTW*)pNMHDR;/TCHAR szFullText512;CString strTipText;UINT nID = pNMHDR-idFrom;if (pNMHDR-code = TTN_NEEDTEXTA & (pTTTA-uFlags & TTF_IDISHWND) |pNMHDR-code = TTN_NEEDTEXTW & (pTTTW-uFlags & TTF_IDISHWND)/ idFrom为工具条的HWNDnID = :GetDlgCtrlID(HWND)nID);if (nID != 0)

8、 /不为分隔符strTipText.LoadString(nID);strTipText = strTipText.Mid(strTipText.Find(n,0)+1);#ifndef _UNICODEif (pNMHDR-code = TTN_NEEDTEXTA) lstrcpyn(pTTTA-szText, strTipText, sizeof(pTTTA-szText);else _mbstowcsz(pTTTW-szText, strTipText, sizeof(pTTTW-szText);#elseif (pNMHDR-code = TTN_NEEDTEXTA) _wcstomb

9、sz(pTTTA-szText, strTipText,sizeof(pTTTA-szText);else lstrcpyn(pTTTW-szText, strTipText, sizeof(pTTTW-szText);#endif*pResult = 0;/ 使工具条提示窗口在最上面:SetWindowPos(pNMHDR-hwndFrom, HWND_TOP, 0, 0, 0, 0,SWP_NOACTIVATE| SWP_NOSIZE|SWP_NOMOVE|SWP_NOOWNERZORDER);return TRUE;return TRUE;3 在CFileNameDlg.cpp中添加消息

10、映射,请看如下代码中的黑体部分BEGIN_MESSAGE_MAP(CFileNameDlg, CDialog)/AFX_MSG_MAP(CFileNameDlg)ON_WM_PAINT()ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipText )/AFX_MSG_MAPEND_MESSAGE_MAP()4 在CFileNameDlg.h中添加声明:BOOL CFileNameDlg:OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult);六、给没有工具栏的窗口添加工具栏:在资源管理器中编辑工具栏,并将其属性改为

11、IDR_MAINFRAME,然后在MainFrm.h中声明:CToolBar m_wndToolBar;在MainFrm.cpp中添加:int CMainFrame:OnCreate(LPCREATESTRUCT lpCreateStruct)m_wndToolBar.Create(this);m_wndToolBar.LoadToolBar(IDR_MAINFRAME);;停靠工具栏:在刚才添加的后面加入下面代码:m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle()|CBRS_TOOLTIPS|CBRS_SIZE_DYNAMIC);m_wnd

12、ToolBar.EnableDocking(CBRS_ALIGN_ANY);EnableDocking(CBRS_ALIGN_ANY);DockControlBar(&m_wndToolBar);/控制是否开启任意停靠完善一下功能:在菜单中添加一项“工具栏”,ID设为ID_VIEW_TOOLBAR,一切OK,试试吧!七、创建分隔窗口:只有框架类可以创建分隔,分隔可以嵌套。在.h文件中声明 CSplitterWnd m_wndSplitter;并且包含COneView.h(新建视图类)和CWinFrame.h(新建框架类)文件;然后在.cpp文件中加入:BOOL CMainFrame:OnCre

13、ateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)if(!m_wndSplitter.CreateStatic(this,1,2) return FALSE;if(!m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(COneView),CSize(240,420),pContext) return FALSE;if(!m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CWinFrame),CSize(300,500),pContext) return FALSE

14、;return TRUE;当用户创建好分割窗口后,有时并不希望通过拖动切分条来调节窗口的大小。这时就必须锁定切分条。锁定切分条的最简单的方法莫过于不让 CSplitterWnd来处理WM_LBUTTONDOWN,WM_MOUSEMOVE,WM_SETCURSOR消息,而是将这些消息交给CWnd窗口进行处理,从而屏蔽掉这些消息。拿WM_LBUTTONDOWN处理过程来说。修改为如下:void CXXSplitterWnd:OnLButtonDown(UINT nFlags,CPoint point)CWnd:OnLButtonDown(nFlags,point);其余的处理方法类似。八、“打开”

15、按钮的设置: 用类向导创建该按钮的click函数,选择默认值OnOpen,加入以下代码:void CYourDlg:OnOpen()char szFileFilter= BIN File(*.bin)|*.bin| All File(*.*)|*.*|;/文件类型过滤CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFileFilter);/* CFileDialog dlg(FALSE); dlg.m_ofn .lpstrFilter =_T(文本文件(*.txt)*.txt所有文件(*.*)*.*); dlg.m_ofn.lpstrDefE

16、xt=_T(txt); */if(dlg.DoModal()=IDOK)m_path = dlg.GetPathName();/将显示路径的Edit控件命名为m_path,并增加CString变量m_pathUpdateData(FALSE); 九、窗口居中:在初始化(OnInit)函数中增加:CenterWindow();即可十、对话框加状态条: UINT indicators=ID_INITMESSAGE,ID_SEPARATOR,ID_TIMEMESSAGE,ID_PROGRESS; m_statusbar.CreateEx(this,0,WS_CHILD | WS_VISIBLE |

17、CBRS_BOTTOM); m_statusbar.SetIndicators(indicators,4); m_statusbar.ShowWindow (SW_SHOW); RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);十一、设置初始窗口状态:BOOL CObjectNameApp:InitInstance()m_pMainWnd-SetWindowText(); /设置初始窗口标题文本m_pMainWnd-ShowWindow(SW_SHOWMAXIMIZED);/设置初始窗口为最大化m_pMai

18、nWnd-UpdateWindow();对于MDI函数SetWindowText无效,主窗口的标题只能在资源列表中修改,子窗口标题在*doc.cpp中重载OnNewDocument(),调用SetTitle(LGdownload中文版);来修改。设置初始窗口最大化的另一优化方法:void CMainFrame:ActivateFrame(int nCmdShow) / TODO: Add your specialized code here and/or call the base class nCmdShow=SW_MAXIMIZE; CFrameWnd:ActivateFrame(nCmd

19、Show);十二、对话框透明特效:在OnInitDialog()中加入以下代码:/加入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;/取得SetLayeredWin

20、dowAttributes函数指针fun=(MYFUNC)GetProcAddress(hInst, SetLayeredWindowAttributes);if(fun)fun(this-GetSafeHwnd(),0,128,2);FreeLibrary(hInst);注意:fun的参数128不能太小,否则就完全透明了!十三、设置对话框里的STATIC控件颜色属性:在该对话框增加WM_CTLCOLOR事件,加入以下代码:if( nCtlColor=CTLCOLOR_STATIC ) pDC-SetTextColor(RGB(255,255,255); pDC-SetBkColor(RGB(

21、91,145,244);pDC-SetBkMode(TRANSPARENT); /设置透明设置STATIC控件背景透明:if( nCtlColor=CTLCOLOR_STATIC )pDC-SetBkMode(TRANSPARENT); /设置透明return (HBRUSH):GetStockObject(NULL_BRUSH);十四、使窗口的最大化和最小化按钮消失:在PreCreateWindow函数中添加以下代码即可: int xSize = :GetSystemMetrics( SM_CXSCREEN ); int ySize = :GetSystemMetrics( SM_CYSCR

22、EEN ); cs.cx = xSize * 6 / 10; cs.cy = ySize * 6 / 10; cs.x = ( xSize - cs.cx ) / 2; cs.y = ( ySize - cs.cy ) / 2; cs.style &= WS_THICKFRAME; cs.style &= ( WS_MAXIMIZEBOX | WS_MINIMIZEBOX ); cs.dwExStyle |= WS_EX_TOOLWINDOW;十五、设置控件字体颜色:(例如STATIC控件)在OnCtlColor函数中添加如下代码:(可能需要选择STATIC的简单属性)if(nCtlColor

23、=CTLCOLOR_STATIC)pDC-SetTextColor(RGB(255,0,0); pDC-SetBkColor(RGB(128,128,128);/设置文本背景色pDC-SetBkMode(TRANSPARENT);/设置背景透明其他控件的宏定义为:.CTLCOLOR_BTN 按钮控件.CTLCOLOR_DLG 对话框.CTLCOLOR_EDIT 编辑框.CTLCOLOR_LISTBOX 列表控件.CTLCOLOR_MSGBOX 消息控件.CTLCOLOR_SCROLLBAR 滚动条控件.CTLCOLOR_STATIC 静态控件十六、将字符转换为数字:int i = atoi(1

24、2345); 或 sscanf(12345,%d,&i);十七、调用外部应用程序可使用的函数:CreateProcess、WinExec、ShellExecute。例:ShellExecute(pWnd-m_wnd, open, my.exe, NULL, NULL, SW_NORMAL)一、父窗体句柄,二、命令open,三、文件路径,四、参数,五、运行路径,六、显示方式十八、经典安装程序制作软件:InstallShield for Microsoft Visual C+6.0release 方式是在build菜单中的Set Active configuration中改在project菜单里面

25、,选Add to Project的component and control来加入ocx控件十九、控件的注册:1.注册regsvr32 x:xxxdemo.ocx 不一定非得在 Windows 系统目录2.卸载regsvr32 /u x:xxxdemo.ocx二十、获取当前时间:CTime m_time=CTime:GetCurrentTime();char szText100;memset(szText,0,100);sprintf(szText,%d_%d_%d,m_time.GetHour(),m_time.GetMinite(),m_time.GetSecond();/ 如何得到当前时

26、间日期 CTime time = CTime:GetCurrentTime(); CString m_strTime = time.Format(%Y-%m-%d %H:%M:%S); / 方法二 SYSTEMTIME ti; GetSystemTime(&ti); / 如何得到当前时间日期 ti.wMilliseconds; / 得到毫秒时间SYSTEMTIME time;CString str;GetLocalTime( &time );str.Format( %04d:%02d:%02d,time.wYear,time.wMonth.);二一、修改单文档程序的标题:OnCreat()中加

27、入SetWindowText(weichao);CMainFrame:PreCreateWindow(CREATESTRUCT& cs)中加入cs.style =WS_OVERLAPPEDWINDOW;二二、隐藏程序在任务栏的图标:对话框程序放OnInitDialog()函数:SetWindowLong(this-m_hWnd,GWL_EXSTYLE,WS_EX_TOOLWINDOW);/隐藏任务拦按钮二三、读取编辑框内容: GetDlgItemText(IDC_EDIT_TXDATA,m_strTXData);二四、自绘菜单宽度不对,高度是对的,解决办法:在ClassWizard中的Clas

28、sName下,选CMianFrame,在Messages下选WM_CONTEXTMENU并生成相应的函数,如下:void CMainFrame:OnContextMenu(CWnd* pWnd, CPoint point)CMenu menu; menu.LoadMenu(IDR_MENU1);/IDR_MENU1是你要弹出菜单的ID号. CMenu *popup=menu.GetSubMenu(0); popup-TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,this);二五、重启计算机:调用一个API函数ExitWindowsEx就可以了, 两个

29、参数:UFlag,标记,可以选择EWX_REBOOT,EWX_SHUTDOWN,EWX_POWEROFF再或上EWX_FORCE第二个参数就是0了二六、无title对话框的移动:void CScreenSnapDlg:OnLButtonDown(UINT nFlags, CPoint point) /实现窗体无标题移动 PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(point.x,point.y); CDialog:OnLButtonDown(nFlags, point);二七、获取操作系统版本:OSVERSIONINFO OsVersio

30、nInfo;/包含操作系统版本信息的数据结构OsVersionInfo.dwOSVersionInfoSize= sizeof(OSVERSIONINFO);GetVersionEx(&OsVersionInfo);/获取操作系统版本信息二八、设置对话框为最顶层:(在OnInitDialog中添加)SetWindowPos(&wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);二九、对话框程序不在任务栏显示:(在OnInitDialog中添加)ModifyStyleEx(WS_EX_APPWINDOW,WS_EX_TOOLWINDOW);三十、向对话框窗口添加右

31、键菜单:CMenumenu,*pmenu;menu.LoadMenu(IDR_MENU1);pmenu=menu.GetSubMenu(0);CPointptScreen(point);ClientToScreen(&ptScreen);pmenu-TrackPopupMenu(TPM_RIGHTBUTTON,ptScreen.x,ptScreen.y,this);三一、文件查找:(例查找连续的换行符)FILE *fp,*fp1;int flag=0;int ch;fp=fopen(c:test.txt,r);fp1=fopen(c:wrttest.txt,w);while(!feof(fp)

32、ch=fgetc(fp);if(feof(fp) break;if(ch=n&flag=1) continue;else if(ch=n&flag=0) flag=1;else flag=0;fputc(ch,fp1);fclose(fp1);fclose(fp);三二、托盘菜单不点击不能消失的解决办法:在菜单之后使用下述代码: CPoint pt; GetCursorPos(&pt); SetForegroundWindow(); NotifyMenu.TrackPopupMenu(TPM_RIGHTBUTTON,pt.x,pt.y,this); PostMessage(WM_NULL,0,

33、0);三三、对话框由小到大显示的动画效果:在InitDialog中增加:ShowWindow(SW_HIDE);CRect dlgRect;GetClientRect(&dlgRect);CPoint centerPoint;centerPoint.x=dlgRect.Width()/2;centerPoint.y=dlgRect.Height()/2;/得到对话框的中点坐标CRgn testrgn;this-ShowWindow(SW_HIDE);int m=GetSystemMetrics(SM_CYSIZEFRAME);/以下代码实现对话框的动态弹出for (int i=10;i= 0x

34、0500)#define IDC_HAND MAKEINTRESOURCE(32649)#endif /* WINVER = 0x0500 */三六、使应用程序启动时不自动创建新文档在默认情况下,用AppWizard开发的SDI/MDI应用程序在启动时创建一个新的文档。如果要使应用程序在启动时不创建新文档,只需在应用类 CmyApp:InitInstance()函数的ProcessShellCommand调用前加上下面的语句就可以了:cmdInfo.m_nShellCommand = CComandLineInfo:FileNothing;三七、播放mp3: CFileDialog file(

35、true); if(file.DoModal()=IDOK) CString filename=file.GetFileName(); if(hwnd!=NULL) MCIWndDestroy(hwnd); hwnd=MCIWndCreate(this-m_hWnd,NULL,MCIWNDF_NOPLAYBAR,filename); :ShowWindow(hwnd,SW_HIDE); MCIWndSetVolume(hwnd,1000); MCIWndPlay(hwnd); 三八、获取屏幕RGB值:OnTimer中添加CPoint pos;GetCursorPos(&pos);/获取鼠标坐标

36、HDC hDC = :GetDC(NULL);COLORREF clr = :GetPixel(hDC, pos.x, pos.y); CString ClrText;ClrText.Format(R:%d G:%d B:%d,GetRvalue(clr),GetGvalue(clr),GetBvalue(clr);三九、打开一个网址:打开url/url这个站点如下:ShellExecute(NULL, open, ,NULL, NULL, SW_MAXIMIZE );此命令将以默认浏览器打开urlhttp:/

37、/url,并将加开后的窗口最大化。又例:ShellExecute(NULL, open, IEXPLORE.exe url/url,NULL, NULL, SW_MAXIMIZE );此命令将直接用IE打开一个sina的站点。不过将开一个新的窗口。四十、位图按钮:CButton *pRadio = (CButton*)GetDlgItem(IDC_RADIO);pRadio-SetBitmap(:LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP);

38、设计图片 IPicture *pPic; IStream *pStm; CFileStatus fstatus; CFile file; LONG cb; if (file.Open( c:test.gif ,CFile:modeRead)&file.GetStatus( c:test.gif , fstatus)& (cb = fstatus.m_size) != -1) HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, cb); LPVOID pvData = NULL; if (hGlobal != NULL) if (pvData = Globa

39、lLock(hGlobal) != NULL) file.ReadHuge(pvData, cb); GlobalUnlock(hGlobal); CreateStreamOnHGlobal(hGlobal, TRUE, &pStm); if(SUCCEEDED(OleLoadPicture(pStm,fstatus.m_size,TRUE,IID_IPicture,(LPVOID*)&pPic) OLE_XSIZE_HIMETRIC hmWidth; OLE_YSIZE_HIMETRIC hmHeight; pPic- get_Width(&hmWidth); pPic- get_Heigh

40、t(&hmHeight); double fX,fY; fX = (double)pDC- GetDeviceCaps(HORZRES)*(double)hmWidth/(double)pDC- GetDeviceCaps(HORZSIZE)*100.0); fY = (double)pDC- GetDeviceCaps(VERTRES)*(double)hmHeight/(double)pDC- GetDeviceCaps(VERTSIZE)*100.0); if(FAILED(pPic- Render(*pDC,0,0,(DWORD)fX,(DWORD)fY,0,hmHeight,hmWidth,-hmHeight,NULL) /if(FAILED(pPic- R

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论