获得桌面所有窗口句柄的方法总结

小草范文网  发布于:2017-05-09  分类: 其他工作总结 手机版

篇一:Windows系统窗口管理详解

双击代码全选

1 #include <MYDLG.H>

2 HWND g_wnd;

3 UINT g_uMsgXXX;

4 Void CreateMyDlg(HWND hwnd)

5 {

6 ??

7 If(g_wnd)

8 {

9hwnd.EnableWindow(FALSE);

10 }

11 {

12 Void OnFinishTask(Hwnd hwnd)

13 {

14 ??

15 hwnd.EnableWindow(TRUE);

16 DestroyWindow(g_hwnd);

17 g_hwnd = NULL;

18 }</MYDLG.H>

双击代码全选

1 void OnChar(HWND hwnd, TCHAR ch, int cRepeat)

2 {

3 Switch(ch)

4 {

5 case ‘ ‘:

6MessageBox(NULL, TEXT(”Title”), MB_OK);

7if(!IsWindow(hwnd)) MessageBeep(-1);

8break;

9 }

10 }

双击代码全选

1

双击代码全选

1 BOOL Function(void)

2 {

3 MSG msg;

4 BOOL fResuit = TRUE;//假设模态循环已经开始工作

5 while(!SomethingFinished())

6 {

7If(GetMessage(&msg, NULL, 0, 0)

8{

9 TranslateMessage(&msg);

10 DispatchMessage(&msg);

11}

12else

13{

14 PostQuitMessage(msg.wparam);

15 fResult = FALSE;

16 break;

17}

18 }

19 return fResult;

20}

篇二:课后习题答案

第一章习题 参考答案

1. 简述项目和解决方案的概念和区别,项目中常见的文件有哪些?各代表什么意义? 答:Visual Studio提供了两类容器,有效地管理开发工作所需的项,如引用、数据连接、文件夹和文件。这两类容器分别叫做解决方案和项目。创建新项目时,Visual Studio 默认会自动生成一个解决方案。然后,可以根据需要将其它项目添加到该解决方案中。解决方案资源管理器提供整个解决方案的图形视图,开发应用程序时,该视图可管理解决方案中的项目和文件。

项目中常见的文件包括:Solname.sln:在开发环境中使用的解决方案文件,它将一个或多个项目的所有元素组织到单个的解决方案中,此文件存储在父项目录中。Projname.suo:在开发环境中使用的解决方案选项文件,它存储为解决方案创建的所有用户选项,以便每次打开项目的解决方案时,它都具有所需的外观并包含所有选择的自定义设置,此文件存储在父项目目录中。Projname.vcproj:开发环境中使用的项目文件,以前的版本中为 Projname.dsp,存储项目的专用信息,每个项目都有一个单独的.vcproj 文件。此文件存储在父项目目录中。Projname.idl:包含类型库的接口说明语言源代码的文件,使用此文件生成类型库,生成的库向其它自动化客户端公开控件的接口。

Projname.ncb:非编译浏览器文件,它包含分析器生成的由类视图使用的信息,如果此文件被无意间或故意删除,将自动重新生成它。

2. Visual C++ .NET发展历程哪些阶段?

答:Visual C++ .NET的发展大致经历了如下的几个阶段:

第一阶段:Visual C++ 1.0和Visual C++ 1.5,这两个版本主要用于开发16位应用程序,对应的平台是以DOS和Win3.x为代表的操作系统。

第二阶段:主要包括Visual C++ 2.x、Visual C++ 4.x、Visual C++ 5.x、Visual C++ 6.x。其中,Visual C++ 2.x可以说是Visual C++系列产品中称得上变革的版本之一,在这个版本的Visual C++中,提供了著名的MFC来封装Win32 SDK。

第三阶段:Visual C++ .NET。随着2000年6月微软.NET战略的实施,.NET Framework软件框架结构的建立,一个平台的变革已经来临了。

3. 概述Visual Studio 2005集成开发环境中各主要窗口的功能。

答:解决方案资源管理器提供项目及其文件的有组织的视图,并且提供对项目和文件相关命令的便捷访问。类视图用于显示正在开发的应用程序中定义、引用或调用的符号。资源视图显示项目中包含的资源文件。对象浏览器可以选择和检查可用于项目的符号。输出窗口可显示集成开发环境(IDE)中各种功能的状态消息。工具箱显示可以被添加到 Visual Studio 项目中的各项控件的图标。项目属性页是 Visual Studio 用户界面元素,允许为项目指定和应用项目设置。

4. 概述.NET框架的主要结构。

答:.NET框架的主要结构如下图所示。

公共语言运行库(Common Language Runtime,CLR):负责满足此组件在其它组件上可能具有的依赖项外,还负责管理内存分配、启动和停止线程和进程,以及强制执行安全策略。基础类库:该框架为开发人员提供了统一的、面向对象的、分层的和可扩展的类库集。通用类型系统(Common Type System,CTS):定义了一组语言编译器必须遵循的规则,以定义、引用、使用和存储引用类型和值类型,用于数据类型统一。

5. 利用Visual C++ .NET可以创建哪些项目类型?

答:Visual C++ .NET包含CLR、MFC、ATL、Win32、常规和智能设备五种项目类型的项目模板或应用程序向导。

? CLR项目模板包括:ASP.NET Web 服务模板(C++)、类库模板(C++)、CLR

控制台应用程序模板(C++)、CLR空项目模板(C++)、SQL Server项目、Windows 控件库模板 (C++)、Windows窗体应用程序模板和Windows服务模板(C++); ATL项目模板包括:ATL项目、ATL Server项目和ATL Server Web服务;

MFC项目模板包括:MFC ActiveX控件、MFC应用程序和MFC DLL;

Win32项目模板包括:Win32控制台项目和Win32项目;

常规项目模板包括:自定义向导、空项目和生成文件项目;

智能设备项目模板包括:ATL智能设备项目、MFC智能设备ActiveX控件、MFC? ? ? ? ?

智能设备DLL、MFC智能设备应用程序和Win32智能设备项目。

6. 什么是断点?如何向应用程序中添加断点?怎样一次性清除应用程序中所有的断点?

在应用程序的调试过程中,如何查看变量的值?

答:断点通知调试器应在某点上中断应用程序并暂停执行,发生中断时,则称程序和调试器处于中断模式。在源窗口中,单击要设置断点的那行可执行代码,在快捷菜单中,转到“断点”,然后选择“插入断点”,即可插入断点,断点所在的行即出现红色圆圈。转到断点,然后选择“删除断点”,即可删除断点。可以通过快速监视来查看变量值,在调试程序时通过选择“调试”,选择“快速监视”打开快速监视对话框,在表达式栏输入需要计算的表达式即可查看变量或表达式的值。

7. 简述调试程序中的使用的F5、F9、F10、F11和Shift+F11这几个键的使用?

答:F5:调试运行。F9:在当前行插入断点。F10:单步骤调试。F11:按逐行运行。Shift+F11:程序会跳出当前过程。

8. 新建一个单文档应用程序,该程序的标题为“第一个Visual C++ .NET程序”,并在屏

幕中央绘制奥运会五环旗,练习调试程序技巧。

答:创建MFC单文档程序,在OnDraw函数中选择不同颜色画笔进行绘制。

9. 如何向一个MFC程序中添加基于MFC的类?如何添加一个C++类?

答:选择“视图类”窗口,右键单击,选择“添加”?“类”,在类别中选择“MFC”,

在模板中选择“MFC”,单击“添加”,输入新建的类的相关信息单击“完成”即可。

第2章 C++基础知识

1. 面向对象技术方法的基本思想是什么?其基本特征是什么?

答:面向对象方法的基本思想是,从现实世界中客观存在的事物(即对象)出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式。

面向对象方法更强调运用人类在日常认识客观世界时的逻辑思维方法和过程,例如抽象、分类、封装、聚合、继承等等。

2. 简述C++中类是如何定义的?类中包含的数据成员和成员函数如何定义的?在类内定义成员函数和类外定义成员函数的区别有哪些?

答:类声明的形式

class 类名

{

private:

私有成员变量或成员函数

protected:

保护成员变量或成员函数

public:

公有成员变量或成员函数

};

数据成员的声明形式:

数据类型 数据成员名;

函数成员的声明形式:

函数类型 函数名(形参表);

类的成员函数的实现即具体定义该成员函数的函数体,有两种方式:一是在类内声明时同时实现,另一种是在类内声明函数原型、在类外实现。

(1)类内实现的格式

函数类型 函数名(形参表)

{

函数体

}

(2)类外实现的格式

函数类型 类名∷函数名(形参表)

{

??//函数体

}

其中“类名∷”指定该成员函数的类属。为保持类说明的代码简洁、方便阅读,建议将类的成员函数,尤其是函数体代码较长的函数成员以第2种方式加以实现。

在类内直接实现的成员函数将自动地被作为内联函数处理(违反内联精神的函数除外),在类外实现的成员函数,可以通过将类内的原型声明前加inline修饰,显式地将其说明为内联函数。

3. 类中的成员有哪几种访问属性?各有什么作用?

答:类中的成员变量或成员函数之前的private、protected和public,代表这个成员的访问控制权限。private成员表示此成员只能被本类的其它成员函数访问,protected成员表示此成员只能被本类或其派生类的成员函数访问,public成员表示此成员的访问不受限制。

4. 对象是什么?如何创建对象?构造函数和析构函数的作用是什么,有哪些特殊之处? 答:类的具体的实例,称为对象。

C++语言中对象的定义格式为:

类名 对象名;

类名 对象名(参数表);

构造函数是一种特殊的成员函数,必须被声明为公有成员,其作用是为类的对象分配内存空间,进行数据成员的初始化。

? 对象创建时,系统会自动地调用构造函数完成对象内存空间的分配和初始化工作。 按不同的用户自定义构造方式,构造函数可以重载为多个,其中有一个比较特殊的构造函数——拷贝构造函数,它是以同类已有对象为新构造的对象初始化,当对象间进行赋值运算、以类对象作

获得桌面所有窗口句柄的方法总结

为函数的参数或返回值时,将调用拷贝构造函数,若用户未定义,它也将由系统自动生成。类中有指针型成员时,默认的拷贝构造会造成拷贝构造出的对象共享原对象的该指针型成员的空间,使用时应注意。

析构函数也是一种特殊的成员函数,也被声明为公有成员,作用是释放分配给对象的内存空间,并做一些善后工作。析构函数的性质:

? 析构函数的名字必须与类名相同,且在名字的前面要“~”;

? 析构函数没有参数,没有返回值,不能重载,在一个类中只能有一个析构函数; ? 析构函数也可以访问类的所有成员;

? 析构函数可以是虚函数;

? 当撤销对象时,系统会自动调用析构函数完成占用空间的释放和善后工作,将内存空间的使用权交还给操作系统。

5. 面向对象中继承的作用是什么?在C++如何支持集成机制?

答:继承是C++语言的面向对象思想的一种机制,是面向对象程序设计的关键技术之一。该机制自动地为一个类提供来自另一个类的操作和数据,这使得程序员只需在新类中定义已有类中没有的成分来建立新类,使得已有代码的利用率和程序员的工作效率都得到提高。 在C++语言中,继承具体是指新的类可以直接获得已有类的数据成员和函数成员的而不必重复定义它们。新类称为派生类或子类,原有类称为基类或父类。派生类继承基类的属性和方法。派生类也声明了新的属性和新的方法,剔除了那些不适合于其用途的继承下来的操作。这样,派生类可以重用基类的代码,专注于为派生类编写新代码。减少了编程的工作量,实现代码复用。

6. 派生类的构造过程和析构过程如何?如何定义派生类的构造函数?

答:派生类不继承基类的构造函数,因此,派生类的构造函数既要支持自己新增数据成员的初始化还要支持基类继承来的数据成员的初始化,其执行顺序是先基类部分再派生类自身。派生类析构函数的功能与基类析构函数的功能一样,也是在对象撤销时进行必需的清理善后工作。析构函数不能被继承,如果需要,则要在派生类中重新定义。与基类的析构函数一样,派生类的析构函数也没有数据类型和参数。派生类析构函数只需完成对派生类新增成员的清理和善后即可,基类的清理善后工作系统会自动调用其析构函数来完成可,其执行顺序是先派生类再基类。

派生类的构造函数的定义形式为:

派生类名(参数1, 参数2, ?, 参数n-1,参数n) : 基类名(参数1, 参数2, ?)

{

派生类新增成员1= 参数n-1;

派生类新增成员2= 参数n;

}

7. C++中的多态有哪些?虚函数的动态性如何体现的?

答:运行时多态(虚函数多态)与编译时多态(重载函数多态)。

在继承关系的类族体系中,允许用基类的指针指向派生类对象或用派生类对象来初始化基类的引用,这种情况称为赋值兼容,赋值兼容使得类的访问更加灵活,由于基类与派生类间的兼容性赋值出现在程序运行时,因此要解决这种运行时多态问题使用了虚函数机制。在基类中使用基类的虚成员函数与普通成员函数是一致的,但派生类对待二者就不同了,基类中的普通函数是接口和实现一起被派生类继承,而虚函数仅是接口部分被继承,其实现是在派生类中重新定义的。

8. 设计日期类Date,包含年、月、日3个数据成员以及构造函数、析构函数和其它成员函数,并在主函数中创建对象完成测试。

答:class Date

{

public:

Date(int xy,int xm,int xd);

~Date(void);

void SetYear(int xy)

{

year=xy;

}

int GetYear()

{

return year;

}

private:

int year,month,day;

};

Date::Date(int xy, int xm, int xd)

{

year=xy; month=xm; day=xd;

}

主程序略

9. 设计一个钟表类Clock,该类有Hour,Minute,Second三个数据成员分别用来表示时分秒,两个成员函数SetTime, ShowTime分别用来设置时间和显示时间。并设计一个主函数进行测试。

答:仿照上题

10. MFC中有哪些模版类?各有什么作用?

答:MFC对C++中的STL进行了再次封装,形成了一系列的木板类,例如CList、CArray、CMap等,其意义也类似。

篇三:多种方式弹出小窗口

window.open()支持环境:JavaScript1.0+/JScript1.0+/Nav2+/IE3+/Opera3+

二、基本语法:

window.open(pageURL,name,parameters)

其中:

pageURL 为子窗口路径

name 为子窗口句柄

parameters 为窗口参数(各参数用逗号分隔)

三、示例:

<SCRIPT>

<!--

resizable=no,location=no, status=no?)

//写成一行

-->

</SCRIPT>

脚本运行后,page.html将在新窗体newwindow中打开,宽为100,高为400,距屏顶0象素,屏左0象素,无工具条,无菜单条,无滚动条,不可调整大小,无地址栏,无状态栏。

上例中涉及的为常用的几个参数,除此以外还有很多其他参数,请见四。

四、各项参数

其中yes/no也可使用1/0;pixel value为具体的数值,单位象素。

参数 | 取值范围 | 说明

| |

alwaysLowered | yes/no | 指定窗口隐藏在所有窗口之后

alwaysRaised | yes/no | 指定窗口悬浮在所有窗口之上

depended | yes/no | 是否和父窗口同时关闭

directories | yes/no | Nav2和3的目录栏是否可见

height | pixel value | 窗口高度

hotkeys | yes/no | 在没菜单栏的窗口中设安全退出热键

innerHeight | pixel value | 窗口中文档的像素高度

innerWidth | pixel value | 窗口中文档的像素宽度

location | yes/no | 位置栏是否可见

menubar | yes/no | 菜单栏是否可见

outerHeight | pixel value | 设定窗口(包括装饰边框)的像素高度

outerWidth | pixel value | 设定窗口(包括装饰边框)的像素宽度

resizable | yes/no | 窗口大小是否可调整

screenX | pixel value | 窗口距屏幕左边界的像素长度

screenY | pixel value | 窗口距屏幕上边界的像素长度

scrollbars | yes/no | 窗口是否可有滚动栏

titlebar | yes/no | 窗口题目栏是否可见

toolbar | yes/no | 窗口工具栏是否可见 window.open (?page.html?,?newwindow?,?height=100,width=400,top=0,left=0,toolbar=no,menubar=no,scrollbars=no,

Width | pixel value | 窗口的像素宽度

z-look | yes/no | 窗口被激活后是否浮在其它窗口之上

window.c使用手册!

基本介绍:

showModalDialog() (IE 4+ 支持)

showModelessDialog() (IE 5+ 支持)

window.showModalDialog()方法用来创建一个显示HTML内容的模态对话框。

window.showModelessDialog()方法用来创建一个显示HTML内容的非模态对话框。

使用方法:

vReturnValue = window.showModalDialog(sURL [, vArguments] [,sFeatures])

vReturnValue = window.showModelessDialog(sURL [, vArguments] [,sFeatures])

参数说明:

sURL--

必选参数,类型:字符串。用来指定对话框要显示的文档的URL。

vArguments--

可选参数,类型:变体。用来向对话框传递参数。传递的参数类型不限,包括数组等。对话框通过window.dialogArguments来取得传递进来的参数。

sFeatures--

可选参数,类型:字符串。用来描述对话框的外观等信息,可以使用以下的一个或几个,用分号“;”隔开。

1.dialogHeight :对话框高度,不小于100px,IE4中dialogHeight 和 dialogWidth 默认的单位是em,而IE5中是px,为方便其见,在定义modal方式的对话框时,用px做单位。

2.dialogWidth: 对话框宽度。

3.dialogLeft: 离屏幕左的距离。

4.dialogTop: 离屏幕上的距离。

5.center: {yes | no | 1 | 0 }:窗口是否居中,默认yes,但仍可以指定高度和宽度。

6.help: {yes | no | 1 | 0 }:是否显示帮助按钮,默认yes。

7.resizable: {yes | no | 1 | 0 } [IE5+]:是否可被改变大小。默认no。

8.status: {yes | no | 1 | 0 } [IE5+]:是否显示状态栏。默认为yes[ Modeless]或no[Modal]。

9.scroll:{ yes | no | 1 | 0 | on | off }:指明对话框是否显示滚动条。默认为yes。

下面几个属性是用在HTA中的,在一般的网页中一般不使用。

10.dialogHide:{ yes | no | 1 | 0 | on | off }:在打印或者打印预览时对话框是否隐藏。默认为no。

11.edge:{ sunken | raised }:指明对话框的边框样式。默认为raised。

12.unadorned:{ yes | no | 1 | 0 | on | off }:默认为no。

参数传递:

1.要想对话框传递参数,是通过vArguments来进行传递的。类型不限制,对于字符串类型,最大为4096个字符。也可以传递对象,例如:

-------------------------------

parent.htm

<script>

var obj = new Object();

obj.name=“51js“;

window.showModalDialog(“modal.htm“,obj,“dialogWidth=200px;dialogHeight=100px“);

</script>

modal.htm

<script>

var obj = window.dialogArguments

alert(“您传递的参数为:“ + obj.name)

</script>

-------------------------------

2.可以通过window.returnValue向打开对话框的窗口返回信息,当然也可以是对象。例如:------------------------------

parent.htm

<script>

str =window.showModalDialog(“modal.htm“,,“dialogWidth=200px;dialogHeight=100px“);

alert(str);

</script>

modal.htm

<script>

window.returnValue=““;

</script>

【1、最基本的弹出窗口代码】

其实代码非常简单:

<SCRIPT LANGUAGE=“javascript“>

<!--

window.open (?page.html?)

-->

</SCRIPT>

因为着是一段javascripts代码,所以它们应该放在<SCRIPT LANGUAGE=“javascript“>标签和</script>之间。<!-- 和 -->是对一些版本低的浏览器起作用,在这些老浏览器中不会将标签中的代码作为文本显示出来。要养成这个好习惯啊。

window.open (?page.html?) 用于控制弹出新的窗口page.html,如果page.html不与主窗口在同一路径下,前面应写明路径,绝对路径(http://)和相对路径(../)均可。用单引号和双引号都可以,只是不要混用。这一段代码可以加入HTML的任意位置,<head>和</head>之间可以,<body>间</body>也可以,越前越早执行,尤其是页面代码长,又想使页面早点弹出就尽量往前放。

【2、经过设置后的弹出窗口】

下面再说一说弹出窗口的设置。只要再往上面的代码中加一点东西就可以了。

我们来定制这个弹出的窗口的外观,尺寸大小,弹出的位置以适应该页面的具体情况。

<SCRIPT LANGUAGE=“javascript“>

<!--

window.open (?page.html?, ?newwindow?, ?height=100, width=400, top=0,left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no?)

//写成一行

-->

</SCRIPT>

参数解释:

<SCRIPT LANGUAGE=“javascript“> js脚本开始;

window.open 弹出新窗口的命令;

?page.html? 弹出窗口的文件名;

?newwindow? 弹出窗口的名字(不是文件名),非必须,可用空??代替;

height=100 窗口高度;

width=400 窗口宽度;

top=0 窗口距离屏幕上方的象素值;

left=0 窗口距离屏幕左侧的象素值;

toolbar=no 是否显示工具栏,yes为显示;

menubar,scrollbars 表示菜单栏和滚动栏。

resizable=no 是否允许改变窗口大小,yes为允许;

location=no 是否显示地址栏,yes为允许;

status=no 是否显示状态栏内的信息(通常是文件已经打开),yes为允许;

</SCRIPT> js脚本结束

【3、用函数控制弹出窗口】

下面是一个完整的代码。

<html>

<head>

<script LANGUAGE=“JavaScript“>

<!--

function openwin() { window.open (“page.html“, “newwindow“, “height=100, width=400, toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no“)

//写成一行

}

//-->

</script>

</head>

<body onload=“openwin()“>

...任意的页面内容...

</body>

</html>

这里定义了一个函数openwin(),函数内容就是打开一个窗口。在调用它之前没有任何用途。怎么调用呢?

方法一:<body onload=“openwin()“> 浏览器读页面时弹出窗口;

方法二:<body onunload=“openwin()“> 浏览器离开页面时弹出窗口;

方法三:用一个连接调用:

<a href=../../“#“ onclick=“openwin()“>打开一个窗口</a>

注意:使用的“#”是虚连接。

方法四:用一个按钮调用:

<input type=“button“ onclick=“openwin()“ value=“打开窗口“>

【4、同时弹出2个窗口】

对源代码稍微改动一下:

<script LANGUAGE=“JavaScript“>

<!--

function openwin()

{ window.open (“page.html“, “newwindow“, “height=100, width=100, top=0,left=0,toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no“)

//写成一行

window.open (“page2.html“, “newwindow2“, “height=100, width=100, top=100, left=100,toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no“)

//写成一行

}

//-->

</script>

为避免弹出的2个窗口覆盖,用top和left控制一下弹出的位置不要相互覆盖即可。最后用上面说过的四种方法调用即可。

注意:2个窗口的name(newwindows和newwindow2)不要相同,或者干脆全部为空。OK?

【5、主窗口打开文件1.htm,同时弹出小窗口page.html】

如下代码加入主窗口<head>区:

<script language=“javascript“>

<!--

function openwin()

{window.open(“page.html“,““,“width=200,height=200“)

}

//-->

</script>

加入<body>区:

<a href=../../“/blog/1.htm“ onclick=“openwin()“>open</a>即可。

【6、弹出的窗口之定时关闭控制】

下面我们再对弹出的窗口进行一些控制,效果就更好了。如果我们再将一小段代码加入弹出的页面(注意是加入到page.html的HTML中,可不是主页面中,否则...),让它10秒后自动关闭是不是更酷了?

本文已影响