技术标签: null 读书 编程 windows basic Windows核心编程读书笔记 object
【文起】亲爱的蟹儿,12点没去睡觉,不乖了,想多看点儿书,回去就能多陪陪你了。爱你
根据书上的程序,自己用MFC完成了书上的功能。
1、在OnInitDialog() 函数中对IDC_COMBO_PRIORITY 和 IDC_COMBO_SCHEDULING 初始化,并设定定时器函数。
CComboBox *pcom = (CComboBox *)GetDlgItem(IDC_COMBO_PRIORITY);
pcom->InsertString(0,_T("No Limit"));
pcom->InsertString(1,_T("Idle"));
pcom->InsertString(2,_T("Below Normal"));
pcom->InsertString(3,_T("Normal"));
pcom->InsertString(4,_T("Above Normal"));
pcom->InsertString(5,_T("High"));
pcom->InsertString(6,_T("Realtime"));
pcom->SetCurSel(0);
CComboBox *pcomScheduling = (CComboBox *)GetDlgItem(IDC_COMBO_SCHEDULING);
pcomScheduling->InsertString(0,_T("No Limit"));
for (int i = 0;i < 10;i++)
{
TCHAR sz[] = {TCHAR('0' + i),0};
//pcomScheduling->AddString(sz);
pcomScheduling->InsertString(i+1,sz);
}
pcomScheduling->SetCurSel(0);
SetTimer(TIME1,TIME_LEN,NULL);//设定定时器10s刷新一次
Create IO,并将此IO与JOB关联起来,同时申请一个进程来执行队列中的事情。该进程对应的函数为UINT WINAPI JobNotify(PVOID)
g_hIOCP = CreateIoCompletionPort(INVALID_HANDLE_VALUE,NULL,0,0);
g_hThreadIOCP = (HANDLE)_beginthreadex(NULL, 0, JobNotify, NULL, 0, NULL);
g_hjob = CreateJobObject(NULL,_T("Job Lab"));
JOBOBJECT_END_OF_JOB_TIME_INFORMATION joend = {JOB_OBJECT_TERMINATE_AT_END_OF_JOB};
joend.EndOfJobTimeAction = JOB_OBJECT_TERMINATE_AT_END_OF_JOB;
SetInformationJobObject(g_hjob,JobObjectEndOfJobTimeInformation,&joend,sizeof(joend));
JOBOBJECT_ASSOCIATE_COMPLETION_PORT joacp = {(PVOID)COMPKEY_JOBOBJECT,g_hIOCP};
SetInformationJobObject(g_hjob,JobObjectAssociateCompletionPortInformation,&joacp,sizeof(joacp));
2、添加ON_WM_TIMER消息的处理,会自动生成函数void CJobLabDlg::OnTimer(UINT_PTR nIDEvent),在定时器函数中,每10秒Post消息到队列中
void CJobLabDlg::OnTimer(UINT_PTR nIDEvent)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
if (TIME1 == nIDEvent)
{
PostQueuedCompletionStatus(g_hIOCP,0,COMPKEY_STATUS,NULL);
}
//CDialog::OnTimer(nIDEvent);
}
同时,添加ON_WM_DESTROY的处理,用来kill定时器和释放job、IO等
void CJobLabDlg::OnDestroy()
{
CDialog::OnDestroy();
// TODO: 在此处添加消息处理程序代码
KillTimer(TIME1);
TerminateJobObject(g_hjob,0);
PostQueuedCompletionStatus(g_hIOCP,0,COMPKEY_TERMINATE,NULL);
WaitForSingleObject(g_hThreadIOCP,INFINITE);
CloseHandle(g_hIOCP);
CloseHandle(g_hThreadIOCP);
}
3、获取界面上的Job限制的信息,并且写入Job中,注意:MinimumWorkingSetSize 和 MaximumWorkingSetSize 必须同时赋值,不然会报错哦。
void CJobLabDlg::SetJobFunc()
{
DWORD m_dwProcessLimitTime;
CString m_strPriority,m_strScheduling;
DWORD m_dwJobLimitTime;
DWORD m_dwMinSize;
DWORD m_dwMaxSize;
DWORD m_dwProcessLimit;
DWORD m_dwMask;
DWORD m_dwMaxJob;
DWORD m_dwMaxProcess;
BOOL flag;
CComboBox *pcomPri = (CComboBox *)GetDlgItem(IDC_COMBO_PRIORITY);
CComboBox *pcomSche = (CComboBox *)GetDlgItem(IDC_COMBO_SCHEDULING);
/* 开始基本限制 *
文章浏览阅读4.3k次。首先,我有一万个理由,不想用腾讯地图,但只有一个理由说服我使用:做微信开发,地图组件需要和微信自带地图保持一致性。今天我做了腾讯地图很多marker点的聚合显示功能,主要参考官方的,下面是地址,可以参考一下,很多代码可以删掉。https://lbs.qq.com/javascript_v2/case-run.html#overlay-markercluster..._腾讯地图点聚合自定义图标
文章浏览阅读603次。STM32CubeMX安装及使用1、STM32CubeMX介绍2、STM32CubeMX安装3、STM32CubeMX使用STM32CubeMX介绍STM32CubeMX简介:微控制器图形化配置– 自动处理引脚冲突– 动态设置确定的时钟树–..._at+cereg=2
文章浏览阅读7.3k次,点赞4次,收藏16次。Mybatis PlusMybatis-Plus是一个Mybatis的增强工具,只是在Mybatis的基础上做了增强却不做改变,MyBatis-Plus支持所有Mybatis原生的特性,所以引入Mybatis-Plus不会对现有的Mybatis构架产生任何影响。Mybatis 和 Mybatis Plus 的区别MyBatis:所有SQL语句全部自己写手动解析实体关系映射转换为MyBatis内部对象注入容器不支持Lambda形式调用Mybatis Plus:强大的条件构造器,满足各类使_mybatis和mybatisplus
文章浏览阅读55次。Redis_主从复制、Redis集群
文章浏览阅读297次。面试的时候总会问到索引的问题,而且一般会问到关于索引失效、哪种查询会走索引,哪种方式不会这种问题。今天早上闲来无事对联合索引进行了一些简单的实验,要测试的话肯定还有很多场景,在这里抛砖引玉。以后有机会再来完善此篇博客。数据库版本建表语句CREATE TABLE `union_test` (`id` int(11) NOT NULL AUTO_INCREMENT,`a` varchar(8) COL..._mysql key `jsbh_jcsj_index` (`jsbh`,`jcsj`) using btree
文章浏览阅读2k次,点赞4次,收藏7次。一、监控知识基本概述1.为什么要使用监控1.对系统不间断实时监控2.实时反馈系统当前状态3.保证服务可靠性安全性4.保证业务持续稳定运行2.如何进行监控,比如我们需要监控磁盘的使用率1.如何查看磁盘使用率 df -h2.监控磁盘的那些指标 block、 inode3.获取的数值到达多少报警 80%3.流行的监控工具1.Zabbix2.Lepus(天兔)数据库监控系统3.Open-Falcon 小米4.Prometheus(普罗米修斯, Docker、 K8s)4._zabbix数据存储在哪
文章浏览阅读1w次,点赞29次,收藏41次。前端页面设计的工具推荐---PxCook_pxcook
文章浏览阅读153次。网上购物是大部分人的选择,有购物就肯定有查询物流信息的需求,小编教大家一个方法批量查询物流信息,批量导入单号一键查询,感兴趣的快来看看吧。并且物流信息跟官网同步,不需要一个一个查询,批量查询非常方便,快去试试吧。单号导入软件中一行一个排序,单击“保存”功能就可以对单号进行查询。将事先保存在文档中的单号打开,这时只需将文档选中“打开”即可。首先运行“快递批量查询高手”在软件中单击“添加单号”功能。会弹出一个添加快递单号文件框,在左下角选择“从。在提示框中选择“否”软件会自动识别快递公司。_怎么把快递订单编号一键插入word
文章浏览阅读2k次。今天在安装python的pyecharts库的遇到了奇怪的问题。ModuleNotFoundError: No module named ‘pyecharts. charts’ ; ‘pyecharts’ is not a package但是,我进入site-packages又看见的的确确是有这个模块的百度了不少,换过两个版本,尝试了各种花式安装方法,借过同学的pyecharts库,最后尝试了重启,还是没能解决。最后感觉不会是版本问题,还是选择卸载了其他版本,选择了最新的版本pip unins_pyecharts.charts为什么在vscode无法找到
文章浏览阅读7.9k次。报错内容Traceback (most recent call last): File "server.py", line 19, in <module> serversocket.bind((host, port))socket.gaierror: [Errno 8] nodename nor servname provided, or not known解决方式..._[errno 8] nodename nor servname provided, or not known
文章浏览阅读55次。http://v.youku.com/v_show/id_XNTg1ODUzNjg=.htmlhttp://blog.csdn.net/w809026418/archive/2008/12/05/3455610.aspx...
文章浏览阅读2.2k次。发现CXXX是一个很好的实现VC界面的类,下来编译出现如下错误:错误 1 error C2440: “static_cast”: 无法从“UINT (__thiscall CXXX::* )(CPoint)”转换为“LRESULT (__thiscall CWnd::* )(CPoint)”解决:查看CWnd类afx_msg LRESULT OnNcHitTest(CPoint poi_error c2440: “static_cast”: 无法从“uint (__thiscall cscope::* )(cpoint)”