超难问题--分不够再加

时间:2022-06-16 14:36:56
技术区没人会我只好到水园碰运气
用了这么久的MSDN就是没弄个明白,搜索不到想要的结果
我去http://www.microsoft.com/china/msdn/搜索GetMessage这个函数可是结果都是答非所问,都是介绍.net里面GetMessage()的方法,而我想要的是WIN32有API说明文档而已,都说MSDN是个技术资源库,可是我觉得也没有我600K大的chm格式电子书API函数大全拿着好用,我在这里想问问大家都是怎么用它来搜索不懂的API函数的,至要是MS的API函数,不管用得多少都应该搜索得到吗

8 个解决方案

#1


GetMessage Function

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

The GetMessage function retrieves a message from the calling thread's message queue. The function dispatches incoming sent messages until a posted message is available for retrieval. 

Unlike GetMessage, the PeekMessage function does not wait for a message to be posted before returning.


Syntax

BOOL GetMessage(          LPMSG lpMsg,
    HWND hWnd,
    UINT wMsgFilterMin,
    UINT wMsgFilterMax
);
Parameters

lpMsg
[out] Pointer to an MSG structure that receives message information from the thread's message queue.
hWnd
[in] Handle to the window whose messages are to be retrieved. The window must belong to the calling thread. The NULL value has a special meaning:
NULL
GetMessage retrieves messages for any window that belongs to the calling thread and thread messages posted to the calling thread using the PostThreadMessage function.
wMsgFilterMin
[in] Specifies the integer value of the lowest message value to be retrieved. Use WM_KEYFIRST to specify the first keyboard message or WM_MOUSEFIRST to specify the first mouse message. 
Windows XP: Use WM_INPUT here and in wMsgFilterMax to specify only the WM_INPUT messages.

If wMsgFilterMin and wMsgFilterMax are both zero, GetMessage returns all available messages (that is, no range filtering is performed). 

wMsgFilterMax
[in] Specifies the integer value of the highest message value to be retrieved. Use WM_KEYLAST to specify the first keyboard message or WM_MOUSELAST to specify the last mouse message. 
Windows XP: Use WM_INPUT here and in wMsgFilterMin to specify only the WM_INPUT messages.

If wMsgFilterMin and wMsgFilterMax are both zero, GetMessage returns all available messages (that is, no range filtering is performed). 

Return Value

If the function retrieves a message other than WM_QUIT, the return value is nonzero.

If the function retrieves the WM_QUIT message, the return value is zero. 

If there is an error, the return value is -1. For example, the function fails if hWnd is an invalid window handle or lpMsg is an invalid pointer. To get extended error information, call GetLastError.

Warning  
Because the return value can be nonzero, zero, or -1, avoid code like this:

while (GetMessage( lpMsg, hWnd, 0, 0)) ...
The possibility of a -1 return value means that such code can lead to fatal application errors. Instead, use code like this:

Show Example

BOOL bRet;

while( (bRet = GetMessage( &msg, NULL, 0, 0 )) != 0)

    if (bRet == -1)
    {
        // handle the error and possibly exit
    }
    else
    {
        TranslateMessage(&msg); 
        DispatchMessage(&msg); 
    }
}



Remarks

An application typically uses the return value to determine whether to end the main message loop and exit the program. 

The GetMessage function retrieves messages associated with the window identified by the hWnd parameter or any of its children, as specified by the IsChild function, and within the range of message values given by the wMsgFilterMin and wMsgFilterMax parameters. Note that an application can only use the low word in the wMsgFilterMin and wMsgFilterMax parameters; the high word is reserved for the system.

Note that GetMessage always retrieves WM_QUIT messages, no matter which values you specify for wMsgFilterMin and wMsgFilterMax.

During this call, the system delivers pending messages that were sent to windows owned by the calling thread using the SendMessage, SendMessageCallback, SendMessageTimeout, or SendNotifyMessage function. The system may also process internal events. Messages are processed in the following order: 

Sent messages 
Posted messages 
Input (hardware) messages and system internal events 
Sent messages (again) 
WM_PAINT messages 
WM_TIMER messages 

To retrieve input messages before posted messages, use the wMsgFilterMin and wMsgFilterMax parameters. 

GetMessage does not remove WM_PAINT messages from the queue. The messages remain in the queue until processed. 

Windows XP: If a top-level window stops responding to messages for more than several seconds, the system considers the window to be not responding and replaces it with a ghost window that has the same z-order, location, size, and visual attributes. This allows the user to move it, resize it, or even close the application. However, these are the only actions available because the application is actually not responding. When in the debugger mode, the system does not generate a ghost window.

Windows 95/98/Me: GetMessageW is supported by the Microsoft Layer for Unicode (MSLU). To use this, you must add certain files to your application, as outlined in Microsoft Layer for Unicode on Windows 95/98/Me Systems.

Example

For an example, see Creating a Message Loop.

Function Information

Minimum DLL Version user32.dll 
Header Declared in Winuser.h, include Windows.h 
Import library User32.lib 
Minimum operating systems Windows 95, Windows NT 3.1 
Unicode Implemented as ANSI and Unicode versions.  

See Also

Messages and Message Queues Overview, IsChild, MSG, PeekMessage, PostMessage, PostThreadMessage, WaitMessage

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

© 2005 Microsoft Corporation. All rights reserved.

#2


如果仅仅需要API函数的说明(而不需要MFC\ATL\STL的资料)下载一份SDK即可,MS网站免费提供的。目前最新版本是Windows 2003 SP1 SDK.要找相应函数的文档在索引页输入函数名字既可。

#3


晕啊 又来了
 an_bachelor(一個單身漢) (
----------
我不是找GETMESSAGE函数,我是想知道搜索MSDN的方法,
我目前就想要一份WIN32API的资料,比较完的,有几年的心愿都没达成,哪里还也想ATL,和MFC的资料
你说可以免费下载,给个链接吧,别叫我去搜索,如果能搜索几年前都找到链接了

#4


好的学习方法,就是自己善于寻找资料

#5


设置过滤器。

#6


我用的网址是:http://msdn.microsoft.com/library/
这是英文版的,看着痛苦,不过可以提高一下自己的英文文档阅读能力,而且好象比楼主的中文版网址找到的结果要好一些。

#7


楼上说的是在线文档,这个网页有SDK下载连接05/03/2005版的 可能快要更新了也未可知 如果有耐心就等等吧 理所当然也是全e文的

http://www.microsoft.com/downloads/details.aspx?FamilyID=eba0128f-a770-45f1-86f3-7ab010b398a3&DisplayLang=en

#8


下载那个分成10多个文件的快得多 他提供的另一种方法是一个几百兆的映像文件很慢

#1


GetMessage Function

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

The GetMessage function retrieves a message from the calling thread's message queue. The function dispatches incoming sent messages until a posted message is available for retrieval. 

Unlike GetMessage, the PeekMessage function does not wait for a message to be posted before returning.


Syntax

BOOL GetMessage(          LPMSG lpMsg,
    HWND hWnd,
    UINT wMsgFilterMin,
    UINT wMsgFilterMax
);
Parameters

lpMsg
[out] Pointer to an MSG structure that receives message information from the thread's message queue.
hWnd
[in] Handle to the window whose messages are to be retrieved. The window must belong to the calling thread. The NULL value has a special meaning:
NULL
GetMessage retrieves messages for any window that belongs to the calling thread and thread messages posted to the calling thread using the PostThreadMessage function.
wMsgFilterMin
[in] Specifies the integer value of the lowest message value to be retrieved. Use WM_KEYFIRST to specify the first keyboard message or WM_MOUSEFIRST to specify the first mouse message. 
Windows XP: Use WM_INPUT here and in wMsgFilterMax to specify only the WM_INPUT messages.

If wMsgFilterMin and wMsgFilterMax are both zero, GetMessage returns all available messages (that is, no range filtering is performed). 

wMsgFilterMax
[in] Specifies the integer value of the highest message value to be retrieved. Use WM_KEYLAST to specify the first keyboard message or WM_MOUSELAST to specify the last mouse message. 
Windows XP: Use WM_INPUT here and in wMsgFilterMin to specify only the WM_INPUT messages.

If wMsgFilterMin and wMsgFilterMax are both zero, GetMessage returns all available messages (that is, no range filtering is performed). 

Return Value

If the function retrieves a message other than WM_QUIT, the return value is nonzero.

If the function retrieves the WM_QUIT message, the return value is zero. 

If there is an error, the return value is -1. For example, the function fails if hWnd is an invalid window handle or lpMsg is an invalid pointer. To get extended error information, call GetLastError.

Warning  
Because the return value can be nonzero, zero, or -1, avoid code like this:

while (GetMessage( lpMsg, hWnd, 0, 0)) ...
The possibility of a -1 return value means that such code can lead to fatal application errors. Instead, use code like this:

Show Example

BOOL bRet;

while( (bRet = GetMessage( &msg, NULL, 0, 0 )) != 0)

    if (bRet == -1)
    {
        // handle the error and possibly exit
    }
    else
    {
        TranslateMessage(&msg); 
        DispatchMessage(&msg); 
    }
}



Remarks

An application typically uses the return value to determine whether to end the main message loop and exit the program. 

The GetMessage function retrieves messages associated with the window identified by the hWnd parameter or any of its children, as specified by the IsChild function, and within the range of message values given by the wMsgFilterMin and wMsgFilterMax parameters. Note that an application can only use the low word in the wMsgFilterMin and wMsgFilterMax parameters; the high word is reserved for the system.

Note that GetMessage always retrieves WM_QUIT messages, no matter which values you specify for wMsgFilterMin and wMsgFilterMax.

During this call, the system delivers pending messages that were sent to windows owned by the calling thread using the SendMessage, SendMessageCallback, SendMessageTimeout, or SendNotifyMessage function. The system may also process internal events. Messages are processed in the following order: 

Sent messages 
Posted messages 
Input (hardware) messages and system internal events 
Sent messages (again) 
WM_PAINT messages 
WM_TIMER messages 

To retrieve input messages before posted messages, use the wMsgFilterMin and wMsgFilterMax parameters. 

GetMessage does not remove WM_PAINT messages from the queue. The messages remain in the queue until processed. 

Windows XP: If a top-level window stops responding to messages for more than several seconds, the system considers the window to be not responding and replaces it with a ghost window that has the same z-order, location, size, and visual attributes. This allows the user to move it, resize it, or even close the application. However, these are the only actions available because the application is actually not responding. When in the debugger mode, the system does not generate a ghost window.

Windows 95/98/Me: GetMessageW is supported by the Microsoft Layer for Unicode (MSLU). To use this, you must add certain files to your application, as outlined in Microsoft Layer for Unicode on Windows 95/98/Me Systems.

Example

For an example, see Creating a Message Loop.

Function Information

Minimum DLL Version user32.dll 
Header Declared in Winuser.h, include Windows.h 
Import library User32.lib 
Minimum operating systems Windows 95, Windows NT 3.1 
Unicode Implemented as ANSI and Unicode versions.  

See Also

Messages and Message Queues Overview, IsChild, MSG, PeekMessage, PostMessage, PostThreadMessage, WaitMessage

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

© 2005 Microsoft Corporation. All rights reserved.

#2


如果仅仅需要API函数的说明(而不需要MFC\ATL\STL的资料)下载一份SDK即可,MS网站免费提供的。目前最新版本是Windows 2003 SP1 SDK.要找相应函数的文档在索引页输入函数名字既可。

#3


晕啊 又来了
 an_bachelor(一個單身漢) (
----------
我不是找GETMESSAGE函数,我是想知道搜索MSDN的方法,
我目前就想要一份WIN32API的资料,比较完的,有几年的心愿都没达成,哪里还也想ATL,和MFC的资料
你说可以免费下载,给个链接吧,别叫我去搜索,如果能搜索几年前都找到链接了

#4


好的学习方法,就是自己善于寻找资料

#5


设置过滤器。

#6


我用的网址是:http://msdn.microsoft.com/library/
这是英文版的,看着痛苦,不过可以提高一下自己的英文文档阅读能力,而且好象比楼主的中文版网址找到的结果要好一些。

#7


楼上说的是在线文档,这个网页有SDK下载连接05/03/2005版的 可能快要更新了也未可知 如果有耐心就等等吧 理所当然也是全e文的

http://www.microsoft.com/downloads/details.aspx?FamilyID=eba0128f-a770-45f1-86f3-7ab010b398a3&DisplayLang=en

#8


下载那个分成10多个文件的快得多 他提供的另一种方法是一个几百兆的映像文件很慢