<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[djf_1985的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/djf_1985</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; djf_1985]]></copyright><item><title><![CDATA[windows 服务的安装、启动、状态查询 c++实现]]></title><link>https://blog.youkuaiyun.com/djf_1985/article/details/134666819</link><guid>https://blog.youkuaiyun.com/djf_1985/article/details/134666819</guid><author>djf_1985</author><pubDate>Tue, 28 Nov 2023 14:29:09 +0800</pubDate><description><![CDATA[/LOG_INFO << "打开服务管理器失败 (" << ::GetLastError() << ")\r\n";//LOG_INFO << "不能安装服务 (" << ::GetLastError() << ")\r\n";//LOG_INFO << "创建服务失败 (" << ::GetLastError() << ")\r\n";//LOG_INFO << "创建服务成功\r\n";@根据服务名查询服务状态。@ 根据服务名 安装服务。@ 根据服务名启动服务。@根据服务名停止服务。]]></description><category></category></item><item><title><![CDATA[postgres进程挂起导致服务无法启动问题]]></title><link>https://blog.youkuaiyun.com/djf_1985/article/details/126642051</link><guid>https://blog.youkuaiyun.com/djf_1985/article/details/126642051</guid><author>djf_1985</author><pubDate>Thu, 01 Sep 2022 18:57:29 +0800</pubDate><description><![CDATA[postgres进程挂起导致数据库服务无法启动]]></description><category></category></item><item><title><![CDATA[C++/MFC学习书籍]]></title><link>https://blog.youkuaiyun.com/djf_1985/article/details/16926621</link><guid>https://blog.youkuaiyun.com/djf_1985/article/details/16926621</guid><author>djf_1985</author><pubDate>Sun, 24 Nov 2013 21:46:55 +0800</pubDate><description><![CDATA[C++ Prime
effective c++
Programming Windows with MFC
深入浅出MFC 第二版
VC++技术内幕]]></description><category></category></item><item><title><![CDATA[CFileDialog 的unhandled exception at]]></title><link>https://blog.youkuaiyun.com/djf_1985/article/details/8551150</link><guid>https://blog.youkuaiyun.com/djf_1985/article/details/8551150</guid><author>djf_1985</author><pubDate>Tue, 29 Jan 2013 09:10:00 +0800</pubDate><description><![CDATA[CfileDialog 为何抛出异常与一个mfc的宏定义有关
如果_WIN32_WINNT 0x0500 这个宏被定义那么就不能再用cfiledialg 了，
把这个宏定义去掉则OK 如果程序中确实需要这个宏经过我自己的摸索，
下面给出三个解决的方案：
1.不要使用CFileDialog，而是使用GetOpenFileName来实现
2.在stdafx.h中，你肯定已经添加了#defin]]></description><category></category></item><item><title><![CDATA[C++中delete 与 delete[]]]></title><link>https://blog.youkuaiyun.com/djf_1985/article/details/8549400</link><guid>https://blog.youkuaiyun.com/djf_1985/article/details/8549400</guid><author>djf_1985</author><pubDate>Mon, 28 Jan 2013 16:12:52 +0800</pubDate><description><![CDATA[1.从反汇编的结果看，两者都是一样的。只不过对于对象数组(非编译器定义的类型)，delete[]调用全部的析构函数，而delete只调用一次析构。编译器定义的类型，如int,char,string,byte等都是可以正确释放的。
2.规范化编程为好，delete与new配套,delete[]与new []配套使用。
3.最好是自己定制delete与new，因为可以在里面加入一些条件，比如防止删]]></description><category></category></item><item><title><![CDATA[获得所有打印机]]></title><link>https://blog.youkuaiyun.com/djf_1985/article/details/8549084</link><guid>https://blog.youkuaiyun.com/djf_1985/article/details/8549084</guid><author>djf_1985</author><pubDate>Mon, 28 Jan 2013 15:09:52 +0800</pubDate><description><![CDATA[//得到所有打印机   DWORD dwSize,dwPrinters;   ::EnumPrinters(PRINTER_ENUM_CONNECTIONS | PRINTER_ENUM_LOCAL,NULL,5,NULL,0,&dwSize,&dwPrinters);   BYTE *pBuffer=new BYTE[dwSize];   ::EnumPrinters(PRINTER_ENUM_]]></description><category></category></item><item><title><![CDATA[postgresql 热备份和恢复]]></title><link>https://blog.youkuaiyun.com/djf_1985/article/details/8437513</link><guid>https://blog.youkuaiyun.com/djf_1985/article/details/8437513</guid><author>djf_1985</author><pubDate>Wed, 26 Dec 2012 09:52:02 +0800</pubDate><description><![CDATA[作为现今最强大的开源数据库，PostgreSQL拥有一切商业数据库所拥有的功能。在以前的版本中，它在数据恢复，可靠性方面虽然做的差强人意，但经过近几年的稳步发展，现在的PostgreSQL已经可以和Oracle并驾齐驱了。

在PostgreSQL7的时候就引入了WAL（Write Ahead Logging）的概念，即预写日志，所有对数据库的更改，在更改之前必须写到该LOG中，这样，就算机器]]></description><category></category></item><item><title><![CDATA[WS_CLIPCHILDREN与WS_CLIPSIBLINGS]]></title><link>https://blog.youkuaiyun.com/djf_1985/article/details/8437433</link><guid>https://blog.youkuaiyun.com/djf_1985/article/details/8437433</guid><author>djf_1985</author><pubDate>Wed, 26 Dec 2012 09:36:52 +0800</pubDate><description><![CDATA[英文单词解释
clip:夹子、子弹夹、回形针；夹住，修剪
sibling:同胞兄弟或姐妹
overlapped:重叠

这两个Window Stype的特性与异同素来不太清楚，今日作一笔记：
MSDN的解释为：

WS_CLIPCHILDREN   Excludes the area occupied by child windows when you draw within th]]></description><category></category></item><item><title><![CDATA[改变视图背景颜色]]></title><link>https://blog.youkuaiyun.com/djf_1985/article/details/8315887</link><guid>https://blog.youkuaiyun.com/djf_1985/article/details/8315887</guid><author>djf_1985</author><pubDate>Tue, 18 Dec 2012 19:43:01 +0800</pubDate><description><![CDATA[要想改变窗口的背景颜色有不同的方法，不同方法结果可能都是改变了背景的颜色。
但实际中，有些方法是不可取的，比如有人说的在OnDraw中去改变背景颜色，在应用中常会出现闪烁效果，非常不好。
一般来说，采取下面的两种方法比较好些。
1、在窗口创建之前想改变视图背景色，
方法：
BOOL CCarPlatView::PreCreateWindow(CREATESTRUCT& cs)
{]]></description><category></category></item><item><title><![CDATA[VC 鼠标消息WM_SETCURSOR]]></title><link>https://blog.youkuaiyun.com/djf_1985/article/details/8280199</link><guid>https://blog.youkuaiyun.com/djf_1985/article/details/8280199</guid><author>djf_1985</author><pubDate>Mon, 10 Dec 2012 22:26:38 +0800</pubDate><description><![CDATA[VC 鼠标消息WM_SETCURSOR  



OnSetCursor由消息   WM_SETCURSOR   触发   
  The   WM_SETCURSOR   message   is   sent   to   a   window   if   the   mouse   causes   the   cursor   to   move   within   a   w]]></description><category></category></item><item><title><![CDATA[PostgreSQL增量备份]]></title><link>https://blog.youkuaiyun.com/djf_1985/article/details/8000723</link><guid>https://blog.youkuaiyun.com/djf_1985/article/details/8000723</guid><author>djf_1985</author><pubDate>Thu, 20 Sep 2012 16:27:08 +0800</pubDate><description><![CDATA[首先了解下什么是增量备份，按照百度百科Copy如下：
增量备份

　　增量备份是针对于上一次备份（无论是哪种备份）：备份上一次备份后，所有发生变化的文件。

　　（增量备份过程中，只备份有标记的选中的文件和文件夹，它清除标记，既：备份后标记文件，换言之，清除存档属性。）说白了就是：只备份当天有变化的数据，并且是带标记的数据，当备份完后还要清除标记，总之他占用空间小，恢复起来麻烦。]]></description><category></category></item><item><title><![CDATA[VC多线程编程]]></title><link>https://blog.youkuaiyun.com/djf_1985/article/details/7925661</link><guid>https://blog.youkuaiyun.com/djf_1985/article/details/7925661</guid><author>djf_1985</author><pubDate>Thu, 30 Aug 2012 16:01:33 +0800</pubDate><description><![CDATA[VC多线程编程(转载)




VC多线程编程（一）




一、问题的提出
编写一个耗时的单线程程序：
　　新建一个基于对话框的应用程序SingleThread，在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮，ID为IDC_SLEEP_SIX_SECOND，标题为“延时6秒”，添加按钮的响应函数，代码如下：
void CSingleThreadDl]]></description><category></category></item><item><title><![CDATA[VC重绘如何防止控件闪烁]]></title><link>https://blog.youkuaiyun.com/djf_1985/article/details/7794036</link><guid>https://blog.youkuaiyun.com/djf_1985/article/details/7794036</guid><author>djf_1985</author><pubDate>Fri, 27 Jul 2012 15:51:42 +0800</pubDate><description><![CDATA[用MFC如何高效地绘图
　　TouchMe
　　显示图形如何避免闪烁，如何提高显示效率是问得比较多的问题。
　　而且多数人认为MFC的绘图函数效率很低，总是想寻求其它的解决方案。
　　MFC的绘图效率的确不高但也不差，而且它的绘图函数使用非常简单，
　　只要使用方法得当，再加上一些技巧，用MFC可以得到效率很高的绘图程序。
　　我想就我长期（呵呵当然也只有2年多）使用MFC绘图的经验谈]]></description><category></category></item><item><title><![CDATA[关于CString::IsEmpty()的返回值]]></title><link>https://blog.youkuaiyun.com/djf_1985/article/details/7604948</link><guid>https://blog.youkuaiyun.com/djf_1985/article/details/7604948</guid><author>djf_1985</author><pubDate>Sat, 26 May 2012 16:46:37 +0800</pubDate><description><![CDATA[明显是你的CString当字符串数组用来当参数传递进去后返回了。这个例子很容易重现。找个winapi函数，这个函数必须是传递buf进去，然后用CString作为参数传递进去。然后查看CString的长度。
举例如下
C/C++ code

方式一：
CString szFileName;
::GetModuleFileName(NULL, szFileName.GetBuffer(0)]]></description><category></category></item><item><title><![CDATA[install shield 导入注册表文件]]></title><link>https://blog.youkuaiyun.com/djf_1985/article/details/7592885</link><guid>https://blog.youkuaiyun.com/djf_1985/article/details/7592885</guid><author>djf_1985</author><pubDate>Tue, 22 May 2012 22:59:11 +0800</pubDate><description><![CDATA[resource tab page -> Registry Sets -> 右键 -> New Registry Sets -> 右键 -> Import Registry File 即可
 

帮朋友做一个安装盘，需要往注册表里面写东东，使用了一下InstallShield的注册表操作，感觉还是满强大的

首先，我要设置一下操作的注册表项都在哪个目录下，比如都在HKEY_LOCAL_M]]></description><category></category></item><item><title><![CDATA[PostgreSQL触发器2]]></title><link>https://blog.youkuaiyun.com/djf_1985/article/details/7556453</link><guid>https://blog.youkuaiyun.com/djf_1985/article/details/7556453</guid><author>djf_1985</author><pubDate>Fri, 11 May 2012 10:49:18 +0800</pubDate><description><![CDATA[1 触发器概述
       触发器的功能就是为了解决这类问题而设计的，当你更新或查询某个资料表时会触动触发器，触发器就会照您所设计的流程，同步去插入、更新、删除其他资料，你不再需要重复下达多次的SQL命令就能达成一连串资料的同步处理。
        触发器是某个数据库操作发生时被自动调用的函数。可以在INSERT、UPDATE或DELETE操作之前或之后调用触发器。PostgreSQL支持]]></description><category></category></item><item><title><![CDATA[postgresql触发器]]></title><link>https://blog.youkuaiyun.com/djf_1985/article/details/7556318</link><guid>https://blog.youkuaiyun.com/djf_1985/article/details/7556318</guid><author>djf_1985</author><pubDate>Fri, 11 May 2012 10:28:30 +0800</pubDate><description><![CDATA[一个触发器函数可以再一个INSERT，UPDATE， 或者 DELETE 命令之前或者之后执行，要么是对每个被修改的行一次， 要么是每条 SQL 一次。 如果发生触发器事件，那么将在合适的时刻调用触发器的函数以处理该事件。
    触发器函数必须在创建触发器之前，作为一个没有参数并且返回trigger类型的函数定义。 （触发器函数通过特殊的 TriggerData 结构接收其输入，而不是用普通函]]></description><category></category></item><item><title><![CDATA[vector中删除一个元素]]></title><link>https://blog.youkuaiyun.com/djf_1985/article/details/7556303</link><guid>https://blog.youkuaiyun.com/djf_1985/article/details/7556303</guid><author>djf_1985</author><pubDate>Fri, 11 May 2012 10:23:17 +0800</pubDate><description><![CDATA[例如：
class classA
{
public:
int e;
}
vector; class_vector;

如果要删除第三个，似乎只能按着下面这个方式进行
class_vector.erase(&class_vector[2]);
这种方法太麻烦了比如我要删最后一个
class_vector.erase(&class_vector[class_vector.size]]></description><category></category></item><item><title><![CDATA[如何让程序在win7下获得管理员权限]]></title><link>https://blog.youkuaiyun.com/djf_1985/article/details/7528345</link><guid>https://blog.youkuaiyun.com/djf_1985/article/details/7528345</guid><author>djf_1985</author><pubDate>Wed, 02 May 2012 15:56:56 +0800</pubDate><description><![CDATA[VS2010编写的程序可以运行时获取管理员权限；
但是如果是VS2010以前的程序呢？
方法1：移植到VS2010上了；
方法2：：
（1）按照《VS2010与Win7共舞：UAC与数据重定向》上述方法，随便写一个VS2010工程，编译，在这个工程的Debug目录下会有两个文件:   *.exe.embed.manifest 和 *.exe.intermediate.manifest ；]]></description><category></category></item><item><title><![CDATA[VS2005 试用过期 破解]]></title><link>https://blog.youkuaiyun.com/djf_1985/article/details/7393277</link><guid>https://blog.youkuaiyun.com/djf_1985/article/details/7393277</guid><author>djf_1985</author><pubDate>Sun, 25 Mar 2012 23:01:59 +0800</pubDate><description><![CDATA[試試下面的方法，我用過。暫時沒有出現任何問題，但是有問題我不負責，我也是網上找的。
Professional Edition:
      http://www.microsoft.com/downloads/info.aspx?na=90&p=&SrcDisplayLang=zh-cn&SrcCategoryId=&SrcFamilyId=b2c27a7f-d875-47d5-b226-e2]]></description><category></category></item></channel></rss>