- 博客(63)
- 资源 (3)
- 收藏
- 关注
原创 nginx环境下强制http转https设置方法(全站跳转301)
Nginx环境下强制http转https设置方法:方法一:下面代码照搬过去就行。无需做任何修改。春哥技术博客推荐此种方法,非常简单,改完以后实时生效,不用重启服务器。if($scheme=http){return301https://$host$request_uri;}方法二:下面代码照搬过去就行。无需做任何修改。if($server_port=8...
2019-12-20 08:55:41
2053
原创 实战分享自己一个网站运营的故事
域名的确立 想做网站第一步就要把域名确定好,域名就是门面,是基础,一个好的域名可以让人耳目一新,一下子记住,我当时是给一个客户做的,他主要是做成都苹果手机维修这块,当我去找域名发现和aplle相关好多域名都注册了,我就想着苹果手机维修,苹果手机是iphone,维修MRO是英文Maintenance, Repair & Operations 的缩写,合在一起是iphonemro,当时...
2019-06-29 16:28:14
450
原创 异步UDP聊天器
BOOL CChat_AsycDlg::InitSocket(){ m_socket=WSASocket(AF_INET,SOCK_DGRAM,0,NULL,0,0); if(INVALID_SOCKET==m_socket) { MessageBox("创建套接字失败"); /*int nCodeError=::GetLastError(
2013-10-23 11:57:12
832
原创 打造自己的TCP通信类
黑客编程弄的,MyTcpTran类MyTcpTran.h// MyTcpTran.h: interface for the CMyTcpTran class.////////////////////////////////////////////////////////////////////////#if !defined(AFX_MYTCPTRAN_H__871B589A_
2013-09-26 17:18:22
1395
原创 蛋疼的extern
extern可以置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。另外,extern也可用来进行链接指定。 程序的生成:先编译后链接。 现代编译器一般采用按文件编译的方式,因此在编译时,各个文件中定义的全局变量是互相不透明的。也就是说,在编译时,全局变量的可见域限制在文件内部。链接时它的可见范围被扩大到了整个程
2013-09-25 15:59:24
817
原创 如何解决vs高级版本 不安全函数提示的问题
我用一些老版本的如sprintf等函数,老是跳出不安全的警告。让我使用sprintf_s可以用 #define _CRT_SECURE_NO_WARNINGS来取消报警。注:加在最前面
2013-09-18 11:21:20
1972
原创 网络编程
一.TCP流式套接字的编程步骤在使用之前须链接库函数:工程->设置->Link->输入ws2_32.lib,OK!服务器端程序:1、加载套接字库2、创建套接字(socket)。3、将套接字绑定到一个本地地址和端口上(bind)。4、将套接字设为监听模式,准备接收客户请求(listen)。5、等待客户请求到来;当请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字
2013-09-17 20:56:36
930
原创 vs2012 怎么添加ws2_32.lib 库
vc6.0在使用之前须链接库函数:工程->设置->Link->输入ws2_32.lib,OK!vs2012 项目>属性->配置属性->链接器->输入 :附加依赖项 中加入要链接的库即可。或者 #pragma comment(lib,"ws2_32.lib")
2013-09-14 09:40:14
5628
转载 warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)
The Visual Studio compiler makes a big deal of int to bool conversions. For example, if you do: bool bPunct = ispunct(c); // causes warning You'll get the war
2013-09-11 14:49:28
2469
原创 文件读写
void CMy12View::OnFileWrite() { // TODO: Add your command handler code here char ch[]="ADFADAKLDJFKLANSDFA"; CFile file("1.txt",CFile::modeReadWrite|CFile::modeCreate); file.Write(ch,sizeof(ch)
2013-09-04 12:53:37
654
原创 获取系统鼠标的个数及屏幕的大小
//获得鼠标的个数 int nButtonCout=::GetSystemMetrics(SM_CMOUSEBUTTONS); //Windows::GetSystemMetrics(); 用GetSystemMetrics获取屏幕的宽度和高度 int x, y; x = GetSystemMetrics(SM_CXSCREEN);//屏幕宽度
2013-08-27 12:46:23
884
原创 GDI画刷和CBrush类
// 方法一 画刷的创建 CBrush bsh1(RGB(255,0,0)); //方法二 创建一个没有初始化的画刷 CBrush bsh2; bsh2.CreateSolidBrush(RGB(255,0,0)); //方法三 可以通过LOGBRUSH 结构体 初始化CBrush::CreateBrushIndirect() 函数 ,和CPen类似 //创建一个阴影线画刷 CBru
2013-08-26 13:15:04
706
原创 GDI画笔和CPen类
//创建GDI画笔,选入设备描述表CDC::SelectObject() //方法一 创建的一个初始化的画笔 CPen pen1(PS_SOLID,1,RGB(255,0,0));//PS_SOLID 连续的实线 //方法二创建一个未初始化的画笔CPen::CreatePen() CPen pen2; pen2.CreatePen(PS_SOLID,1,RG
2013-08-26 12:58:05
863
原创 获取设备信息
CClientDC dc(this); //以像素点进行计算 int cx=dc.GetDeviceCaps(HORZRES); int cy=dc.GetDeviceCaps(VERTRES);
2013-08-26 12:41:33
770
原创 坐标转换
CDC::LPtoDP();//将逻辑坐标值转换为设备坐标值 CDC::DPtoLP();//将设备坐标值转换为逻辑坐标值 //例子一 CRect rect; GetClientRect(&rect); CPoint point(rect.Width()/2,rect.Height()/2); CClientDC dc(this);
2013-08-24 13:55:47
649
原创 MFC GDI映射模式
dc.Rectangle(0,0,100,50); 使用Rectangle函数画图的时候,不用告诉GDI画一个100像素宽,50像素高的矩形,而是告诉它画一个100单位宽,50单位高的矩形 默认映射模式是:MM_TEXT //通过SetMapMode()函数改变映射模式 dc.SetMapMode(MM_LOMETRIC); 前面的几
2013-08-24 13:45:02
936
原创 MFC 绘图模式
dc.SetBkMode(TRANSPARENT);//设置背景为透明 CDC::SetROP2(R2_COPYPEN);//默认是 将像素点复制到平面上 //通过反转已有的像素点的颜色画线 dc.SetROP2(R2_NOT); dc.MoveTo(0,0); dc.LineTo(100,100);
2013-08-24 13:27:08
882
原创 MFC设备描述表
//GetDc获得CDC的指针 CDC *PDc=GetDC(); ReleaseDC(PDc);//释放DC //若上面的代码出现在OnPaint() 中,则需要使用CWnd::BeginPaint()和CWnd::EndPaint() //代替GetDc 和 ReleaseDc PAINTSTRUCT ps; /*
2013-08-24 13:16:45
1068
转载 如何提高标准输入输出流的速度
在网上查看别人的ACM代码时,发现别人输入输出语句用的总是scanf与printf,有点不解,还以为他们用的都是C语言,而非C++,但今天做的一道题(Sort):发现与网上的其他高手使用完全相同的方法,使用scanf及printf的代码提交后Accepted,而使用cin及cout的却Time Limit Exceeded,代码如下:代码一(Accepted):#includeusi
2013-08-23 17:46:14
1054
原创 windows编程模型
windows基于事件、驱动消息为驱动的系统。函数功能:该函数调用缺省的窗口过程来为应用程序没有处理的任何窗口消息提供缺省的处理。该函数确保每一个消息得到处理。调用DefWindowProc函数时使用窗口过程接收的相同参数。函数原型:LRESULT DefWindowProc(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam);应用程
2013-08-23 13:05:25
651
原创 窗口的枚举和查找
FindWindow( lpClassName, {窗口的类名} lpWindowName: PChar {窗口的标题}): HWND; {返回窗口的句柄; 失败返回 0}//FindWindowEx 比 FindWindow 多出两个句柄参数:FindWindowEx( Parent: HWND; {要查找子窗口的父窗口句柄}
2013-08-14 13:06:15
728
原创 CREATESTRUCT cs 结构体
typedef struct tagCREATESTRUCT {LPVOID lpCreateParams; // 创建窗口的基本参数HANDLE hInstance; // 拥有将创建的窗口的模块实例句柄HMENU hMenu; // 新窗口的菜单句柄HWND hwndParent; // 新窗口的父窗口句柄int cy; // 新窗口的高度int cx; // 新窗口的
2013-08-13 13:03:14
1240
原创 GDI映射模式
//dc.SetMapMode(MM_TEXT);//默认映射方式 //以MM_ANISOTROPIC模式画一个椭圆,使他与所在的窗口四边相接 CRect rect; CClientDC dc(this); GetClientRect(&rect);//是获得窗口的当前的客户区 dc.SetMapMode(MM_ANISOTROPIC);
2013-08-10 13:59:56
711
原创 内存分配方式
内存分配方式内存分配方式有三种:[1]从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。[2]在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。[3]从堆上分配,亦称动态内存分配。程序
2013-07-31 16:45:13
780
1
原创 自定义消息的发送与响应:
1、自定义消息号#define WM_MYMSG (WM_USER+8)2、在头文件中添加消息响应函数的声明afx_msg void OnShowTest(WPARAM wParam, LPARAM lParam);//声明消息映射3、在CPP文件中添加消息响应函数的实现:void CRostDlg::OnShowTest(WPARAM wParam, LPARAM lPa
2013-07-31 13:13:01
854
转载 孙鑫MFC第七课输入焦点的传递
1.对话框用户界面程序的编写(添加对话框)2.如何在程序运行时产生和销毁控件。3. 静态文本框上响应函数的编写 3.如何利用对话框类的成员函数向控件发送消息和获取对话框控件的类指针,4.如何直接利用对话框控件类操纵对话框控件(发送消息和直接调用成员函数)。5. 如何向对话框控件关联数据成员及其实现机理,6.对话框控件的几种操作方式的优劣比较分析。7.如何实现对话框的
2013-07-26 21:28:43
1168
转载 system("pause") 和getchar()
/*----------------------------------------------------------------------------*/system("pause") 和getchar()有什么区别呢 ?system("pause") 是调用WINDOWS CONSOLE APP下的命令 PAUSE的。 system("const char*")就是调用WI
2013-07-25 17:55:25
1446
原创 MFC 小总结
WndProc(HWND hWnd,UINT uMessageType,WPARAM wP,LPARAM)参数wParam表明窗口是非最小化还是非最大化,是最小化、最大化,还是隐藏。lParam参数包含了新窗口的大小,新宽度和新高度均为16位值,合在一起成为32位的lParam。 WINDEF.H中提供了帮助程序写作者从lParam中取出这两个值的宏。static int cxClient,
2013-07-25 16:18:15
676
转载 c++中的虚函数
虚函数C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。什么是虚函数?在一个类
2013-07-24 11:41:54
630
转载 hack编程
#include "stdio.h"#include "windows.h"#ifdef _DEBUG#define MsgBox(lpText) MessageBox(NULL,lpText,NULL,NULL)#else#define MsgBox(lpText)#endif#define LOAD_BASE_ADDR 0x03140000#define S
2013-07-24 11:34:42
940
原创 对话框动态生成控件
void CDiaTest::OnClickedBtnAdd(){ // TODO: 在此添加控件通知处理程序代码 //定义全局变量m_bCreate /*if(m_bCreate==FALSE) { m_btn.Create((CString)"新添加",BS_GROUPBOX|WS_VISIBLE,CRect(0,0,100,100),this,120); m_bCreate=T
2013-07-23 22:14:57
617
原创 设置窗口和文档标题
文档标题的改变BOOL CCeshi2Doc::OnNewDocument(){ if (!CDocument::OnNewDocument()) return FALSE; // TODO: add reinitialization code here // (SDI documents will reuse this document) SetTitle("文档标题");
2013-07-23 12:38:51
768
转载 Visual C++/MFC入门教程 + 控件说明 总结篇
Visual C++/MFC入门教程 VC开发指南1.1 如何学好VC 这个问题很多朋友都问过我,当然流汗是必须的,但同时如果按照某种思路进行有计划的学习就会起到更好的效果。万事开头难,为了帮助朋友们更快的掌握VC开发,下面我将自己的一点体会讲一下: 1、需要有好的C/C++基础。正所谓“磨刀不误砍柴工”,最开始接触VC时不要急于开始Windows程序开发,而是应该进行一些字符
2013-07-23 11:51:05
1840
原创 框架类截获视类消息
BOOL CMainFrame::OnCommand(WPARAM wParam, LPARAM lParam){ // TODO: Add your specialized code here and/or call the base class int MenuCmdId=LOWORD(wParam); CMenu2View *pView=(CMenu2View*)G
2013-07-23 11:28:08
740
原创 动态添加菜单\删除菜单\插入菜单
CMenu MyMenu,poPumenu; /*MyMenu.CreateMenu(); MyMenu.AppendMenuA(MF_STRING,IDM_MENU0,"文件"); MyMenu.AppendMenuA(MF_STRING,IDM_MENU1,"编辑"); MyMenu.AppendMenuA(MF_STRING,IDM_MENU2,"查看
2013-07-21 18:20:49
1287
转载 VS2012中,为MFC程序添加右键菜单
本文是读者在学习孙鑫的《VC++深入详解》时,对一些在VS2012与VC6.0不同地方,需要修改的代码进行整理得到的。在VC++6.0中,在project -》addtoproject-》……之后进行选择就可以为工程添加一个单击右键弹出菜单功能,但是在VS中没有Pop-UpMenu组件,右键菜单需要手动添加。添加方法如下:1、在资源视图中添加所需的右键菜单2、选择相应的类,单文档时
2013-07-18 22:48:30
1874
原创 CMenu 类操作
//针对同一个菜单响应在四个类共有一个响应函数时候,他们的先后顺序是View类,Doc类,MainFrame类,App类。 //Doc类 App类不是从CWdn派生来的 // CClientDC dc(this); //GetMenu()->GetSubMenu(0)->SetDefaultItem(1,TRUE);//默认菜单 //SetDefaultItem它
2013-07-17 12:58:15
869
转载 Windows函数呼叫
LoadIcon 加载图标供程序使用。 LoadCursor 加载鼠标光标供程序使用。 GetStockObject 取得一个图形对象(在这个例子中,是取得绘制窗口背景的画刷对象) 。 RegisterClass 为程序窗口注册窗口类别。 MessageBox 显示消息框。 CreateWindow 根据窗口类别建立一个窗口。
2013-07-13 11:54:00
735
转载 GetTextMetrics与GetTextExtent的区别
GetTextMetrics与GetTextExtent的区别 收藏 GetTextMetrics:获取当前字体的信息GetTextExtent:获取特定的字符串在屏幕上所占的宽度和高度CDC::GetTextMetrics作用:返回当前设备描述表中的当前所用的字体的信息函数原型:BOOL GetTextMetrics( LPTEXTMETRIC lpMe
2013-07-10 13:09:10
857
原创 插入光标
void CTextView::OnDraw(CDC* pDC){ CTextDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return; //CString str("c++"); CString str; str.LoadString(IDS_
2013-07-09 22:13:19
719
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人