有几个试题,帮忙解决一下。

ccittbeauty 2004-04-06 06:53:16
1.请写出下面程序的运行结果:
#include <iostream>
using namespace std;

class base{
public:
base(){ m = 0;}
int m;
virtual void f(){cout << “base::f()”<<endl;};
};

class child: public base{
public:
child(){m = 1;}
int m;
virtual void f(){cout << “child::f()”<<endl;};
};

main()
{
child* pc;
base* pb;

pc = new child;
pb = (base*) pc;
cout << pb->m <<endl;
pb->f();

delete pc;

return 0;
}


2. 请说明CMutex, CSemaphore, CCriticalSection的作用和区别.


3. 请解释以下代码和代码中每个函数的含义,请特别说明IsDialogMessage函数.
while (GetMessage (&msg, NULL, 0, 0))
{
if (!IsDialogMessage(hDialog, &msg))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
}

...全文
25 点赞 收藏 6
写回复
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
enoloo 2004-04-06
When IsDialogMessage processes a message, it checks for keyboard messages and converts them into selections for the corresponding dialog box. For example, the TAB key, when pressed, selects the next control or group of controls, and the DOWN ARROW key, when pressed, selects the next control in a group.
回复
enoloo 2004-04-06
3,The IsDialogMessage function determines whether a message is intended for the specified dialog box and, if it is, processes the message.
回复
vcforever 2004-04-06
1.
0
child::f()

2.
CMutex:是MFC中用来进行多线程访问共享资源时,进行资源同步的互斥对象,使用起来要比windows中的Mutex对象简单的多例如:
CMutex m_mutex;
m_mutex.Lock();
//访问共享资源
m_mutex.Unlock();

CSemaphore:和上面的CMutex基本相同,也是MFC中用来进行线程同步的类
CCriticalSection:这个临界区对象在线程同步的时候使用的比较多,因为他不是核心对象,运行起来的速度要比以上两个快,效率要高!

3.这个函数是判断发送过来的消息是不是属于hDialog这个句柄所标识的窗口,如果是就处理这个消息,如果不是将不做任何处理,该函数的原形如下

BOOL IsDialogMessage(
HWND hDlg, // handle to dialog box
LPMSG lpMsg // message to be checked
);
回复
enoloo 2004-04-06
1,0,child::f()
2,在线查msdn.
回复
ccittbeauty 2004-04-06
我现在在网吧,没有VC,你帮下忙试试。还有第二、三个题,九点钟之前解决就结账。
回复
醉马不肖 2004-04-06
运行一下不就出来了吗?
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告
暂无公告