- 博客(30)
- 收藏
- 关注
原创 (本来就能)跨进程的剪切板
void CMy0629ADlg::OnBnClickedButton1() //复制进剪切{ // TODO: Add your control notification handler code here if(this->OpenClipboard()) //打开剪切板 { CString str; // HANDLE hClip; //保存::Glob
2015-06-29 20:14:59 454
原创 异步选择机制聊天室
本程序在同一线程内实现了接收端和发送端,与上一章多线程聊天室 的结果类似在编写网络程序时,采用异步选择机制可能提高网络应用程序的性能,如果再配合多线程,将再进一步提高程序性能#include #pragma comment(lib, "ws2_32.lib")BOOL CMy0627AApp::InitInstance(){ CWinApp::InitInstanc
2015-06-28 20:10:15 507
原创 互斥对象 事件对象 关键代码段的比较
互斥对象与事件对象属于内核对象 速度慢 多个进程实现同步,可以使用互斥对象和关键代码段关键代码段 同步速度快 无法设定超时值 容易进入死锁 优先选择互斥对象HANDLE hMutex;::hMutex=::CreateMutexA(NULL,FALSE,NULL);::WaitForSingleObject(::hMutex,INFINITE);::Rele
2015-06-27 12:17:59 519
原创 关键代码段
#include "stdafx.h"#include #include #include using namespace std;DWORD WINAPI fun1(LPVOID lpParameter);DWORD WINAPI fun2(LPVOID lpParameter);int tickets=20;CRITICAL_SECTION g_cs;
2015-06-26 20:41:53 456
原创 利用事件对象 实现线程同步
#include "stdafx.h"#include #include #include using namespace std;DWORD WINAPI fun1(LPVOID lpParameter);DWORD WINAPI fun2(LPVOID lpParameter);int tickets=20;HANDLE g_hEvent;int
2015-06-26 18:09:10 588 1
原创 聊天室 利用多线程
//=================================================stdafx.hstruct RECVPARAM{SOCKET sock; //已创建的套接字HWND hwnd; //对话框句柄};//=================================================0625CDlg.h
2015-06-25 15:41:55 452
原创 保证程序只有一个运行实例
#include "stdafx.h"#include #include #include using namespace std;HANDLE hMutex;int _tmain(int argc, _TCHAR* argv[]){hMutex=::CreateMutexA(NULL,TRUE,"tickets");if(hMutex){if(
2015-06-25 10:10:44 352
原创 互斥对象 可以避免脏读
#include "stdafx.h"#include #include #include using namespace std;DWORD WINAPI m_fun1(LPVOID lpParameter);DWORD WINAPI m_fun2(LPVOID lpParameter);int tickets=30;HANDLE hMutex;
2015-06-25 09:53:46 358
原创 程序 进程 线程 初次多线程
一个程序可以对应多个进程 如 记事本可以打开好多个一个进程也可以同时访问多个程序每个进程有独立的虚拟地址空间,不同进程内,即使使用相同内存地址实际也是不同的物理内存进程由两部分组成1 内核对象2 地址空间 包含所有的可执行模块 或 DLL模块的代码和数据 还包含 栈(stack)和 堆(heap)真正执行代码的是线程,进程只是线程的容器,一个进程可
2015-06-24 20:31:54 327
原创 一个solution多个project 基于win32console的socket
在现有solution中再添加一个projectfile->add->new Project对工程可以右键设置为当前运行工程会在debug文件夹中生成两个exe在本soluton中,先运行0603B.exe 后运行0603C.exe// 首先是服务器端===================================================
2015-06-24 18:23:48 423
转载 串行化(序列化) 使用CArchive进行读写
将类的对象存入硬盘 就称之为串行化void CMainFrame::OnSave1() //存{CFile file("abc.txt",CFile::modeCreate|CFile::modeWrite);::CArchive ar(&file,::CArchive::store);int i=4;char ch='a';float f=1.3f;//数值尾
2015-06-23 18:47:12 501
原创 文件不关闭防断电追加写入 写读注册表
void CMy0622BDlg::write_to_file(void){CString str;this->GetDlgItem(IDC_EDIT1)->GetWindowTextA(str);str=str+"\n";FILE* pfile=::fopen("./abc.txt","a");::fwrite(str,1,::strlen(str),pfile);
2015-06-22 20:51:30 406
原创 自定义消息 + 在状态栏走进度条
1 在mainFrame CPP 中#define WM_DATA WM_USER+100 //定义一个自定义消息2在h 中afx_msg LRESULT OnData(WPARAM wParam,LPARAM lParam); //添加声明DECLARE_MESSAGE_MAP()3 在APP中BEGIN_MESSAGE_MAP(CMainFrame, CFrame
2015-06-20 20:00:19 401
转载 修改应用程序外观 注册和使用自定义窗口结构体
修改大小,标题,能否最大化======================================BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs){if( !CFrameWndEx::PreCreateWindow(cs) )return FALSE;// TODO: Modify the Window class or
2015-06-19 19:19:40 361
原创 用三个函数捕捉消息 先后顺序 判断消息的来源 子窗口的判断
APP 的PreTranslateMessage(MSG* pMsg)APP的ProcessMessageFilter(int code, LPMSG lpMsg)Dlg的PreTranslateMessage(MSG* pMsg)消息被捕捉的顺序是 1 APP 的 PreTranslateMessage2 Dlg 的 PreTranslateMessage3 APP的
2015-06-19 17:21:38 553
原创 修改窗口过程函数:按下回车后 焦点转移到下一个编辑框
为了使EDIT控件能收到回车键 属性mutiline要改为TRUE方法1 ======================================================================WNDPROC prevProc;LRESULT CALLBACK NewEditProc(HWND hwnd,UINT uMsg,WPARAM wP
2015-06-18 19:37:54 1765
转载 用发消息方式实现加法运算
void CMy0618ADlg::OnBnClickedButton1(){// TODO: Add your control notification handler code hereint x,y,z;char char1[10],char2[10],char3[10];//this->SendMessage();::SendMessageA(this->GetDl
2015-06-18 14:11:57 387
原创 卡拉OK式渐变色滚屏
this->m_w=0;this->SetTimer(1,100,NULL);====================================================OnTimerCString str;str="今天天气不错,挺风和日丽的";m_w+=5;CClientDC dc(this);dc.SetTextColor(RGB(0,
2015-06-18 06:18:24 418
原创 绘图,路径
void CMy0617BView::OnDraw(CDC* pDC){CMy0617BDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);if (!pDoc)return;CMy0617BDoc* p2=this->GetDocument();ASSERT_VALID(p2);//valid 有效的CString s
2015-06-17 19:59:40 374
转载 文档窗口标题修改
整个标题的修改: 先在框架类mainframe的PreCreateWindow函数前面加入一条语句:cs.style &= ~FWS_ADDTOTITLE;则函数变为: BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { cs.style &= ~FWS_ADDTOTITLE
2015-06-17 19:09:50 461
原创 绘图 在客户区 在窗口全区 在屏幕全区 透明画刷
void CMy0617AView::OnLButtonUp(UINT nFlags, CPoint point){//CWindowDC dc(this);//客户区//CWindowDC dc(this->GetParent());//窗口区CWindowDC dc(this->GetDesktopWindow());//全屏dc.MoveTo(this->
2015-06-17 18:16:39 586
原创 窗口与窗口类对象不是一回事,MFC 消息映射机制
窗口与窗口类对象不是一回事窗口销毁 意味着窗口类对象的 hwnd=NULL,窗口类对象并不一定deleteMFC 消息映射机制每一个能收消息的类 都有一个消息映射表 使消息与消息函数静态对照即 消息与对应的消息处理函数指针是成对出现的后台还存在一个窗口句柄与C++对象指针的对照表当收到某一消息时消息的第一个参数就指明了与哪个窗口句柄相关 于是找到了c
2015-06-16 20:35:14 411
原创 显示调用基类构造函数,迟绑定,VC++编译链接过程
在派生类构造函数中显示调用基类构造函数public:fish():animal(400,300){}虚函数的多态性是用 "迟绑定"技术 实现的 late bindingVC++编译链接过程每个cpp分别单独预处理 编译 生成各自的obj文件这些obj文件再加上 标准库lib一起链接 生成exe
2015-06-15 21:01:47 425 1
原创 由空白win32工程起,手动设计一个窗口程序
#include #include LRESULT CALLBACK WinSunProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam);int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCm
2015-06-15 19:54:20 387
原创 win32 消息
API 应用程序接口 SDK 软件开发包 包含API消息队列 对于windows程序 运行时 任何操作首先是由系统收到,系统将操作转化为消息发给程序分为进队消息和不进队消息进队消息不进队消息 WM_PAINT添加属性 style=stle | A去除属性 style=style & ~B两种函数调用约定_cdecl 默认方式 参数个数可变
2015-06-15 17:50:14 283
原创 MFC 不同工程的对话框如何复制过来?
把你原来的工程插入到当前工程中(文件-》添加项目-》现有项目),然后拷贝原来的对话框,再到当前工程对话框组,粘贴!然后把对应的h和cpp文件复制过去即可。在复制完成后,从workspace中删除原来的工程即可。
2015-06-11 17:33:52 2056
原创 MFC 多媒体计时器函数timeSetEvent的使用方法
MFC 工程不用自带WM_TIME计时器,用多媒体计时器函数timeSetEvent的方法
2015-06-11 15:34:03 5897
原创 用对话框指针来控制创建关闭和清除子对话框
MFC 对话框 工程.主对话框是A类的实例 A含有成员变量 指针*B B也是一个对话框类下面我们就利用这个指针 实现对子对话框的开启 关闭 和销毁首先是结构上的准备工作,使两个类能够互相调用添加Dialog_EX 类BA include "B.h"public: *B m_son;init(){this->m_son-=NULL;
2015-06-09 20:32:17 1447
原创 初次接触VC++加载自定义LIB 即静态链接
分为两部分第一部分 LIB工程 用来生成LIB文件#ifndef _myfun#define _myfunint myfun(int x,int y){return x+y;}#endif将lib文件放在Visual Studio\VC98\Lib目录里将myfun.h移到Visual Studio\VC98\Include目录里
2015-06-06 18:06:31 807
原创 初次接触vc 运行时动态加载DLL
[A]===========================下载Depends软件 可以查看DLL文件[B]===========================先做生产DLL文件的工程 此工程编译后 将在Debug文件件夹下生成DLL文件此DLL文件用来拷贝到别的工程来#include "stdafx.h"extern "C" int _declspec(dll
2015-06-05 19:32:59 462
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人