<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[XscKernel的专栏       记录工作中做的点滴]]></title><description><![CDATA[有些是从老博客转过来的 ]]></description><link>https://blog.csdn.net/XscKernel</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; XscKernel]]></copyright><item><title><![CDATA[在VS中编辑修改资源视图后保存时提示-cannot change standard mfc resources ，无法保存资源视图的一个解决方法]]></title><link>https://blog.csdn.net/XscKernel/article/details/108126191</link><guid>https://blog.csdn.net/XscKernel/article/details/108126191</guid><author>XscKernel</author><pubDate>Thu, 20 Aug 2020 16:14:11 +0800</pubDate><description><![CDATA[如题：在VS中编辑修改资源视图后保存时提示-cannot change standard mfc resources ，无法保存资源视图的一个解决方法

通常遇到该问题时，在.rc文件开头都会有


#include "afxres.rc"
#include "afxprint.rc"

这两个包含，原因好像是由于该处的文件是只读的，但是在资源编辑保存时却会去改动该文件，导致一直提示无法保存资源视图；

其中一个解决方法，是在资源视图界面，

右键鼠标，在资源包括中，查看是不是在符号头文件处的内容为 res]]></description><category></category></item><item><title><![CDATA[vc++ 使用一个字体而不用安装]]></title><link>https://blog.csdn.net/XscKernel/article/details/108124853</link><guid>https://blog.csdn.net/XscKernel/article/details/108124853</guid><author>XscKernel</author><pubDate>Thu, 20 Aug 2020 15:32:19 +0800</pubDate><description><![CDATA[这是找了很久 google搜索出来的一个比较完整的很好的解决方案。

不仅有代码讲解，还有附件给出了编译好的程序和源码工程。





How to Use a Font Without Installing it

https://www.codeproject.com/Articles/42041/How-to-Use-a-Font-Without-Installing-it#addres



附件不容易下载，这里我下载了放到资源里面供免费下载：

https://download.csd...]]></description><category></category></item><item><title><![CDATA[WinDbg链接]]></title><link>https://blog.csdn.net/XscKernel/article/details/52998978</link><guid>https://blog.csdn.net/XscKernel/article/details/52998978</guid><author>XscKernel</author><pubDate>Tue, 01 Nov 2016 19:23:16 +0800</pubDate><description><![CDATA[MSDN文档一个简单的介绍最基本功能涉及了
stack overflow 挺详细的
WinDbg配置和使用基础转
在WinDBG中查看函数的反汇编代码的命令
在WinDBG中查看变量的命令
windbg下如何使用bp对指定文件指定源码行数下断
使用windbg调试release程序
MSDN文档，一个简单的介绍，最基本功能涉及了Getting Started with WinDbg (User-Mo]]></description><category></category></item><item><title><![CDATA[VC++ try catch]]></title><link>https://blog.csdn.net/XscKernel/article/details/52881513</link><guid>https://blog.csdn.net/XscKernel/article/details/52881513</guid><author>XscKernel</author><pubDate>Fri, 21 Oct 2016 11:20:24 +0800</pubDate><description><![CDATA[try{} catch(…){}
  
　　以前都是用try{} catch(…){}来捕获C++中一些意想不到的异常， 今天看了Winhack的帖子才知道，这种方法在VC中其实是靠不住的。例如下面的代码：try 
{ 
    BYTE* pch ; 
    pch = ( BYTE* )00001234 ;   //给予一个非法地址   
    *pch = 6 ; //对非法地址赋值，会造]]></description><category></category></item><item><title><![CDATA[Linux 64位系统下 inet_ntoa 报段错误问题]]></title><link>https://blog.csdn.net/XscKernel/article/details/52607243</link><guid>https://blog.csdn.net/XscKernel/article/details/52607243</guid><author>XscKernel</author><pubDate>Wed, 21 Sep 2016 14:06:08 +0800</pubDate><description><![CDATA[Linux 64位系统下inet_ntoa函数报段错误， 
测试环境： Redhat 5.4 enterprise  
代码如下#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>int main(int argc, char *argv[])
{
    struct sockaddr_in addr;
    add]]></description><category></category></item><item><title><![CDATA[获取窗口句柄]]></title><link>https://blog.csdn.net/XscKernel/article/details/52449756</link><guid>https://blog.csdn.net/XscKernel/article/details/52449756</guid><author>XscKernel</author><pubDate>Tue, 06 Sep 2016 14:36:13 +0800</pubDate><description><![CDATA[使用FindWindow函数获取窗口句柄
使用EnumWindows和EnumChildWindows函数
使用GetDesktopWindow和GetNextWindow函数得到所有的子窗口使用FindWindow函数获取窗口句柄　　示例：使用FindWindow函数获取窗口句柄，然后获得窗口大小和标题，并且移动窗口到指定位置。
#include <Windows.h>
#include <std]]></description><category></category></item><item><title><![CDATA[FFmpeg视频编解码库，无法解析的外部信号]]></title><link>https://blog.csdn.net/XscKernel/article/details/52402294</link><guid>https://blog.csdn.net/XscKernel/article/details/52402294</guid><author>XscKernel</author><pubDate>Thu, 01 Sep 2016 18:04:26 +0800</pubDate><description><![CDATA[在编译FFmpeg相关项目时，可能会出现： 
｀｀｀ 
error LNK2019: 无法解析的外部符号 “int __cdecl avpicture_fill(struct AVPicture ,unsigned char const ,enum AVPixelFormat,int,int)” (?avpicture_fill@@YAHPAUAVPicture@@PBEW4AVPixelForma]]></description><category></category></item><item><title><![CDATA[FFMPEG中的时间问题]]></title><link>https://blog.csdn.net/XscKernel/article/details/52401652</link><guid>https://blog.csdn.net/XscKernel/article/details/52401652</guid><author>XscKernel</author><pubDate>Thu, 01 Sep 2016 17:53:53 +0800</pubDate><description><![CDATA[对于一个电影，帧是这样来显示的：I B B P。现在我们需要在显示B帧之前知道P帧中的信息。因此，帧可能会按照这样的方式来存储：IPBB。这就是为什么我们会有一个解码时间戳和一个显示时间戳的原因。解码时间戳告诉我们什么时候需要解码，显示时间戳告诉我们什么时候需要显示。所以，在这种情况下，我们的流可以是这样的：  PTS:     1   4   2   3
DTS:     1   2   3]]></description><category></category></item><item><title><![CDATA[boost::condition_variable、boost::time_wait使用方法]]></title><link>https://blog.csdn.net/XscKernel/article/details/52401069</link><guid>https://blog.csdn.net/XscKernel/article/details/52401069</guid><author>XscKernel</author><pubDate>Thu, 01 Sep 2016 16:38:33 +0800</pubDate><description><![CDATA[boost 的线程库不能强行终止，所以通过 time_wait 可以让其自然的结束。// BoostTest.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"#include <iostream>  
#include <boost/thread/thread.hpp>  
#include <boost/thread/mutex.hpp>  
#include]]></description><category></category></item><item><title><![CDATA[音频相关]]></title><link>https://blog.csdn.net/XscKernel/article/details/52399377</link><guid>https://blog.csdn.net/XscKernel/article/details/52399377</guid><author>XscKernel</author><pubDate>Thu, 01 Sep 2016 14:26:12 +0800</pubDate><description><![CDATA[音频帧概念详解
AAC
MP3
示例代码附上我写的一个mp3 播放器音频帧概念详解　　正常人听觉的频率范围大约在20Hz~20kHz之间。　　采样频率是指将模拟声音波形进行数字化时，每秒钟抽取声波幅度样本的次数。 
　　根据奈奎斯特采样理论，为了保证声音不失真，采样频率应该在40kHz左右。 
　　常用的音频采样频率有8kHz、11.025kHz、22.05kHz、16kHz、37.8kHz、44.]]></description><category></category></item><item><title><![CDATA[boost多线程库使用指南]]></title><link>https://blog.csdn.net/XscKernel/article/details/52397415</link><guid>https://blog.csdn.net/XscKernel/article/details/52397415</guid><author>XscKernel</author><pubDate>Thu, 01 Sep 2016 11:06:44 +0800</pubDate><description><![CDATA[基本使用
用函数或类实例创建线程  boostthread
thread_group 使用
Boost线程库学习笔记
yield 放弃时间片 join 等待线程结束
使资源是线程安全的保证
给mutex加解锁有多种策略
读写锁
Boost Thread 线程库指南
创建线程
互斥体   6种互斥体类型
条件变量     boostcondition cond
线程局部存储  可重入  boostth]]></description><category></category></item><item><title><![CDATA[pcm音量计算]]></title><link>https://blog.csdn.net/XscKernel/article/details/52396437</link><guid>https://blog.csdn.net/XscKernel/article/details/52396437</guid><author>XscKernel</author><pubDate>Thu, 01 Sep 2016 09:43:47 +0800</pubDate><description><![CDATA[以下程序用在16Khz的单声道或者8Khz的双声道的pcm数据的音量计算.  
来源自搜索的各种资料加实际测试.  
参考源暂未统计出.　　注意要求的对数函数是log10,不是log.int pcm_db_count(const unsigned char* ptr, size_t size)
{
    int ndb = 0;    short int value;    int i;]]></description><category></category></item><item><title><![CDATA[桌面录音]]></title><link>https://blog.csdn.net/XscKernel/article/details/52204853</link><guid>https://blog.csdn.net/XscKernel/article/details/52204853</guid><author>XscKernel</author><pubDate>Sun, 14 Aug 2016 16:13:02 +0800</pubDate><description><![CDATA[公司做一个项目，需要把 windows 扬声器的声音捕捉下来，这个可以参考MSDN文档，上面有示例程序： 
Loopback RecordingCapturing a Stream这程序并不完整，还需要做一些修改才行：下面是我 调试通过的代码：#include <Mmdeviceapi.h>
#include <Audioclient.h>//----------------------------]]></description><category></category></item><item><title><![CDATA[一个由于锁的作用域导致core dump的问题的解决]]></title><link>https://blog.csdn.net/XscKernel/article/details/52203827</link><guid>https://blog.csdn.net/XscKernel/article/details/52203827</guid><author>XscKernel</author><pubDate>Sun, 14 Aug 2016 12:05:31 +0800</pubDate><description><![CDATA[如果没定义局部变量 lock 那么生存周期几乎为0请看如下代码：void CCommParams::setParams( const char * authUser, 
                        const char * authPsw,
                        const char * securityLevel,]]></description><category></category></item><item><title><![CDATA[C++中虚析构函数的作用]]></title><link>https://blog.csdn.net/XscKernel/article/details/52203230</link><guid>https://blog.csdn.net/XscKernel/article/details/52203230</guid><author>XscKernel</author><pubDate>Sun, 14 Aug 2016 10:12:37 +0800</pubDate><description><![CDATA[我们知道，用C++开发的时候，用来做基类的类的析构函数一般都是虚函数。可是，为什么要这样做呢？下面用一个小例子来说明：    
    有下面的两个类：
class ClxBase
{
public:
    ClxBase() {};
    virtual ~ClxBase() {};    virtual void DoSomething() { cout << "Do something i]]></description><category></category></item><item><title><![CDATA[STL的线程安全解决方案]]></title><link>https://blog.csdn.net/XscKernel/article/details/52093902</link><guid>https://blog.csdn.net/XscKernel/article/details/52093902</guid><author>XscKernel</author><pubDate>Tue, 02 Aug 2016 15:37:56 +0800</pubDate><description><![CDATA[由于STL不是线程安全的, 所以在每一次插入元素,删除元素,读取元素时,必须保证原子操作.  
 　　读取元素也许要原子? 嗯,是的. 因为你得到了一个迭代器后, 这个迭代器对应的容器可能被别的线程修改!　所以(下面来自<<　Effective STL　>> 条款十二): 
  
  在每次调用容器的成员函数期间都要锁定该容器。 
  在每个容器返回的迭代器（例如通过调用begin或end）的生存期]]></description><category></category></item><item><title><![CDATA[多屏幕显示]]></title><link>https://blog.csdn.net/XscKernel/article/details/51540500</link><guid>https://blog.csdn.net/XscKernel/article/details/51540500</guid><author>XscKernel</author><pubDate>Tue, 31 May 2016 09:33:05 +0800</pubDate><description><![CDATA[获取屏幕个数
EnumDisplayDevicess
GetSystemMetrics
读取显示器参数及其他参数windows 系统提供了多屏显示的功能，首先第一步是获取屏幕个数获取屏幕个数EnumDisplayDevicess函数原型：BOOL EnumDisplayDevices(
  _In_  LPCTSTR         lpDevice,
  _In_  DWORD]]></description><category></category></item><item><title><![CDATA[基于arm的C++反汇编 结构体和类]]></title><link>https://blog.csdn.net/XscKernel/article/details/51501790</link><guid>https://blog.csdn.net/XscKernel/article/details/51501790</guid><author>XscKernel</author><pubDate>Wed, 25 May 2016 21:26:01 +0800</pubDate><description><![CDATA[在C++中，结构体和类都具有构造函数、析构函数和成员函数，两者只有一个区別：结构体的访问控制默认为public,而类的默认访问控制是private。对于C++中的结构体而言， public, private、protected的访问控制都是在编译期进行检査，当越权访问时，编译过程中会检査出此类错误并给予提示。编译成功后，程序在执行的过程中不会在访问控制方面做任 何检査和限制。因此，在反汇编中，C++]]></description><category></category></item><item><title><![CDATA[基于arm的C++反汇编 数组和指针的寻址]]></title><link>https://blog.csdn.net/XscKernel/article/details/51488227</link><guid>https://blog.csdn.net/XscKernel/article/details/51488227</guid><author>XscKernel</author><pubDate>Tue, 24 May 2016 10:37:22 +0800</pubDate><description><![CDATA[数组在函数内
数组作为参数
数组作为返回值
下标寻址和指针寻址
下标值为整型常量的寻址
下标值为整型变量的寻址
下标值为整型表达式的寻址
数组越界
多维数组
存放指针类型数据的数组
指向数组的指针变量  虽然数组和指针都是针对地址操作，但它们有许多不同之处。数组是相同数据类型的数 据集合，以线性方式连续存储在内存中；而指针只是一个保存地址值的4字节变量。在使用中，数组名是一个地址常量值，保存数组首元]]></description><category></category></item><item><title><![CDATA[基于arm的C++反汇编 函数的工作原理]]></title><link>https://blog.csdn.net/XscKernel/article/details/51482527</link><guid>https://blog.csdn.net/XscKernel/article/details/51482527</guid><author>XscKernel</author><pubDate>Mon, 23 May 2016 19:04:14 +0800</pubDate><description><![CDATA[栈帧的形成和关闭
各种调用方式的考擦
使用 fp或sp寻址
函数的参数 与返回值
arm指令中立即数存放位置
gdbserver 调试环境栈帧的形成和关闭栈在内存中是一块特殊的存储空同, 它的存储原则是“先进后出”, 即最先被存储的数据最后被释放， 汇编过程通常使用 push 指令与 POP指令对栈空间执行数据压入和数据弹出操作。栈结构在内存中占用一段连续的存储空间, 通过sp与 fp这两个栈指针寄]]></description><category></category></item></channel></rss>