一、MFC 剪切板
    CListBox *pList = (CListBox*)GetDlgItem(IDC_LIST1);  // 获取ListBox控件句柄
CString strTmp;
pList->GetText(pList->GetCurSel(), strTmp); // 获取当前控件选中的内容
CString strOutput;
AfxExtractSubString(strOutput, strTmp, , ';'); // 提取字符串
TRACE("0-------%S\n", strOutput); // 日志显示
ShellExecute(NULL, TEXT("open"), strOutput, NULL, NULL, SW_SHOW); AfxExtractSubString(strOutput, strTmp, , ';'); // 提取字符串 HGLOBAL p = nullptr; // 定义一个全局变量
if (OpenClipboard()) // 打开剪切板并判断剪切板是否打开
{
EmptyClipboard(); // 清空剪切板
USES_CONVERSION;
char szName[];
strcpy(szName, T2A(strOutput)); // 将CString类型的字符串拷贝到char [] 类型中 HGLOBAL hMem = GlobalAlloc(GHND, sizeof(szName)); // 分配全局内存
char *pmen = (char *)GlobalLock(hMem); // 锁定全局内存
memcpy(pmen, szName, sizeof(szName)); // 向全局内存中拷贝数据
SetClipboardData(CF_TEXT, hMem); // 设置数据到剪切板
CloseClipboard(); // 关闭剪切板
p = GlobalFree(hMem); // 释放全局内存
}

二、MFC 线程

MFC中有两类线程,分别称为工作者线程和用户界面线程。二者的区别在于工作者线程没有消息循环,而用户界面线程有自己的消息队列和消息循环。

工作者线程没有消息机制,通常用来执行后台计算和维护任务,如冗长的计算过程,打印机的后台打印等。用户界面线程一般用于处理独立于其他线程之外的用户输入,响应用户及系统所产省的事件和消息等。但对于Win32的API编程而言,这两种线程是没有区别的,他们都只需要线程的启动地址即可启动线程来执行任务。

在MFC中,一般用于全局函数AfxBeginThread()来创建并初始化一个线程的运行,该函数有两种重载形式,分别用于创建工作者线程和用户界面线程。两种重载函数原型和参数分别说明如下:

(1)工作者线程

CWndThread *AfxBeginThread(AFX_THREADPROC pfnThreadProc,
LPVOID pParam,
UINT nPriority=THREAD_PRIORITY_NORMAL,
UINT nStackSize = ,
DWORD dwCreateFlags = ,
LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL);

(2)UI线程(用户界面线程)

CWndThread *AfxBeginThread(CRuntimeClass *pThreadClass,
int nPriority=THREAD_PRIORITY_NORMAL,
UINT nStackSize = ,
DWORD dwCreateFlags = ,
LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL);

简单的线程案例:

#include <afxwin.h>
#include <stdio.h> UINT MyFunc(LPVOID)
{
printf("我的线程ID是%d\n", AfxGetThread()->m_nThreadID);
return ;
} int main()
{
for (int i = ; i < ; i++)
{
AfxBeginThread(MyFunc, NULL);
}
system("pause");
return ;
}

结果显示:

最新文章

  1. python_selenium智联搜索
  2. [codeforces 317]A. Perfect Pair
  3. topcoder SRM 624 DIV2 BuildingHeightsEasy
  4. easy_install - pip
  5. [LeetCode]题解(python):110 Balanced Binary Tree
  6. PLSQL_Oracle PLSQL内置函数大全(概念)
  7. HDU_2048——全错位排列递推公式
  8. Linux下(主要针对Ubuntu)下桌面分辨率的添加
  9. Git基本应用
  10. 在vi中使用perltidy格式化perl代码
  11. kvm与qemu
  12. JavaScript性能优化 DOM编程
  13. ztree设置节点checked,选中某节点等相关操作
  14. js实现原生选项卡
  15. LIS|计蒜客2019蓝桥杯省赛 B 组模拟赛(一)
  16. golang 如何查看channel通道中未读数据的长度
  17. go bytes缓冲区使用介绍 -转自https://www.cnblogs.com/--xiaoyao--/p/5122138.html
  18. Oracle学习笔记:a inner join b与from a,b where a.x=b.x的差异
  19. HDFS原理解析(总体架构,读写操作流程)
  20. 如何无人值守安装linux系统(上)

热门文章

  1. 2、C++
  2. 库函数方式文件编程----fopen
  3. C#基础:在using中创建对象
  4. (并查集) Wireless Network --POJ --2236
  5. Bad Day -- Daniel Powter
  6. inline函数的作用
  7. Android-AppUtils工具类
  8. jvm 中的 ”永生代“
  9. 利用Kettle进行SQLServer与Oracle之间的数据迁移实践
  10. ionic xcode8 App上传应用详细流程