winmain.cpp:入口函数 AfxWinMain 的实现;
cmdtarg.cpp:类CCmdTarget的实现;
wincore.cpp:类CWnd;doccore.cpp:类CDocument;thrdcore.cpp:类CWinThread;appcore.cpp:类CWinApp; ===>继承自 CCmdTarget
winfrm.cpp:类CFrameWnd;viewcore.cpp:类CView;dlgcore.cpp:类CDialog;===>继承自 CWnd
// //* Windows提供了许多内核对象来实现线程的同步。对于线程同步而言,这些内核对象有两个非常重要的状态:“已通知”状态,“未通知”状态(也有翻译为:受信状态,未受信状态。)//* Windows提供了几种内核对象可以处于已通知状态和未通知状态:进程、线程、作业、文件、控制台输入/输出/错误流、事件、等待定时器、信号量、互斥对象。//
/**函数功能:该函数需要传递一个内核对象句柄,该句柄标识一个内核对象,如果该内核对象处于未通知状态,则该函数导致线程进入阻塞状态;*返 回 值:如果该内核对象处于已通知状态,则该函数立即返回WAIT_OBJECT_0。*参 数:第二个参数指明了需要等待的时间(毫秒),可以传递INFINITE指明要无限期等待下去,如果第二个参数为0,那么函数就测试同步对象的状态并立即返回。*返 回 值:如果等待超时,该函数返回WAIT_TIMEOUT。如果该函数失败,返回WAIT_FAILED。*/DWORD WaitForSingleObject( HANDLE hHandle, // 指明一个内核对象的句柄 DWORD dwMillisenconds // 等待时间 );
/**参 数:该函数的第一个参数指明等待的内核对象的个数,可以是0到MAXIMUM_WAIT_OBJECTS(64)中的一个值。 lpHandles参数是一个存放等待的内核对象句柄的数组。 bWaitAll参数如果为TRUE,则只有当等待的所有内核对象为已通知状态时函数才返回,如果为FALSE,则只要一个内核对象为已通知状态,则该函数返回。 第四个参数和WaitForSingleObject中的dwMilliseconds参数类似。*返 回 值:该函数失败,返回WAIT_FAILED;如果超时,返回WAIT_TIMEOUT;*备 注:如果bWaitAll参数为TRUE,函数成功则返回WAIT_OBJECT_0,如果bWaitAll为FALSE,函数成功则返回值指明是哪个内核对象收到通知。*/DWORD WaitForMultipleObjects( DWORD nCount, // 等待的内核对象个数 CONST HANDLE *lpHandles, // 一个存放被等待的内核对象句柄的数组 BOOL bWaitAll, // 是否等到所有内核对象都为以通知状态后才返回 DWORD dwMilliseconds // 等待时间 );
/* *函数功能:阻塞时仍可以响应消息*备 注:MsgWaitForMultipleObjects()函数类似WaitForMultipleObjects(),但它会在“对象被激发”或“消息到达队列”时被唤醒而返回。*参 数:MsgWaitForMultipleObjects()多接收一个参数,允许指定哪些消息是观察对象。*/DWORD MsgWaitForMultipleObjects( DWORD nCount, // 等待的内核对象个数 CONST HANDLE *pHandles, // 指向一个由handle组成的数组,这些handle的类型可以不同 BOOL fWaitAll, // 是否等待所有的handles被激发才返回 DWORD dwMilliseconds, // 超时时间 DWORD dwWakeMask // 欲观察的用户输入消息类型 );
/**特 点:你也可以同时通知一个内核对象,同时等待另一个内核对象,这两个操作以原子的方式进行;*函数功能:该函数在内部使得hObjectToSignal参数所指明的内核对象变成已通知状态,同时等待hObjectToWaitOn参数所代表的内核对象。*参 数:dwMilliseconds参数的用法与WaitForSingleObject函数类似。*返 回 值:该函数返回如下:WAIT_OBJECT_0,WAIT_TIMEOUT,WAIT_FAILED,WAIT_IO_COMPLETION。*/DWORD SignalObjectAndWait( HANDLE hObjectToSignal, // 通知的内核对象 HANDLE hObjectToWaitOn, // 等待的内核对象 DWORD dwMilliseconds, // 等待的时间 BOOL bAlertable // 与IO完成端口有关的参数 );
// 消息结构typedef struct tagMSG { HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt;#ifdef _MAC DWORD lPrivate;#endif} MSG, *PMSG, NEAR *NPMSG, FAR *LPMSG;
/**函数功能:将虚拟键消息转换为字符消息。字符消息被送到调用线程的消息队列中,在下一次线程调用函数GetMessage或PeekMessage时被读出。*返 回 值: 如果消息被转换(即,字符消息被送到线程的消息队列中),返回非零值。 如果消息是 WM_KEYDOWN, WM_KEYUP, WM_SYSKEYDOWN, 或 WM_SYSKEYUP,返回非零值,不考虑转换。 如果消息没有转换(即,字符消息没被送到线程的消息队列中),返回值是零。*备 注:TranslateMessage函数不修改由参数lpMsg指向的消息。 消息WM_KEYDOWN和WM_KEYUP组合产生一个WM_CHAR或WM_DEADCHAR消息。消息WM_SYSKEYDOWN和WM_SYSKEYUP组合产生一个WM_SYSCHAR或 WM_SYSDEADCHAR 消息。 TtanslateMessage仅为那些由键盘驱动器映射为ASCII字符的键产生WM_CHAR消息。 如果应用程序为其它用途而处理虚拟键消息,不应调用TranslateMessage函数。例如,如果TranslateAccelerator函数返回一个非零值,则应用程序将不调用TranslateMessage函数。 Windows CE:Windows CE不支持扫描码或扩展键标志,因此,它不支持由TranslateMessage函数产生的WM_CHAR消息中的lKeyData参数(lParam)16-24的取值。 TranslateMessage函数只能用于转换由GetMessage或PeekMessage函数接收到的消息。 */BOOL TranslateMessage( CONST MSG *lpMsg // 指向一个含有用GetMessage或PeekMessage函数从调用线程的消息队列中取得消息信息的MSG结构的指针。 );
/* *函数功能:该函数调度一个消息给窗口程序。通常调度从GetMessage取得的消息。消息被调度到的窗口程序即是MainProc()函数。*返 回 值:返回值是窗口程序返回的值。尽管返回值的含义依赖于被调度的消息,但返回值通常被忽略。*备 注:MSG结构必须包含有效的消息值。如果参数lpmsg指向一个WM_TIMER消息,并且WM_TIMER消息的参数IParam不为NULL,则调用IPa1ram指向的函数,而不是调用窗口程序。*/LRESULT DispatchMessage( CONST MSG *lpMsg // 指向含有消息的MSG结构的指针 );
/**/BOOL GetMessage( LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax );
/**/BOOL PeekMessage( LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax, UINT wRemoveMsg );
/**/BOOL PostMessage( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam );
/**/BOOL PostThreadMessage( DWORD idThread, UINT Msg, WPARAM wParam, LPARAM lParam );
/**/BOOL SendMessage( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam );
/**/BOOL SendNotifyMessage( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam );
/**/LRESULT SendMessageTimeout( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam, UINT fuFlags, UINT uTimeout, PDWORD_PTR lpdwResult );
转载于:https://www.cnblogs.com/shuang0109/p/9828986.html
相关资源:数据结构—成绩单生成器