windows编程复习纲要.ppt

  1. 1、本文档共48页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * 解决方法2——使用推内存 把对话框对象定义为指针,在堆上分配内存。 void CMainFrame ::OnTest() { CMyDialog* pDlg = new CMyDialog; pDlg-Create(IDD_DIALOG1, this); pDlg-ShowWindow(SW_SHOW); } 注意:该程序存在问题。由于没有办法释放这个指针变量所指向的那块内存,会出现内存泄漏~! 消除内存泄漏的办法:1.指针变量定义成全局变量;或者 2.重载对话框的PostNcDestroy函数,添加代码 delete this. 创建非模式对话框 * * 利用GetDlgItem改变控件文本内容 void CMyDialog::OnNumber1() { CString str; GetDlgItem(IDC_NUMBER1)-GetWindowText(str); if (str == Number1:) GetDlgItem(IDC_NUMBER1)-SetWindowText(数值1:); else GetDlgItem(IDC_NUMBER1)-SetWindowText(Number1:); } 注意:静态文本框在默认状态下是不发送通告消息的。改变这一默认状态,必须在属性窗口选中Notify这个选项。 访问控件的七种方法 * * 在窗口创建之前更改 更改窗口大小、标题、风格 如果希望在应用程序窗口创建之前修改它的大小、标题和风格,应该在CMainFrame类的PreCreateWindow成员函数进行。 该函数有个类型是CREATESTRUCT结构的参数,如果在修改了这个参数中的成员变量的值,那么这种改变会反映到MFC底层代码中,当MFC底层代码调用CreateWindowEx函数去创建窗口时,它就会使用改变后的参数值去创建这个窗口。 * * 在窗口创建之后更改其风格 在应用程序窗口创建之后修改它的风格属性,可在CMainFrame类的ONCreate函数中调用SetWindowLong函数实现。 SetWindowLong(HWND hWnd, int nIndex, LONG dwNewLong) 该函数的作用是改变制定窗口的属性(包括设置新的窗口风格、设置新的窗口过程、设置新的应用程序实例局柄等)。要改变窗口的风格,则将该函数的第二个参数指定为GWL_STYLE,然后由第三个参数指定新的窗口风格。 更改窗口大小、标题、风格 * * 在窗口创建之后更改 更改光标、标题栏图标、窗口背景 要在应用程序窗口创建之后修改它的光标、图标和背景,可在OnCreate函数中调用SetClassLong函数实现。 SetClassLong(HWND hWnd, int nIndex, LONG dwNewLong) 该函数的作用是:重新设置指定窗口所属窗口类的WNDCLASS结构体中指定数据成员的属性(包括设置新的窗口背景画刷、光标、图标和窗口类样式)。 * * 注意事项 更改光标、标题栏图标、窗口背景 在MFC中,如果要修改应用程序窗口的图标,则应该框架类中进行,因为框架窗口才有标题栏;如果要修改程序窗口的背景和光标,则应该在视类中进行。 * * 程序与进程(简答) 进程与线程 程序:计算机指令的集合,它以文件的形式存储在磁盘上。 进程:通常被定义为一个正在运行的程序的实例,是一个程序在其自身的地址空间中的一次执行活动。 进程是活的,是资源申请、调度和独立运行的单位,因此,它使用系统中的运行资源;而程序是死的,它不占用系统的运行资源。 * * 进程与线程 进程与线程 进程是不活泼的。进程从来不执行任何东西,它只是线程的容器。若要使进程完成某项操作,它必须拥有一个在它的环境中运行的线程,此线程负责执行包含在进程的地址空间中的代码。 单个进程可能包含若干个线程,这些线程都“同时” 执行进程地址空间中的代码。 每个进程至少拥有一个线程,来执行进程的地址空间中的代码。当创建一个进程时,操作系统会自动创建这个进程的第一个线程,称为主线程。此后,该线程可以创建其他的线程。 * * 获得互斥对象所有权 利用互斥对象实现线程同步 线程必须主动请求共享对象的使用权才能获得该所有权,这可以通过调用WaitForSingleObject函数实现。 DWORD WatiForSingleObject(HANDLE hHandle, DWORD dwMillisecond); HANDLE hHandle 所请求对象的句柄。本例为互斥对象句柄:hMu

文档评论(0)

wuyoujun92 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档