VC++ 中 怎 样 使 程 序 自 动 运 行 ?

---- 我 用VC++, 希 望 该 程 序 能 在 其Main Frame Window 出 现 在 屏 幕 后 自 动 运 行, 而 无 需 等 待 任 何 消 息。 所 以 想 知 道 哪 些 函 数 在 窗 口 出 现 后 会 被 自 动 调 用 ?

---- 首 先, 在Windows 中 没 有 任 何 一 个 消 息 用 来 通 知 窗 口 初 始 化 完 毕, 所 以 在VC 中 也 没 有 相 应 的 函 数, 但 您 的 问 题 可 用 下 面 的 办 法 解 决。

---- 用VC++ 5.0 编 写 应 用 程 序,MFC AppWizard 会 自 动 生 成 程 序 的 框 架, 其 中CTestView 类 的 函 数OnDraw() 在 窗 口 出 现 后 自 动 调 用。 当 然, 此 函 数 在 窗 口 的 大 小 发 生 改 变( 如 最 大、 最 小 化) 以 及 窗 口 由 被 遮 住( 一 部 分) 到 重 新 显 现 时 也 会 被 调 用。 所 以 为 了 使 某 些 代 码 能 够 自 动 运 行 并 且 只 运 行 一 次, 除 了 要 将 其 代 码 写 在OnDraw() 函 数 中 外, 还 要 在CTestView 类 中 添 加 一 个 用 于 标 记 的BOOL 型 变 量x( 用 户 可 以 自 己 定 义 变 量 名), 在 该 类 的 构 造 函 数 中 赋 值 为true。 在OnDraw() 函 数 里 加 上 判 断 语 句: 当x 为true 时 执 行 要 求 首 先 运 行 的 代 码, 然 后 将x 置 为false; 当x 为false 时 什 么 也 不 做。 这 样 就 可 以 保 证 特 定 的 代 码 在 窗 口 出 现 时 自 动 运 行 而 且 只 执 行 一 次。

---- 具 体 的 程 序 片 段 如 下:

(CTestView.h 文 件 中)
class CTestView : public CView
{
    public:
    BOOL x;
    ......   // 其 他 的 语 句
}

(CTestView.cpp 文 件 中)
CTestView::CTestView()
{
// add construction code here
    x=TRUE;
}

void CTestView::OnDraw(CDC* pDC)
{
	 CTestDoc*pDoc=GetDocument();
    ASSERT_VALID(pDoc);
    if(x==TRUE ){
      x=FALSE;
      ......// 要 求 首 先 运 行 的 代 码
    }
}


中国计算机世界出版服务公司版权所有