C++
tianxian_1019
这个作者很懒,什么都没留下…
展开
-
C++ 关于socket
首先,都是新手,会讲一下注意事项。简单的连接,服务器和客户端网上一把啦全是,只要会创建工程,几乎都能运行下来。接下来讲一些看似不简单的事情。客户端连接服务器,只要设置好端口和IP地址就好。端口号是已知的,不知道的可以问身边的朋友,IP地址你可以自己获取也可以问,通过命令行去看就行。其次,客户端与服务器交互数据,你得看有没有什么协议,比如大小端问题(很重要),决定了你在什么位置放数据。举个栗...原创 2020-01-07 14:30:17 · 184 阅读 · 0 评论 -
backgroundWorker()函数
1、使用backgroundWorker实现多线程大致的步骤是: 1、绑定线程,设置属性 2、调用BackgroundWorker的RunWorkerAsync方法(可以传递参数),它将调用DoWork事件 3、声明DoWork事件的委托方法,在后台执行耗时的操作 4、在耗时操作中判断CancellationPending属性,如果为false则退出 5、如果要向用户界面发送信...原创 2020-01-06 09:00:06 · 317 阅读 · 0 评论 -
C++ socket连接的知识点
1、socket同步与异步同步与异步主要针对客户端,阻塞与非阻塞主要针对服务器端。1. 同步,就是我调用一个功能,该功能没有结束前,我死等结果。2. 异步,就是我调用一个功能,不需要知道该功能结果,该功能有结果后通知我(回调通知)3. 阻塞, 就是调用我(函数),我(函数)没有接收完数据或者没有得到结果之前,我不会返回。4. 非阻塞, 就是调用我(函数),我(函数)立即返回,...原创 2019-12-30 17:08:43 · 371 阅读 · 0 评论 -
C++截取数组中的几位
1、char recv_buf[MAX]是我们自己定义的源数据recvf是最后我们存放的数据。如下函数是截取第二位到第8位。 char recvf[MAX]; int i; for (i = 0; i + 2 < 10; i++) { recvf[i] = recv_buf[i + 2]; }...原创 2019-12-26 09:56:10 · 5979 阅读 · 0 评论 -
C++ 将string类型放到数组里面并输出
string demo = "123456"; char num[100] = { 0 }; int len = demo.size(); //长度为6 memcpy(num, demo.c_str(), len); for (int i = 0; i <= len; i++) { cout << num[i]; }原创 2019-12-24 13:27:12 · 2698 阅读 · 0 评论 -
C++ String的序列化和反序列化API(ProtoBuf )
//C++string序列化和序列化APIbool SerializeToString(string* output) const;bool ParseFromString(const string& data);//使用:void set_people() { wp.set_name("sealyao"); wp.set_id(12...转载 2019-12-23 13:38:06 · 1914 阅读 · 0 评论 -
LoadImage加载失败(win32)
首先图片必须时点BMP格式,运行,运行不出来就加断点,加入断电后,看看LoadImage的左值是否为空。如果为空,则重新打开图片,**利用Windows10自带的系统自带的照片查看器双击打开图片,点击另存为24位位图的BMP格式,**再用 LoadImage 打开就成功的返回左值了。...原创 2019-11-11 17:26:07 · 2329 阅读 · 3 评论 -
win32学习之路(四)
1、PAINTSTRUCT是一种包含了某应用程序用来绘制它所拥有的窗口客户区所需要的信息的结构体。2、WM_DRAWITEM,计算机语言,用在组合框,列表框或菜单上的代码。3、SelectObject 把一个对象(位图、画笔、画刷等)选入指定的设备描述表。新的对象代替同一类型的老对象。4、GetCursorPos获取鼠标坐标5、SetCapture该函数在属于当前线程的指定窗口里设置鼠标捕...原创 2019-11-08 16:50:24 · 171 阅读 · 0 评论 -
判断点是否在矩形内
第一种方法: if (!(m_nCol >= 150 && m_nRow >= 300) && (m_nCol <= 500 && m_nRow <= 340)) { HBRUSH hbrush;//创建新画刷 hbrush = CreateSolidBrush(RGB(255, 255, 255)...原创 2019-11-08 10:56:09 · 1132 阅读 · 0 评论 -
win32 修改button的背景色
废话不多说直接代码贴上 case WM_CTLCOLORBTN : if ((HWND)lParam == GetDlgItem(hWnd, IDC_BGCOLOR_BTN)) { HWND hbn = (HWND)lParam; HDC hdc = (HDC)wParam; RE...原创 2019-11-07 13:15:59 · 2477 阅读 · 0 评论 -
win32学习之路button(三)
最近一直在学习win32,用的工具是VS2019,一直在学习,一直在有任务,一直在不断的解决问题中,真的好难啊。当然我是用的纯API函数,没有托任何一个控件。虽不说之前的计算器,就单说一个小小的button,一个button就能折磨我一个多星期。不是不想做,是真的无能为力,搜不到相关的知识点。那接下来我就来讲讲为什么一个小小的button能折磨我这么久。申请一个button 我相信谁都会把,...原创 2019-11-04 14:22:23 · 365 阅读 · 0 评论 -
win32 API函数( InvalidateRect)
1、 InvalidateRect是一个函数,该函数向指定的窗体更新区域添加一个矩形,然后窗体跟新区域的这一部分将被重新绘制。函数原型:BOOL InvalidateRect(HWND hWnd, // handle of window with changed update regionCONST RECT *lpRect, // address of rectangle coordina...原创 2019-10-28 10:41:53 · 1907 阅读 · 0 评论 -
win32绘制
Windwns可以给制直线、精圆弧线(椭圆周上的曲线)和贝塞尔样条曲线。以下是7种画线函数:1、LineTo,画直线2、Polyline 和PlylineTo,画一条由多条首尾相连的直线构成的折线3、PolyPolyline,画多条折线4、Arc,画椭圆弧线5、PolyBezier和PolyBezierTo,画贝塞尔样条曲线另外,Windows NT还支持其他3种画线函数:6、Ar...原创 2019-10-25 20:28:55 · 369 阅读 · 0 评论 -
duilib中托盘图标实现右键菜单
1.菜单注册LRESULT ViewForm::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam){ switch (uMsg) { case WM_USER: //自己写的标志位,详情请看上一篇托盘的那一篇 { if (WM_RBUTTONDOWN == lParam) { MenuWnd* pMenu = n...原创 2019-10-25 14:47:12 · 934 阅读 · 3 评论 -
VS2019下出现 error C2760: 语法错误: 意外的令牌“标识符”,预期的令牌为“;” 的解决办法...
属性-c/c+±语言-符合模式:设置成 “否”转载 2019-10-21 08:43:38 · 2313 阅读 · 0 评论 -
C++命名规则(补漏)
**第一次了解到**以两个下划线或下划线和大写字母打头的名称被保留给实现(编译器及其使用的资源)使用过,以一个下户线开头的名称被保留给实现,用作全局标识符。...原创 2019-10-18 21:28:29 · 176 阅读 · 0 评论 -
6种类型的C++语句
最近会总结一下C++ 的基本知识点。1、声明语句:定义函数种使用的变量的名称和类型。2、赋值语句:使用赋值运算符(=)给变量赋值,貌似还有equal等关键字。3、消息语句:将消息发送给对象,激发某种行为。4、函数调用:执行函数,被调用的函数被执行完毕后,程序返回到函数调用语句后面的语句。5、函数原型:声明函数的返回类型、函数接受的参数数量和类型。6、返回语句:将一个值从被调用的函数那里...原创 2019-10-18 21:11:18 · 1534 阅读 · 1 评论 -
MessageBox()相关用法
MessageBox() 功能显示一个消息对话框。 语法MessageBox(text,title{,icon{,button{,default}}}) 参数title:string类型,指定消息对话框的标题text:指定消息对话框中显示的消息,该参数可以是数值数据类型、字符串或boolean值icon:Icon枚举类型,可选项,指定要在该对话框左侧显示的图标button:Button...转载 2019-10-15 17:18:54 · 722 阅读 · 0 评论 -
win 32 托盘图标并右键显示
最近写程序遇到写学托盘图标的问题,一开始拿MFC写的比较简单,然后就拿win32写的,大致浏览了一下网上的各个大佬写的,我又写了一版,很完善,我能运行出来,谢谢大家,顺道帮忙点个赞谢谢。1、添加头文件#define WM_SHOWTASK WM_USER+10#include <shellapi.h>#pragma comment(lib, "shell32.lib...原创 2019-10-14 15:39:46 · 668 阅读 · 0 评论 -
duilib中添加托盘图标
我是在InitWindow()函数中直接添加的代码:在.h文件中添加NOTIFYICONDATA m_trayIcon;在.cpp文件中添加memset(&m_trayIcon, 0, sizeof(NOTIFYICONDATA));m_trayIcon.cbSize = sizeof(NOTIFYICONDATA);m_trayIcon.hIcon = ::LoadIcon...原创 2019-10-11 13:23:02 · 789 阅读 · 0 评论 -
C++中的智能指针
1.什么是智能指针智能指针内存管理要解决的根本问题是:一个堆对象,在被多个对象引用时,如何释放资源的问题。2.智能指针有没有内存泄露的情况当两个对象相互使用一个shared_ptr成员变量指向对方,会造成循环引用,使引用计数失效,从而导致内存泄漏。3.智能指针的内存泄漏如何解决C++提供了三种智能指针:std::shared_ptr ; std::uniq_ptr ; std::weak...转载 2019-10-10 15:03:10 · 97 阅读 · 0 评论 -
const修饰成员函数的目的是什么?
const修饰的成员函数表明函数调用不会对对象做出任何更改,事实上,如果确认不会对对象做更改,就应该为函数加上const限定,这样无论const对象还是普通对象都可以调用该函数。...原创 2019-10-10 13:58:36 · 985 阅读 · 0 评论 -
++i和i++的区别
++i和i++的区别首先这是运算符和变量的组合(暂且说是组合吧),前者是自增后取值,后者是先取值后自增。#include <iostream>using namespace std;int main(){ int a = 0; int b = 0; int c = a++; int d = ++b;//b = b + 1;d = b; ...原创 2019-10-10 13:56:29 · 292 阅读 · 0 评论 -
win32 去除标题栏和菜单 ,并实现鼠标在上半部分可以拖动窗口
隐藏标题栏SetWindowLong(hWnd, GWL_STYLE, GetWindowLong(hWnd, GWL_STYLE) & ~WS_CAPTION);SetWindowPos(hWnd, NULL, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_DRAWFRAME);菜单栏为空ATOM MyRegis...原创 2019-09-11 15:53:09 · 1537 阅读 · 1 评论