如何使用MFC(mfc程序怎么运行)

夜行书生 153 次浏览

1.LoadStringW()函数解析

LoadStringW(

_In_opt_ HINSTANCE hInstance,//实例句柄_In_UINTuID,//定义好的资源ID_Out_writes_to_(cchBufferMax,return 1) LPWSTR lpBuffer,//资源指针_In_intcchBufferMax//资源大小);

这个函数用来加载字符串:

一个应用窗口程序运行就是在一个实例中,如果运行了两个窗口的应用程序,就是两个实例。

实例句柄就是指向实例的指针。

已有的资源就已经在项目文件中了,项目文件会对资源提供ID号,我们加载的字符串就是这个资源。

缓存区指针就是对加载的资源进行存储区域的指针。

存放资源缓存区的大小就是对加载的资源进行存储区域的大小。

整个过程:对项目文件的资源(这里是指字符串,通过ID号找到)加载到实例的缓存区(通过指针加载,且指定缓存区大小)。

HINSTANCE 是句柄型数据类型。相当于装入到了内存的资源的ID。HINSTANCE对应的资源是instance.句柄实际上是一个 无符号长整数。

2.窗口类结构体WNDCLASSEX分析

typedefstruct{UINTcbSize;UINTstyle;WNDPROClpfnWndProc;intcbClsExtra;intcbWndExtra;HINSTANCEhInstance;HICONhIcon;HCURSORhCursor;HBRUSHhbrBackground;LPCTSTRlpszMenuName;LPCTSTRlpszClassName;HICONhIconSm;}WNDCLASSEX, *PWNDCLASSEX;1.cbSize WNDCLASSEX 的大小。在调用GetClassInfoEx前必须要先设置它值。我们可以用sizeof(WNDCLASSEX)来获得准确的值。2. style 窗口类的样式,它的值可以是窗口样式值的任意组合。可以有以下的值:

1. cbSize WNDCLASSEX 的大小。在调用GetClassInfoEx前必须要先设置它值。我们可以用sizeof(WNDCLASSEX)来获得准确的值。2. style 窗口类的样式,它的值可以是窗口样式值的任意组合。

CS_BYTEALIGNCLIENT窗口的客户区域以字符边界对齐,当系统调整窗口的水平位置时,客户区域的左边坐标是8的整数倍CS_BYTEALIGNWINDOW窗口以字符边界对齐,当系统调整窗口的水平位置时,客户区域的左边坐标是8的整数倍CS_CLASSDC分配一个设备环境并被类中的所有窗体共享。它是可以适用于一个应用程序的若干线程创建的一个相同类的窗体。当多个线程试图同时使用相同的设备环境时,系统只允许一个线程成功地进行绘图操作CS_DBLCLKS当用户双击窗口时,将向窗口函数发送鼠标双击消息CS_GLOBALCLASS指定此窗体类是一个应用程序全局类。应用程序全局类是由一个在进程中对所有模块有效的exe或dll注册的窗体类CS_HREDRAW如果窗口的位置或宽度发生改变,将重绘窗口CS_NOCLOSE窗口中的关闭按钮不可见CS_OWNDC为同一个窗口类中的每个窗口创建一个唯一的设备上下文CS_PARENTDC设置子窗口中剪下的矩形区域到父窗口中,以使子窗口可以在父窗口上绘图。指定该风格可以提高应用程序的性能CS_SAVEBITS把被窗口遮掩的屏幕图像作为位图保存起来。当该窗口被移动时,Windows操作系统使用被保存的位图来重建屏幕图像CS_VREDRAW如果窗口的位置或高度改变,将重绘窗口

3. lpfnWndProc 指向窗口处理函数(回调函数)。处理窗口事件,像单击鼠标会怎样,右击鼠标会怎样,都是由此函数控制的。

4. cbClsExtra 为窗口类的额外信息做记录,初始化为0。5. cbWndExtra 记录窗口实例的额外信息,系统初始为0.如果程序使用WNDCLASSEX注册一个从资源文件里创建的对话框,则此参数必须设置为DLGWINDOWEXTRA6. hInstance:本模块的事例句柄。7. hIcon 窗口类的图标,为资源句柄,如果设置为NULL,系统将为窗口提供一个默认的图标。8. hCursor 窗口类的鼠标样式,为鼠标样式资源的句柄,如果设置为NULL,系统提供一个默认的鼠标样式。9. hbrBackground 窗口类的背景刷,为背景刷句柄,也可以为系统颜色值,如果颜色值已给出,则必须转化为以下的HBRUSH的值· COLOR_ACTIVEBORDER· COLOR_ACTIVECAPTION· COLOR_APPWORKSPACE· COLOR_BACKGROUND· COLOR_BTNFACE· COLOR_BTNSHADOW· COLOR_BTNTEXT· COLOR_CAPTIONTEXT· COLOR_GRAYTEXT· COLOR_HIGHLIGHT· COLOR_HIGHLIGHTTEXT· COLOR_INACTIVEBORDER· COLOR_INACTIVECAPTION· COLOR_MENU· COLOR_MENUTEXT· COLOR_SCROLLBAR· COLOR_WINDOW· COLOR_WINDOWFRAME· COLOR_WINDOWTEXT10. lpszMenuName 指向一个以NULL结尾的字符串,同目录资源的名字一样。如果使用整型id表示菜单,可以用MAKEINTRESOURCE定义一个宏。如果它的值为NULL,那么该类创建的窗口将都没有默认的菜单。11. lpszClassName 指向窗口类的指针,LPSTR类型。12. hIconSm 小图标的句柄,在任务栏显示的图标,可以和上面的那个一样。

3.资源文件

自己制作一个ICO图标文件:

最后,编译代码,生成应用程序,运行后,如图所示:

NICE

上一篇:

下一篇:

  推荐阅读

分享