120页VC++编程通用技巧范例大全 2011最新版 适用VC6-VC2010_第1页
120页VC++编程通用技巧范例大全 2011最新版 适用VC6-VC2010_第2页
120页VC++编程通用技巧范例大全 2011最新版 适用VC6-VC2010_第3页
120页VC++编程通用技巧范例大全 2011最新版 适用VC6-VC2010_第4页
120页VC++编程通用技巧范例大全 2011最新版 适用VC6-VC2010_第5页
已阅读5页,还剩118页未读 继续免费阅读

下载本文档

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

文档简介

1、120页VC+通用技巧范例大全 2011最新版 (适用于VC6-VC2010)VC高手群 (QQ群号: 2997669) 十五年VC技术探索历程 欢迎您加入!经典VC编程网站7设置窗口最大最小7设置窗口标题7去掉主菜单7修改应用程序图标7系统只能允许一个程序运行7在状态栏中添加时间7研究调用存储过程8得到本机的IP地址9vc调用chm文件10最高窗口的实现10防止Edit框中的Password不保密11在同一系统中显示GB字符和BIG5字符12改变颜色(整个窗体的控件)12改变工程表头栏13如何找开一个DiaLog的窗口13得到系统中设置的窗口颜色14如何让点下去的菜单成为V状态14如何调用W

2、INDOWS的颜色板14如何产生一个MDI的主窗口14如何让一个文本控件显示出值15如何让一个控件显示出相应的值15在调试中怎么样MESSAGEBOX一个数字16如何控制控件的焦点16如何对析构函数中对象进行释放16如何关闭一个模态窗口17如何将一个提示的声音发到声卡上17如何得到打开exe的带的参数17如何在框架上建立一个工具条17如何生成一个主窗口下方的状态条18如何让Cscrollview类中控制其可以流动区域大小18MFC中控件的一些基本控制方法19如何让一个数字型变量化为字符型变量19如何使用“拉动条”,“上下选择”19如何使用postmessage来异步触发某事件21如何使用Sen

3、dmessage来异步触发某事件21如何修改父类的相关控件属性22如何在程序中得到控件的名22如何控制菜单的事件程序22如何使用控件中的数据录入的控制属性23哪些函数是文档、视图相互处理用的23如何建立一个基于对话框一程序23如何建立一个线程24如何让窗口产生一个图标(从应用程序资源中取出)24如何得到一个edit的录入的值24如何启动TIMER事件24如何使用ctrllist控件实现表格25如何从INI文件中得到值25如何将图标文件写到窗口中25如何得到本机的IP地址26如何使用全局变量26如何让一个字符加上回车、换行26如何定义、使用结构26如何在任意程序中显示MessageBox27如何

4、在程序判断出debug状态27当对话框中有一个滚动条是,当滚动滚动条时的消息控制函数27将CWnd指针转换成控件ID(整数)(注意:GetDlgItem()是从控件ID转换成CWnd的指针)28如果在对话框中自定义一个消息的方法,假设对话框名为CXX28消息传递29在一个函数引用另外的一个对话框29全局函数的申明问题29在应用程序中*APP.CPP中的InitInstance()的事件29给执行文件加一个图标30如何在全局函数中通过传入的窗口句柄操作窗口30如何使桌面文字背景透明?30怎样才能在VC里产生一个唯一的字符串30如何隐藏进程(在系统状态栏和进程列表里不可见)31如何得到一个确定大小

5、的视?31如何实现点击窗口任意地方拖动窗口?32如何在启动时阻止MDI应用程序创建一个新文档?32如何在多文档MFC程序中制作独立的File|New菜单?33如何检测视是否处于分割状态?34如何使程序保持极小状态?34如何确定当前进程实例是否为唯一实例?34如何向一个文档附加多个视?35如何获得文件的图标、属性、大小、类型等参数?36如何得到鼠标下面的窗口?37设置鼠标的形状37在对话框中设置编辑EDIT的值371. 如何获取应用程序的实例句柄?382. 如何通过代码获得应用程序主窗口的指针?383. 如何在程序中获得其他程序的图标?384. 如何编程结束应用程序?如何编程控制windows的

6、重新引导?385.怎样加载其他的应用程序?396. 确定应用程序的路径397. 获得各种目录信息398. 如何自定义消息409. 如何改变窗口的图标?4010. 如何改变窗口的 缺省风格?4011. 如何将窗口居中显示?4012. 如何让窗口和 MDI窗口一启动就最大化和最小化?4013. 如何使程序保持极小状态?4114. 如何限制窗口的 大小?4115. 如何使窗口不可见?4116. 如何使窗口始终在最前方?4117、如何创建一个字回绕的CEditView4118、通用控件的显示窗口4219、移动窗口4220、重置窗口的大小4221、如何单击除了窗口标题栏以外的区域使窗口移动4222、如何

7、改变视窗的背景颜色4323、如何改变窗口标题4424、如何防止主框窗口在其说明中显示活动的文档名4425、如何获取有关窗口正在处理的当前消息的信息4426、如何创建一个不规则形状的窗口4527、如何在代码中获取工具条和状态条的指针4728、如何使能和禁止工具条的工具提示4729、如何设置工具条标题4730、如何创建和使用无模式对话框4831、如何在对话框中显示一个位图4932、如何改变对话或窗体视窗的背景颜色4933、如何获取一个对话控件的指针5034、如何禁止和使能控件5035、如何改变控件的字体5036、如何在OLE控件中使用OLE_COLOR数据类型5137、在不使用通用文件打开对话的情

8、况下如何显示一个文件列表5138、为什么旋转按钮控件看起来倒转5139为什么旋转按钮控件不能自动地更新它下面的编辑控件5240、如何用位图显示下压按钮5241、如何一个创建三态下压按钮5242、如何动态创建控件5243、如何限制编辑框中的准许字符5344、如何改变控件的颜色5445、当向列表框中添加多个项时如何防止闪烁5546、如何向编辑控件中添加文本5547、如何访问预定义的GDI对象5548、如何获取GDI对象的属性信息5649、如何实现一个橡皮区矩形5650、如何更新翻转背景颜色的文本5851、如何创建一个具有特定点大小的字体5852、如何计算一个串的大小5853、如何显示旋转文本595

9、4、如何正确显示包含标签字符的串6055、串太长时如何在其末尾显示一个省略号6056、如何快速地格式化一个CString对象6157、为什么即使调用EnableMenuItem菜单项后,菜单项还处于禁止状态6158、如何给系统菜单添加一个菜单项6159、如何确定顶层菜单所占据的菜单行数6260、在用户环境中如何确定系统显示元素的颜色62问:如何控制窗口框架的最大最小尺寸?62问:如何改变窗口框架的颜色?63问:如何将应用程序窗口置于屏幕正中?64问:VC6.0对VC5.0的兼容性?64问:打印和打印机的问题?64问:CRichEditCtrl滚动条的问题?65问:从数据库中读大于32k的内容?

10、65问:如何获得CRichEditCtrl中字符的位置?65问:如何限制mdi子框架最大化时的大小?66问:如何切换视口而不破坏它们?66问:改变列表控制时发生闪烁现象?68问:处理列表控件可见项的问题?68问:产生线程的问题?68问:CFile使用了缓冲区吗?69问:DAO的密码?69问:如何知道CListBox什么时候滚动了?69问:视口的不活动性如何处理?70问:如何使用COleClientItem的IDispatch接口?70问:关于用户自定义的消息使用?71问:在打开一个文档时退出?71问:在CListCtrl控件中多选择项的删除?71问:工作线程的登录状态?71问:如何控制菜单的大

11、小?72问:改变LVIS_SELECTED的状态颜色?73问:如何只存储文档的某一部分?73问:保存工具条菜单有bug吗?73问:Tip of the day的bug73问:如何让我的mfc应用程序可以在最上面?74问:如何增加视图中ActiveX控件的事件处理函数?74问:如何创建一个动态的Tree控件?75问:SDI程序开始时不打开文档?75问:List控件中整栏选择?75问:如何重载MRU文件?76问:CImageList控件中图象橙色被显示为黄色?76问:无法正确改变应用程序的图标?78问:工具条状态的问题?78问:在SDI应用程序中使用Active控件?79问:有RichEdit控件

12、的对话框无法正常显示?79问:DLL中的模板成员函数?79问:CFormView中的上下文帮助?80问:CArchive类的WriteObject函数问题?80问:RegisterWindowMessage中的BroadcastSystemMessage如何处理?80问:CListCtrl中选择变化时如何获得通知?81问:如何向ATL-COM对象传送一个数组?81问:如何选择CTreeCtrl中的节点文本进行编辑?82问:如何改变默认的光标形状?82问:如何用键盘滚动分割的视口?82问:如何在线程中处理状态条?83问:如何阻止WINDOWS关闭?83问:如何使一个按钮Disable?83问:怎

13、样从MFC扩展动态链结库(DLL)中显示一个对话框?84问:想隐藏用户界面怎么办?85问:如何实现SDI与MDI的转换?85问:CDC中的竖排文本?86问:如何激活变灰的弹出菜单?86问:线程消息?87问:TreeCtrl控制的显示速度太慢?87怎样使窗口总是浮现在最上面?88改变拖放时的光标外形?89如何定位到最新的记录上?89MVC和Doc-View?90被禁止(Disable)的控件如何改变其文本或背景色?90有ODBC的查找函数吗?90多个MRU菜单的问题91校验框类问题92CFormView类的Fold按钮93视的背景色94隐藏控件台程序94修改SDI窗口标题94焦点问题95从一个O

14、CX调用另一个OCX的方法。95得到视96字符转化时间96二进制还是文本方式?99发送消息99怎样知道菜单运行时的状态99DLL编译出错99通用控件的显示窗口100如何禁止和使能控件100如何在OLE控件中使用OLE_COLOR数据类型100在不使用通用文件打开对话的情况下如何显示一个文件列表100为什么旋转按钮控件看起来倒转100为什么旋转按钮控件不能自动地更新它下面的编辑控件101如何动态创建控件101如何显示旋转文本101在TreeList中使用Edit功能102TreeList control中使用check box102有关属性对话框(property sheet )的几个提示108

15、在MFC加入这是什么?的帮助提示111精通工具条112如何改变视窗的背景颜色112为MFC应用程序添加全屏幕显示功能112VC常用数据类型使用转换详解114用Visual C+操作INI文件117单文档加入背景图119更新窗体方法119更改窗口控件的能动和不能动(以按钮控件为例)119窗口响应键盘事件120密码框输入受保护121最高窗口的实现122实现窗口动态写入汉字和改变汉字颜色形状122经典VC编程网站 设置窗口最大最小 m_pMainWnd-ShowWindow(SW_SHOWMAXIMIZED); m_pMainWnd-UpdateWindow();设置窗口标题 AfxGetMainW

16、nd ( ) - SetWindowText (_T(创智流媒体计费软件V1.0) );去掉主菜单 SetMenu(NULL);/去掉菜单修改应用程序图标 去掉程序当中ICON中标识为IDR_MAINFRAME 的图标 将自己的图标名称修改为IDR_MAINFRAME 五、提示框出现自己提示要用到MessageBox,而不是使用AfxMessageBox;系统只能允许一个程序运行 CString AppTitle; AppTitle.Format(_T(This is PowerSumFee,ReadOnly!); HANDLE m_hMutex=CreateMutex(NULL,TRUE,A

17、ppTitle); if(GetLastError()=ERROR_ALREADY_EXISTS) MessageBox(NULL,_T(该程序已经在运行!),_T(错误!),MB_OK|MB_ICONSTOP);return FALSE;在状态栏中添加时间1)在String Table中添加New String,在此定义为ID_INDICATOR_CLOCK,将其Caption设为00:00:00(由于状态栏根据Caption确定时间窗格的缺省宽度,使用此值将为时间的显示预留空间)。注2)在MainFrm.cpp中indicators声明处添加ID_INDICATOR_CLOCK,代码如下:

18、这一步中ID_INDICATOR_CLOCK的插入位置将影响时间窗格在状态栏中的显示位置。3)安装定时器:在MainFrm.cpp中OnCreate函数处添加代码如下:int CMainFrame:OnCreate(LPCREATESTRUCT lpCreateStruct) SetTimer(1,1000,NULL);安装定时器,并将其时间间隔设为1000毫秒return 0;4)编写时间处理函数:利用ClassWizard为CMainFrame类加入WM_TIMER的消息处理函数OnTimer,并添加代码如下:void CMainFrame:OnTimer(UINT nIDEvent) T

19、ODO: Add your message handler code here andor call defaultCTime time;time=CTime:GetCurrentTime();得到当前时间CString s=time.Format(H:M:S);转换时间格式,这里格式一定要大写m_wndStatusBar.SetPaneText(m_wndStatusBar.CommandToIndex(ID_INDICATOR_CLOCK),s); 显示时钟CFrameWnd:OnTimer(nIDEvent);5)销毁定时器:利用ClassWizard为CMainFrame类加入WM_C

20、LOSE的消息处理函数OnClose,并添加代码如下:void CMainFrame:OnClose() TODO: Add your message handler code here andor call defaultKillTimer(1);销毁定时器研究调用存储过程/建立自己的commmand指针和记录集对象_CommandPtr CmdPriv; / command object pointer_RecordsetPtr m_pCmdRs;/记录集对象指针 _bstr_t bstrProc =( LPRO_JudgeNo ); /Stored procedure name _var

21、iant_t vtUserName;_variant_t vtReturn; _variant_t tResult; /建立通道CmdPriv.CreateInstance( _uuidof( Command ) ); / creating command objectCmdPriv-ActiveConnection = theApp.m_pConn; / giving the connection handleCmdPriv-CommandText = _bstr_t( bstrProc ); / passing the stored procedueCmdPriv-CommandType

22、= adCmdStoredProc; / typeCmdPriv-Parameters-Release(); / passing string value as argument to stored procedure /传入参数vtUserName.vt=VT_BSTR;vtUserName.bstrVal=_bstr_t(strUserName);CmdPriv-Parameters-Append(CmdPriv-CreateParameter(_bstr_t(strUserName),adVarChar,adParamInput,sizeof(vtUserName),vtUserName

23、); vtReturn.vt=VT_I2;vtReturn.iVal=1;CmdPriv-Parameters-Append(CmdPriv-CreateParameter(_T(nReturn),adInteger,adParamOutput,sizeof(vtReturn),vtReturn); CmdPriv-put_Prepared(true);m_pCmdRs = CmdPriv-Execute( NULL,NULL,adCmdStoredProc ); / executing the stored procedure and storing the recordset valuev

24、tReturn=CmdPriv-Parameters-GetItem(nReturn)-Value;if(vtReturn.iVal!=1) AfxMessageBox(_T(%d),vtReturn.iVal); return FALSE;/vtReturn = theApp.m_pRs -Fields-GetItem( _variant_t( 0L ) )-Value; / getting the first column value of the result row return TRUE;得到本机的IP地址 CString CPowerClipInfoView:GetHostIP()

25、WORD wVersionRequested;WSADATA wsaData;int err; wVersionRequested = MAKEWORD( 2, 2 ); err = WSAStartup( wVersionRequested, &wsaData );if ( err != 0 ) /* Tell the user that we could not find a usable */* WinSock DLL. */return _T(); /* Confirm that the WinSock DLL supports 2.2.*/* Note that i

26、f the DLL supports versions greater */* than 2.2 in addition to 2.2, it will still return */* 2.2 in wVersion since that is the version we */* requested. */ if ( LOBYTE( wsaData.wVersion ) != 2 |HIBYTE( wsaData.wVersion ) != 2 ) /* Tell the user that we could not find a usable */* WinSock DLL. */WSA

27、Cleanup( );return _T(); /* The WinSock DLL is acceptable. Proceed. */ 得到本机的IP地址char HostName 50 = ;IN_ADDR hostIP;CString strHostIP;int len = 50;struct hostent * hostAddr;gethostname( HostName,len );m_sHostName = CString(HostName);theApp.theHostName = CString(HostName);hostAddr = gethostbyn

28、ame( HostName );hostIP = *( (LPIN_ADDR)*hostAddr-h_addr_list ); CString strHostIP;strHostIP.Format(_T(%d.%d.%d.%d),hostIP.S_un.S_un_b.s_b1,hostIP.S_un.S_un_b.s_b2,hostIP.S_un.S_un_b.s_b3,hostIP.S_un.S_un_b.s_b4);return strHostIP;vc调用chm文件HtmlHelp(this-m_hWnd,c:help.chm,HH_DISPLAY_TOPIC,0);加hhctrl.li

29、b,#include htmlhelp.h十一、得到系统时间CString strSysTime; CTime systemTime=CTime:GetCurrentTime(); /得到系统的具体时间 int nYear=systemTime.GetYear(); int nMonth=systemTime.GetMonth(); int nDay=systemTime.GetDay(); int nHour=systemTime.GetHour(); int nMinute=systemTime.GetMinute(); int nSecond=systemTime.GetSecond()

30、; /格式化时间字符串 strSysTime.Format(_T(%.4d-%.2d-%.2d %.2d:%.2d:%.2d),nYear,nMonth,nDay,nHour,nMinute,nSecond); return strSysTime;最高窗口的实现 最高窗口就是总浮动在其他窗口上的,不会被一般窗口遮住的窗口,最高窗口技术在编程中有着很广泛的应用。VC+中对基于SDI、MDI的运用程序,要实现最高窗口,只要在框架窗口类CMainFrame中的PreCreateWindow()函数中加入cs.dwExStyle =WS_EX_TOPMOST;即可。关于函数PreCreateWindo

31、w()及结构CREATESTRUCT的详细信息可参见VC+的联机文档。 而对基于对话框的运用程序,如何实现最高窗口却很少论及,以下便是一种实现方法。 重载要实观最高窗口的对话框的OnInitDialog()函数,方法是进入ClassWizard,在Object ID列表框中选择该对话框的ID,在Message列表框中选择WM_INITDIALOGG,单击Add Function按钮后,即对onlnitDialog函数进行了重载。再按下Edit code按钮,加入以下语句: const CWnd * pWndInsertAfter;pWndInsertAfter = &wndTopMost;Se

32、tWindowPos(pWndInsertAfter,0,0,0,0,SWP_NOSIZE | SWP_NOMOVE);函数SetWindowPos原型为BOOL SetWindowPos(const CWnd * pWndInsertAfter,int x,int y,int cx,int cy,UINT nFlags);pWndInsertAfter为指向标识窗口类型的CWnd对象的指针。 x,y为窗口左上角的坐标。 cx,cy为窗口的宽与高。nFlags确定窗口的大小及位置。当为SWP_NOSIZE时,忽略cx,cy。当为SWP_NOMOVE时,忽略x,y。 防止Edit框中的Passw

33、ord不保密 1) 创建新CEdit类 从CEdit继承一个子类CPasswordEdit, 申明全局变量g_bAuthorIdentity表明消息发送者的身份: BOOL g_bAuthorIdentity; 然后响应CWnd的虚函数DefWindowProc,在这个回调函数中进行身份验证: LRESULT CPasswordEdit:DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam) / 对Edit的内容获取必须通过以下两个消息之一 if( message = WM_GETTEXT) | ( message = EM_GETL

34、INE) / 检查是否为合法 if( !g_bAuthorIdentity) / 非法获取,显示信息 AfxMessageBox(_T(我的密码,可不能让你看哦!); / return 0; / 合法获取 g_bAuthorIdentity = FALSE; return CEdit:DefWindowProc(message, wParam, lParam); 2) 在数据输入对话框中做处理 在对话框中申明一个类成员m_edtPassword: CPasswordEdit m_edtPassword; 然后在对话框的OnInitDialog()中加入下列代码: m_edtPassword.S

35、ubclassDlgItem(IDC_EDIT_PASSWORD, this); 其目的是将控制与新类做关联。 之后在对话框的数据交换中将身份设为合法: void CDlgInput:DoDataExchange(CDataExchange* pDX) / 如果获取数据/ 注意:对于CPropertyPage类这里不需要 if( pDX- m_bSaveAndValidate) 条件 if( pDX- m_bSaveAndValidate) g_bAuthorIdentity = TRUE; CDialog:DoDataExchange(pDX); /AFX_DATA_MAP(CDlgInpu

36、t) DDX_Text(pDX, IDC_EDIT_PASSWORD, m_sPassword); /AFX_DATA_MAP在同一系统中显示GB字符和BIG5字符当前由于大陆和港台采用不同的内码,因此产生了两种常用的内码GB/BIG5。以前的软件都是利用内建的字库来完成两种内码的显示,而在这里我提供一种简便的方法用于在Windows程序中显示不同内码的文字。大家可能都注意到IE,MS Office97等软件都可以根据不同内码使用不同的字体显示而不需要平台支持。他们利用的都是MS所提供的语言开发包进行开发,下面介绍这种方法:首先你需要安装MS提供的GB和BIG5字体,(可在MS站点免费下载)。

37、然后需要修改你的显示代码,对于不同的模式装入不同的字体。这种技术的核心就是指定不同的字符集和字体名称,示范代码如下:/下面的代码将装入BIG5字体并显示CFont font;LOGFONT lf; /LOGFONT结构中的变量用于定义字体的各种特性memset(&lf,0,sizeof(lf);lf.lfCharSet = CHINESEBIG5_CHARSET; /设置字符集lf.lfHeight = 20;strcpy(lf.lfFaceName,MingLiu); /设置字体名称 MingLiu为MS提供的BIG5字体font.CreateFontIndirect(&lf); /创建字体

38、CFont* pF = (CFont*)dc.SelectObject(&font); /保存当前字体dc.TextOut(0,0,_T(what you want to display);dc.SelectObject(pF); /恢复以前的字体但是系统中安装的字体我们是不知道的,因此我们应该找出我们所需要的字体是否已经安装。Windows中的EnumFontFamiliesEx可以帮助我们。该函数的说明如下:int EnumFontFamiliesEx(HDC hdc,LPLOGFONT lpLogfont, FONTENUMPROC lpEnumFontFamExProc, LPARAM

39、 lParam,DWORD dwFlags);在调用该功能时需要在lpLogfont中设置相应的值,下面的代码表示列出所有BIG5字体。HWND hW=:GetFocus();HDC hdc=:GetDC(hW);LOGFONT lf;memset(&lf,0,sizeof(lf);lf.lfCharset = CHINESEBIG5_CHARSET; /如果该值为DEFAULT_CHARSET将会列出所有字体lf.lfFaceName = ;lf.lfPitchAndFamily = 0;EmunFontFamiliesEx(hdc,&lf,myEnumFontFamExProc,0,0);

40、同时你还需要定义一个回调函数,在每找到一种字体时该函数都将被调用。函数原型如下:int CALLBACK myEnumFontFamExProc(ENUMLOGFONTEX *lpelfe,NEWTEXTMETRICEX *lpntme, int FontType,LPARAM lParam)TRACE(font family namen,lpelfe-elfLogFont.lfFaceName);/将该字体LOGFONT或是FaceName保存到自己的数据中改变颜色(整个窗体的控件) 点击Class Wizard,给testDlg加入WM_CTLCOLOR事件,单击Edit Code按钮,然

41、后把改函数的内容替换为如下代码:HBRUSH hbr = CDialog:OnCtlColor(pDC, pWnd, nCtlColor);if (pWnd-GetDlgCtrlID() = IDC_CrdFavor_Time) pDC-SetTextColor(RGB(255, 0, 0); / TODO: Return a different brush if the default is not desiredreturn hbr;改变工程表头栏1、cs.style = WS_OVERLAPPED | WS_CAPTION |WS_THICKFRAME | WS_SYSMENU |SWP

42、_NOMOVE;cs.dwExStyle =WS_EX_TOPMOST;2、cs.style &=WS_WS_MINIMIZE&WS_MAXIMIZE;这里去掉了最大化和最小化按钮。如何找开一个DiaLog的窗口区别:CDialog(IDD_DIALOG1).Create();与CDialog(IDD_DIALOG1).DoModal();1。Create()创建的对话框是非模态,即它可以失去焦点(但仍有效),但是对话框终止时需调用DestroyWindow();在成员函数中创建的非模态对话框要注意其作用域和有效性.2。DoModal()显示一个模态对话框,在其有效期内不能失去焦点,调用OnC

43、ancel(),OnOK()返回IDOK,IDCANCEL. 例一:CDialog(IDD_DIALOG1).DoModal();其中IDD_DIALOG1为窗口名例三:其中WScoll类名WScoll *dlg;dlg = new WScoll(this);dlg-DoModal();例二:打开窗口,但是该窗口并不是模态的,但又不能让其打开多次1:定义该窗口变量CEx07aDialog* m_pDlg;m_pDlg = new CEx07aDialog(this);2:判断方该窗口是否已经存在,不存在则让其实例化if (m_pDlg-GetSafeHwnd() = 0) m_pDlg-Cre

44、ate(); /该窗口隐藏,此时效果好象是visible = flasem_pDlg-DestroyWindow();/删除该窗口delete m_pDlg;得到系统中设置的窗口颜色=dc.SetBkColor(:GetSysColor(COLOR_WINDOW);:GetSysColor(COLOR_WINDOW)为系统的设置 如何让点下去的菜单成为V状态=1:先对事件申明一个宏ON_UPDATE_COMMAND_UI(IDM_BLUE, OnUpdateColor)2:在事件中写下:void CHelloWnd:OnUpdateColor(CCmdUI* pCmdUI)pCmdUI-Set

45、Check(pCmdUI-m_nID = m_nIDColor);其中:CCmdUI只在ON_UPDATE_COMMAND_UI中才用pCmdUI-m_nID是表示用户当前点下的菜单 m_nIDColor是用户定义的菜单ID号,定义方法:UINT m_nIDColor;如何调用WINDOWS的颜色板=例一:void CHelloWnd:OnCustomColor()CColorDialog dlgColor(m_clrText);if (dlgColor.DoModal() = IDOK)m_clrText = dlgColor.GetColor();Invalidate();其中:Inval

46、idate()作用是让相应的窗口进行颜色的刷新,触发ONPAINT事件然后在该事件中写相应的语句,m_clrText为用户选择的颜色COLORREF m_clrText;如何产生一个MDI的主窗口=BOOL CTestApp:InitInstance()Enable3dControls();CTestWindow* pMainWnd = new CTestWindow;if (!pMainWnd-Create(NULL, Control Test App, WS_OVERLAPPEDWINDOW, CFrameWnd:rectDefault, NULL, MAKEINTRESOURCE(AFX

47、_IDI_STD_FRAME)/*menu*/)return FALSE;pMainWnd-m_bAutoMenuEnable = FALSE; / do manual menu enablingpMainWnd-ShowWindow(m_nCmdShow);m_pMainWnd = pMainWnd; / store in CWinApp memberreturn TRUE;其中:CTestWindow是一个标准的类产生的 class CTestWindow : public CFrameWndAFX_IDI_STD_FRAME是一个用户自己定义的菜单例二:单一的主窗口建立 CSingleD

48、ocTemplate* pDocTemplate;pDocTemplate = new CSingleDocTemplate(IDR_MAINFRAME,RUNTIME_CLASS(CEx03aDoc),RUNTIME_CLASS(CMainFrame), / main SDI frame windowRUNTIME_CLASS(CEx03aView);/其中SW_SHOW是ShowWindow函数的一个参数m_pMainWnd-ShowWindow(SW_SHOW);m_pMainWnd-UpdateWindow();如何让一个文本控件显示出值=SetDlgItemInt(IDC_NUMBEROUT, m_nNumber);其中:IDC_NUMBEROUT是一个文本控件的ID号,m_nNumber是一个数字型变量如何让一个控件显示出相应的值=例一:SetDlgItemText(IDC_STATIC_TRACK1, strText1);其中strText1是一个字符型变量 而IDC_STATIC_TRACK1可以是一个文本、一个按钮、一个EDIT等例二:IDC_STATIC_TRACK1.SetWindowText(Delete);而IDC_STATIC_TRACK

温馨提示

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

评论

0/150

提交评论