
C++
文章平均质量分 58
BU折腾
这个作者很懒,什么都没留下…
展开
-
windows上获取系统时间
一、 通过time_t和tmstruct tm{ int tm_sec; // seconds after the minute - [0, 60] including leap second int tm_min; // minutes after the hour - [0, 59] int tm_hour; // hours since midnight - [0, 23] int tm_mday; // day of the month - [..原创 2021-05-18 15:41:24 · 1972 阅读 · 2 评论 -
win32 创建一个透明窗口
#pragma once#include "stdafx.h"#include "resource.h"class TransparentWnd{public: TransparentWnd(); ~TransparentWnd(); BOOL Create(__in DWORD dwExStyle, __in_opt LPCWSTR lpWindowName, __in DWORD dwStyle, __in int X, __in int Y, __in int nWidth.原创 2021-05-12 17:05:08 · 3291 阅读 · 1 评论 -
用DirectX显示video时加边框
1、是给每帧图像加一个边框, 显示出来的视频的每一帧上下左右的几个像素都被填充的颜色覆盖掉了。HRESULT Demo::ShowVideo(D3DFORMAT Format, BYTE * image, int width, int height, int borderWidth){ HRESULT hr; int resizeYuvW = width; int resizeYuvH = height; // 锁定 swap-chain 表面. D3DLOCKED_RECT lr;原创 2020-07-16 14:57:47 · 473 阅读 · 0 评论 -
win32 捕获锁屏消息
1. 注册,一般在创建窗口的时候调用注册,销毁窗口的时候反注册。BOOLWINAPIWTSRegisterSessionNotification( HWND hWnd, DWORD dwFlags );BOOLWINAPIWTSUnRegisterSessionNotification( HWND hWnd );2.在消息循环中添加对WM_WTSSESSION_CHANGE消息的处理.我是这样用的:LRESULT Demo::WndP原创 2020-06-23 15:42:55 · 1297 阅读 · 0 评论 -
win32 实现滚屏的两种方式
代码实现的优点粗燥,思路是这么个思路。方法1. 在timer里面每次重画窗口LRESULT Demo::WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){ switch (message) { case WM_PAINT: { PAINTSTRUCT ps; RECT r; HDC hdc = BeginPaint(hWnd, &ps); HFONT hFont, hOldFont;原创 2020-06-19 17:49:27 · 444 阅读 · 0 评论 -
多字节与宽字符(Wide character& Mutilbyte character)
1. 什么是多字节,宽字符?起初,C语言在设计的时候,英文用一个字节(8位)就能编码,但是随着字符数量越来越庞大,无法使用一个字节进行编码。于是出现了两种表示字符集的方法:(1)宽字符(每个字符使用相同的位长,也就是所有的字符占用相同的字节个数) (2)多字节字符(每个字符可以是一个或者多个字节)2.常见的字符集一般有ASCII字符集、GB2312字符集、BIG5字符集、...原创 2020-06-19 16:58:13 · 480 阅读 · 0 评论 -
大端序小端序
最近遇上好几次关于大端序、小端序的问题,记混了,想了好半天,得亏写对了 。今天总结一下,希望记住了。大端序:数据的高位保存在内存的低地址中,而数据的低位,保存在内存的高地址中小端序:数据的高位保存在内存的高地址中,而数据的低位,保存在内存的低地址中测试编译器是大端序还是小端序的代码:#include using namespace std;int main(void){原创 2013-11-01 19:54:04 · 805 阅读 · 0 评论 -
callback函数
今天面试的时候被问到了CallBack函数,回来整理一下。这是从百度百科看来的,还是不太明白,先这样吧,我有时间去翻翻书再写。回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响原创 2013-11-14 21:32:26 · 730 阅读 · 0 评论 -
无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup
我用vs2008建立了一个 win32 应用程序 空项目,添加了一个cpp文件,内容如下:#include#includeusing namespace std;int main(){ string s; cin>>s; cout<<s<<endl; return 0;}出现问题:1>MSVCRTD.lib(crtexew.obj) : error LNK2019原创 2013-07-15 21:29:22 · 1128 阅读 · 0 评论 -
自己构造一个Tree类,当鼠标移动到树的节点上的时候用提示框显示该节点的信息
新建一个类CMyTree继承自CTreeCtrlMyTree.h中添加函数声明:afx_msg BOOL OnToolTipText(UNIT id, NMHDR *pNMHDR, LRESULT *pResult);virtual INT_PTR OnToolHitTest(CPoint point, TOOLINFO *pTI) const;在MyTree.cpp中原创 2015-07-21 14:35:33 · 1551 阅读 · 0 评论 -
复制一个Dialog后DoModal()返回-1
有一个对话框IDD_Sign,对应一个类CSign。我想再做一个IDD_Sign_Other对话框,调用CSign类的时候,根据不同条件分别加载这两个对话框。修改CSign的构造函数CSign(BOOL bOther, CWnd *pParent):CDialog(bOther?IDD_Sign_Other:IDD_Sign, NULL){....}直接在资源里面复制IDD原创 2015-08-16 21:43:57 · 2256 阅读 · 0 评论 -
Deque(双向队列)
一、Deque是一种优化了的、对序列两端元素进行添加和删除操作的基本序列容器。它允许较为快速地随机访问,但它不像vector 把所有的对象保存在一块连续的内存块,而是采用多个连续的存储块,并且在一个映射结构中保存对这些块及其顺序的跟踪。向deque 两端添加或删除元素的开销很小。它不需要重新分配空间,所以向末端增加元素比vector 更有效。实际上,deque 是对vector 和list 优缺点原创 2013-10-02 23:27:05 · 760 阅读 · 0 评论 -
strcpy和memcpy的区别
strcpy和memcpy都是标准C库函数,它们有下面的特点。strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。已知strcpy函数的原型是:char* strcpy(char* dest, const char* src);memcpy提供了一般内存的复制。即memcpy对于需要复制的内容没有限制,因此用途更广。转载 2013-09-26 19:44:27 · 566 阅读 · 0 评论 -
C++/C宏定义中##与#的含义
宏参数本身可以做一些特殊处理,如将宏参数置于字符串中,将宏参数与别的字符组合形成新的标识符等。这两项可以分别由#和##操作符完成。 “##”是连接符。下面看例子:#include using namespace std;#define PrintVar(v,index) coutint main(){ int i1 =原创 2013-07-08 11:40:25 · 834 阅读 · 0 评论 -
main WinMain入口函数比较
本文是转载,原文地址http://blog.youkuaiyun.com/jackalfly/article/details/8235225C/C++语言中的main函数, 经常带有参数argc, argv, 如下:int main(int argc, char** argv)int main(int argc, char* argv[]) //也可以是wchar_t 或 tchar转载 2013-07-15 21:54:19 · 1190 阅读 · 0 评论 -
sizeof和strlen
1、sizeof计算栈中分配的大小,静态变量static是存放在全局数据区的,是不会计算在内的2、sizeof不是函数,也不是一元运算符,它是个类似宏定义的特殊关键字,sizeof()。括号内的内容在编译过程中是不被编译的,而是被替代类型,如int a=8; sizeof(a)。在编译过程中不管a是什么值,只是被替换成类型sizeof(int),结果为4。如果是sizeof原创 2013-07-19 20:12:31 · 608 阅读 · 0 评论 -
C++中初始化列表
1.初始化列表: 与其他函数不同,构造函数除了有名字,参数列表和函数体之外,还可以有初始化列表,初始化列表以冒号开头,后跟一系列以逗号分隔的初始化字段。struct foo { string name ; int id ; foo(string s, int i):name(s), id(i){} ; // 初始化列表};原创 2013-07-08 11:48:56 · 1084 阅读 · 0 评论 -
虚函数与非虚函数在父类、子类之间的调用
#include using namespace std;class A{public: A(){ cout<<"A"<<endl; } ~A(){} virtual void func1() { cout<<"only in A"<<endl; } virtual void func2() { cout<<"virtual in A"<<endl; }原创 2013-07-28 21:58:10 · 4717 阅读 · 0 评论 -
深入理解C++的动态绑定和静态绑定
原文地址:http://blog.youkuaiyun.com/chgaowei/article/details/6427731 (一起感谢博主吧!)为了支持c++的多态性,才用了动态绑定和静态绑定。理解他们的区别有助于更好的理解多态性,以及在编程的过程中避免犯错误。需要理解四个名词:1、对象的静态类型:对象在声明时采用的类型。是在编译期确定的。2、对象的动态类型:目前所指对象的类型。是在转载 2013-09-08 20:04:53 · 672 阅读 · 0 评论 -
c++笔试题汇总
原文地址:http://blog.youkuaiyun.com/dongfengsun/article/details/1541926 ①链表反转单向链表的反转是一个经常被问到的一个面试题,也是一个非常基础的问题。比如一个链表是这样的: 1->2->3->4->5 通过反转后成为5->4->3->2->1。最容易想到的方法遍历一遍链表,利用一个辅助指针,存储遍历过程中当前指针指向的下转载 2013-09-12 23:17:33 · 756 阅读 · 0 评论 -
List (双向链表)
参考:http://www.360doc.com/content/11/0526/14/2150347_119530996.shtml一、List是一个线性链表结构,它的数据由若干个节点构成,每一个节点都包括一个信息块(即实际存储的数据)、一个前驱指针和一个后驱指针。它无需分配指定的内存大小且可以任意伸缩,这是因为它存储在非连续的内存空间中,并且由指针将有序的元素链接起来。由于其结构的原因原创 2013-10-02 19:53:24 · 833 阅读 · 0 评论 -
Vector(向量容器)
Vector是一个线性顺序结构。相当于数组,但其大小可以不预先指定,并且自动扩展。它可以像数组一样被操作,由于它的特性我们完全可以将vector 看作动态数组。一、在创建一个vector 后,它会自动在内存中分配一块连续的内存空间进行数据存储,初始的空间大小可以预先指定也可以由vector 默认指定,这个大小即capacity ()函数的返回值。当存储的数据超过分配的空间时vector 会重新原创 2013-10-01 20:34:09 · 1155 阅读 · 0 评论 -
c/c++中extern "C"
1.extern是c/c++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在“全局”范围中使用2.exterc “C”("C"必须大写)包含两重含义:首先,被它修饰的目标是“extern”的;其次,被它修士的目标是“C”的。3.由于extern表达的是“全局”的含义,而static关键字则表明变量或函数只能局限在单个模块内使用原创 2013-07-08 11:45:57 · 746 阅读 · 0 评论