字体
第(4/6)页
关灯
   存书签 书架管理 返回目录
, // 大小变量的高字节

    dwMemoryFileSize*sizeof(TCHAR), // 大小变量的低字节

    sMemoryFileNcom // 文件名称

    );

    DWORD dwError = GetLastError();

    if ( ! m_hFileMapping )

    {

    MessageBox(_T("Creating of file mapping failed"));

    }

    枫叶文学网www.fywxw.com

    第9 章 多线程

    ·231·

    else

    {

    // 映shè文件

    m_pViewOfFile = MapViewOfFile(

    m_hFileMapping, // 句柄

    FILE_MAP_ALL_ACCESS, // 访问属xìng

    0,

    0,

    0); // 映shè所有文件

    if ( ! m_pViewOfFile )

    {

    MessageBox(_T("MapViewOfFile failed"));

    }

    }

    if ( dwError == ERROR_ALREADY_EXISTS )

    {

    // 已经有程序运行

    // 从内存文件中读取数据并且写入文本框

    if ( m_pViewOfFile )

    {

    //从内存文件中读取数据

    TCHAR s[dwMemoryFileSize];

    lstrcpy(s, (LPCTSTR) m_pViewOfFile);

    // 写入文本框

    m_bNotify = FALSE;

    m_input.SetWindowText(s);

    m_bNotify = TRUE;

    }

    }

    return TRUE;

    }

    枫叶文学网www.fywxw.com

    Visual C++ 6.0 程序设计从入门到精通

    ·232·

    (7)响应文本框输入

    响应文本框输入的消息EN_CHANGE,代码如下:

    void CIPCDemoDlg::OnChangeEditInput()

    {

    // TODO: Add your control notification handler code here

    if ( m_bNotify )

    {

    // 将字符写入映shè内存文件

    if ( m_pViewOfFile )

    {

    TCHAR s[dwMemoryFileSize];

    m_input.GetWindowText(s, dwMemoryFileSize);

    lstrcpy( (LPTSTR) m_pViewOfFile, s);

    // 给其他线程发消息, 文本框中的字符发生变化

    ::PostMessage(HW
上一页 目录 下一页