API函数

来源:互联网 发布:office mac破解版迅雷 编辑:程序博客网 时间:2024/04/29 08:57

GetSafeHwnd

当我们想得到一个窗口对象(CWnd的派生对象)指针的句柄(HWND)时,最安全的方法是使用GetSafeHwnd()函数,通过下面的例子来看其理由:
CWnd *pwnd = FindWindow(“ExploreWClass”,NULL); //希望找到资源管理器
HWND hwnd = pwnd->m_hwnd; //得到它的HWND
这样的代码当开始得到的pwnd为空的时候就会出现一个“General protection error”,并关闭应用程序,因为一般不能对一个NULL指针访问其成员,如果用下面的代码:
CWnd *pwnd = FindWindow(“ExploreWClass”,NULL); //希望找到资源管理器
HWND hwnd = pwnd->GetSafeHwnd(); //得到它的HWND
就不会出现问题,因为尽管当pwnd是NULL时,GetSafeHwnd仍然可以用,只是返回NULL

GetCursorPos

       
函数功能:该函数检取光标的位置,以屏幕坐标表示。
函数原型:BOOL GetCursorPos(LPPOINT lpPoint);
参数:
IpPoint:POINT结构指针,该结构接收光标的屏幕坐标。
返回值:如果成功,返回值非零;如果失败,返回值为零。

CListCtrl 类
CListCtrl类封装了“列表视图控件”功能,显示每个包含图标(列表视图中)和标签的收集。
方法:
 SetExtendedStyle
CListCtrl::SetExtendedStyle
设置当前的列表视图控件扩展的样式
m_CList_Online.SetExtendedStyle(LVS_EX_FULLROWSELECT); //这个参数,表示点击时整个列都是选中状态

GetItemText

CListCtrl::GetItemText

检索列表视图中的项目或子项目的文字

int iSelect=m_CList_Online.GetSelectionMark( );
strIP=m_CList_Online.GetItemText(iSelect,ONLINELIST_IP);
m_CList_Online.DeleteItem(iSelect);



http://baike.baidu.com/view/1856627.htm?fr=aladdin
 HMENU LoadMenu(                    //载入菜单 
                  HINSTANCE hInstance,          //资源所在文件模块的句柄标识
                   LPCTSTR lpMenuName           //资源ID
               );


       
BOOL SetMenu(                  //为窗口设置菜单
                  HWND hWnd,                 //要设置菜单的窗口句柄
                  HMENU hMenu                //菜单标识
                );

       
BOOL DrawMenuBar(          //显示菜单
                       HWND hWnd          //要显示菜单的窗口句柄
                );

退出菜单代码:
         
BOOL PostMessage(          HWND hWnd,             //标识向那个窗口发送消息
                                        UINT Msg,              //消息内容
                                        WPARAM wParam,         //消息参数
                                         LPARAM lParam          //消息参数
            );
                                                  
PostMessage(WM_CLOSE,0,0);

关于菜单代码:
           CAboutDlg dlgAbout;
           dlgAbout.DoModal();


CWnd类

方法:

    GetWindowRect

      该函数返回指定窗口的边框矩形的尺寸。该尺寸以相对于屏幕坐标左上角的屏幕坐标给出。
BOOL GetWindowRect(HWND hWnd,LPRECT lpRect);
hWnd:窗口句柄。
lpRect:指向一个RECT结构的指针,该结构接收窗口的左上角和右下角的屏幕坐标。
该函数得到的值返回给 IpRect
left ;top; right;bottom;
分别表示该窗口的/左侧/顶部/右侧/底部坐标
http://baike.baidu.com/view/1080325.htm?fr=aladdin



CStatusBar
一个CStatusBar 对象是一个带有一行文本输出窗格的控件,或者称为“指示器”。这些输出窗格常被用作消息行和状态指示器。

http://baike.baidu.com/view/1096693.htm?fr=aladdin

SetIndicators

CStatusBar::SetIndicators
此成员函数用来将每一个指示器的ID设置为由数组lpIDArray的相应元素指定的值,加载由每一个ID指定的字符串资源,
并将这个字符串设置为此指示器的文本。

BOOL SetIndicators( const UINT* lpIDArray, int nIDCount );

返回值:如果成功则返回非零值;否则返回0。
lpIDArray 指向一个ID数组的指针。 nIDCount 由lpIDArray指向的数组的元素数目。

http://baike.baidu.com/view/4858674.htm?fr=aladdin

CStatusBar::SetPaneInfo

Sets the specified indicator pane to a new ID, style, and width.


void SetPaneInfo(   int nIndex,   UINT nID,   UINT nStyle,   int cxWidth );
nIndex

样式将设置指示符窗格的索引。

nID

指示器窗格的新ID。

nStyle

样式为指示器窗格。

cxWidth

指示器窗格的新的宽度。

CStatusBar::Create

创建状态栏(子窗口)并将它与关联 CStatusBar 对象。

virtual BOOL Create(   CWnd* pParentWnd,   DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_BOTTOM,   UINT nID = AFX_IDW_STATUS_BAR );
参数
pParentWnd

对于Windows窗口处于状态栏的父级的 CWnd 对象的指针。

dwStyle

状态栏样式。 除了标准Windows 样式之外,这些样式支持。

  • CBRS_TOP 控件条在框架窗口的顶部。

  • CBRS_BOTTOM 控制条在底部框架窗口。

  • 在父调整的大小时,CBRS_NOALIGN 控制条不会重新定位。

nID

工具栏的子窗口ID.

返回值

非零,如果成功;否则为0。

备注

并设置初始字体并将状态栏的高度设置为默认值。

要求

Header: afxext.h



CToolBar Class

Control bars that have a row of bitmapped buttons and optional separators.

类CToolBar的对象是带有一行位图按钮和可选分隔线的控件条。这些按钮可以像普通按钮、

继承图表

继承图表

核选按钮或单选按钮那样动作。CToolBar对象通常是由CFrameWnd或CMDIFrameWnd派生的框架窗口对象的嵌入成员。

使用资源编辑器(ResourceEditor)创建一个工具条,应遵循下面的步骤:
1、创建一个工具条资源。
2、构造CToolBar对象。
3、调用Create或CreateEx函数来创建Windows工具条并将它与该CToolBar对象连接。
4、调用LoadToolBar来装入工具条资源。
http://baike.baidu.com/view/2962164.htm?fr=aladdin


CreateEx

用于创建窗口的函数。窗口类型可以是重叠,弹出窗口,或子窗口,窗口样式由参数dwExStyle指定。
函数原型为:BOOL CreateEx(
DWORD dwExStyle, 
 指定要建立的窗口的扩展样式,引扩展样式包括所有的MFC样式。

LPCTSTR lpszClassName,
创建窗口的类名称,类的名称可以用全局AfxRegisterWndClass函数或预定义的注册任何类名称。

LPCTSTR lpszWindowName,
创建的窗口名称,为自定义字符串,如:"我的窗口"(含引号)

DWORD dwStyle,
指定的窗口样式属性。见窗口样式和所调用CWnd::描述值创建样式的所有值,用"|"将不同值连起来,
如:OPUP | WS_SYSMENU|WS_EX_TOOLWINDOW
int x,
int y,
int nWidth,
int nHeight,所要创建窗口的坐标、高度及宽度或都用矩形表示
HWND hWndParent,标识的父窗口或所属窗口。无父窗口时使用空值:"NULL"
HMENU nIDorHMenu,标识所创建窗口的菜单,可使用菜单ID:"IDR_MENU"或使用空值:"NULL"
LPVOID lpParam = NULL 以由CREATESTRUCT结构lpCreateParams领域中引用的数据
);
dwExStyle

lpszClassName

lpszWindowName

dwStyle

x,y,nWidth,nHeight或RECT& rect
所要创建窗口的坐标、高度及宽度或都用矩形表示
hWndParent

nIDorHMenu

lpParam

nID
以由CREATESTRUCT结构lpCreateParams领域中引用的数据


http://baike.baidu.com/view/3947373.htm?fr=aladdin


ModifyStyle

     调用这个函数修改窗口的风格,此函数的厉害之处在于可以在窗口创建完成后修改窗口风格,虽然也有一些属性改不了。
函数原型:
BOOL ModifyStyle
(
DWORD dwRemove,指定修改时要删除的窗风格。
DWORD dwAdd,指定修改时将要增加的窗口风格。
UINT nFlags=0 该参数将被传给SetWindowPos,否则为0,如果SetWindowPos不被调用的话,一般该参数默认值
);
参数含义:
dwRemove 指定修改时要删除的窗风格。
dwAdd 指定修改时将要增加的窗口风格。
nFlags 该参数将被传给SetWindowPos,否则为0,如果SetWindowPos不被调用的话,一般该参数默认值
       http://baike.baidu.com/view/2867042.htm?fr=aladdin

        m_ToolBar.ModifyStyle(0, TBSTYLE_FLAT)
看意思应该是使用TBSTYLE_FLAT 时toolbar 和 buttons都透明,而使用TBSTYLE_TRANSPARENT 时 toolbar透明而而buttons不透明,如果这样理解的话,需要 toolbar透明而buttons不透明时应该使用TBSTYLE_TRANSPARENT ,需要两者都透明的话,则使用TBSTYLE_FLAT ,两者同时使用是完全没有必要而且会造成意义模糊的。
但事实是这样的的吗?NO。事实是要创建一个透明的工具条,需要同时使用TBSTYLE_FLAT 和TBSTYLE_TRANSPARENT 风格,只用TBSTYLE_FLAT风格创建的 toolbar 将包含不透明的 buttons 。这样的话应该是, 使用TBSTYLE_FLAT 时toolbar 透明而buttons不透明(同MSDN对TBSTYLE_TRANSPARENT 的解释),而使用 TBSTYLE_TRANSPARENT 时应该是 toolbar不透明而buttons透明,这样的话两者同时使用达到透明的效

                                        IDB_BITMAP_NORMAL, 

                             

 LoadTrueColorToolBar

        加载真彩工具条   

        LoadTrueColorToolBar(
              TOOLBAR_DRAW_BUTTON_WIDTH,           
               IDB_BITMAP_NORMAL,        
               IDB_BITMAP_HOT,                                           
              IDB_BITMAP_DISABLE); //加载真彩工具条   
其中,
 IDB_BITMAP_NORMAL 是正常状态的工具条,
IDB_BITMAP_HOT 是鼠标移动到上面时的工具条,
IDB_BITMAP_DISABLE 是被禁止状态的工具条。
这是三个位图(bmp)文件,需要你事先制作好,并导入VC工程的资源中。
此外还要注意:你在VC工程的资源里原先的Toolbar尺寸必须调整得与上面代码中的 TOOLBAR_DRAW_BUTTON_WIDTH 的值保持一致,否则显示的时候会出问题。


    shell_notifyicon

Shell_NotifyIcon函数,向任务栏的状态栏发送一个消息
函数原型
BOOL Shell_NotifyIcon(
DWORD dwMessage,为输入参数,传递发送的消息,表明要执行的操作。
PNOTIFYICONDATA lpdata 为输入参数,是指向NOTIFYICONDATA结构体指针,结构体内容用来配合第一个参数wMessage进行图标操作。
);
dwMessage 可选的值如下:
NIM_ADD 向托盘区域添加一个图标。

http://baike.baidu.com/view/1773959.htm?fr=aladdin
      



SetForegroundWindow

该函数将创建指定窗口的线程设置到前台,并且激活该窗口。键盘输入转向该窗口,并为用户改各种可视的记号。系统给创建前台窗口的线程分配的权限稍高于其他线程。
BOOL SetForegroundWindow(HWND hWnd
hWnd为指定的窗口的窗口句柄。

        http://baike.baidu.com/view/1080341.htm?fr=aladdin

 


TrackPopupMenu

函数功能:该函数在指定位置显示快捷菜单,并跟踪菜单项的选择。快捷菜单可出现在屏幕上的任何位置。
函数原型:BOOL TrackPopupMenu(HMENU hMenu, UINT uFlags, int x, int y, int nReserved, HWND hWnd, CONST RECT* prcRect);
hMenu:被显示的快捷菜单的句柄。此句柄可为调用CreatePopupMenu创建的新快捷菜单的句柄,也可以为调用GetSubMenu取得的与一个已存在菜单项相联系的子菜单的句柄。
uFlags:一种指定功能选项的位标志。用下列标志位之一来确定函数如何水平放置快捷菜单:
TPM_CENTERALIGN:若设置此标志,函数将按参数x指定的坐标水平居中放置快捷菜单。
TPM_LEFTALIGN:若设置此标志,函数使快捷菜单的左边界与由参数X指定的坐标对齐。
TPM_RIGHTALIGN:若设置此标志,函数使快捷菜单的右边界与由参数X指定的坐标对齐。
用下列标志位之一来确定函数如何垂直放置快捷菜单:
TPM_BOTTOMALIGN:若设置此标志,函数使快捷菜单的下边界与由参数y指定的坐标对齐。
TPM_TOPALIGN:若设置此标志,函数使快捷菜单的上边界与由参数y指定的坐标对齐。
TPM_VCENTERALIGN;若设置此标志,函数将按参数y指定的坐标垂直居中放置快捷菜单
用下列标志位之一来确定在菜单没有父窗口的情况下用户的选择:
TPM_NONOTIFY:若设置此标志,当用户单击菜单项时函数不发送通知消息。
TPM_RETURNCMD;若设置此标志;函数将用户所选菜单项的标识符返回到返回值里。
(补充:当TrackPopupMenu的返回值大于0,就说明用户从弹出菜单中选择了一个菜单。以返回的ID号为参数wParam的值,程序给自己发送了一个WM_SYSCOMMAND消息)
用下列标志位之一来确定在快捷菜单跟踪哪一个鼠标键:
TPM_LEFTBUTTON:若设置此标志,用户只能用鼠标左键选择菜单项。
TPM_RIGHTBUTTON:若设置此标志,用户能用鼠标左、右键选择菜单项。
X:在屏幕坐标下,快捷菜单的水平位置。
Y:在屏幕坐标下,快捷菜单的垂直位置。
NReserved:保留值,必须为零。
HWnd:拥有快捷菜单的窗口的句柄。此窗口接收来自菜单的所有消息。函数返回前,此窗口不接受来自菜单的WM_COMMAND消息。
如果在参数uFlags里指定了TPM_NONOTIFY值,此函数不向hWnd标识的窗口发消息。 但必须给hWnd里传一个窗口句柄,可以是应用程序里的任一个窗口句柄。
PrcRect:未用。
返回值:如果在参数uFlags里指定了TPM_RETURNCMD值,则返回值是用户选择的菜单项的标识符。如果用户未作选择就取消了菜单或发生了错误,则退回值是零。如果没在参数uFlags里指定TPM_RETURNCMD值,若函数调用成功,返回非零值,若函数调用失败,返回零。若想获得更多的错误信息,清调用GetLastError

CMenu::GetSubMenu
返回值:
若弹出菜单位于指定的位置,则返回CMenu 对象的指针,其中CMenu对象要包含弹出菜单的句柄;否则为NULL。如果CMenu 对象不存在,那么将创建临时的CMenu 对象。但返回的CMenu指针不应被存储。
参数:
nPos 指定包含在菜单中的弹出菜单的位置。对于第一个菜单项,位置值开始为0。弹出菜单的标识符不能被该函数使用。
说明:获取弹出菜单的CMenu对象。

CMenu::EnableMenuItem

函数功能:允许、禁止或变灰指定的菜单条目
函数原型
BOOL EnableMenuItem(
  HMENU
hMenu// handle to menu
  UINTuIDEnableItem// menu item to enable, disable, or gray
  UINTuEnable // menu item flags
  );
返回值 :返回值指定的先前状态菜单项。如果菜单项不存在,返回值是0xffffffff。
参数类型及说明
hMenu ,菜单句柄
wIDEnableItem ,欲允许或禁止的一个菜单条目的标识符。如果在wEnable参数中设置了MF_BYCOMMAND标志,这个参数就代表欲改变菜单条目的命令ID。如设置的是MF_BYPOSITION,则这个参数代表菜单条目在菜单中的位置(第一个条目肯定是零)
wEnable ,参考ModifyMenu函数中的菜单常数标志定义表,其中列出了允许使用的所有常数。对于这个函数,只能指定下述常数:MF_BYCOMMAND,MF_BYPOSITION,MF_ENABLED,MF_DISABLED以及MF_GRAYED
这些值有下列含义:
· MF_BYCOMMAND 指定参数给出已存在的菜单项的命令ID号。此为缺省值。
· MF_BYPOSITION 指定参数给出已存在菜单项的位置。第一项所在的位置是0。
· MF_DISABLED 使菜单项无效,以便它不能被选择,但不变灰。
· MF_ENABLED 使菜单项有效,以便它能够被选择,并可从变灰的状态中恢复出来。
· MF_GRAYED 使菜单项无效,以便它不能被选择并同时变灰。
注解
如指定的菜单条目依附了一个弹出式菜单,那么整个弹出式菜单都会受到影响



0 0
原创粉丝点击