WIN编程
文章平均质量分 86
ouyangshima
找到心中的那份自信
技术不牢,地动山摇
展开
-
Unicode下的CString与String之间的相互转换
1. CString to StringString strA=(LPCSTR)CStringA(cstrA);2. String to CStringCString cstrA=(CString)strA.c_str();原创 2012-11-01 13:22:35 · 1414 阅读 · 0 评论 -
[Win32]只允许最大化最小化窗口,禁止双击标题栏、拖动窗体、点击复原按钮来改变窗口大小
//^WS_THICKFRAME 禁止拖动边框 HWND hWnd = CreateWindow(g_szAppWindowClass, g_szAppTitle, WS_OVERLAPPEDWINDOW ^ WS_THICKFRAME, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);原创 2013-06-06 12:39:57 · 6773 阅读 · 0 评论 -
[Win]进程间通信——邮槽Mailslot
进程间通信进程的地址空间是私有的。出于安全性的目的,如果一个进程不具有特殊的权限,是无法访问另外一个进程的内存空间的,也无法知道内存中保存的数据的意义。但是在一些具体的应用情况下需要多个进行相互配合,有时计算机用户也需要在多个应用程序之间交换数据。Windows系统下,在进程间通信或共享数据的方式如下。邮槽( Mailslot)。邮槽是最为简单的进程间数据共享方式,一个进程创建原创 2013-06-21 22:02:27 · 7087 阅读 · 0 评论 -
[DLL]创建和使用静态库Lib
创建静态库项目1.创建静态项目MathFucsLib:选择 win32控制台应用程序->输入MathFuncsLib项目名称->下一步->选择静态库;取消默认的预编译头->完毕2.向静态库添加类MyMathFuncs:#pragma once//MathFuncsLib.h namespace MathFuncs{ class MyMathFuncs { public:原创 2013-02-01 12:25:11 · 1572 阅读 · 0 评论 -
[DLL]创建和静态使用动态链接库dll
使用Dll是一种重用代码的绝佳方式。 官网实例创建新的动态链接库Dll项目1.创建静态项目MathFucsDll:选择 win32控制台应用程序->输入MathFuncsDll项目名称->下一步->选择DLL;选择附加选项的空项目->完毕2.向动态库添加类MyMathFuncs:#pragma once//MathFuncsDll.hnamespace MathFun原创 2013-02-01 15:46:24 · 1455 阅读 · 0 评论 -
[DLL]使用def文件从dll导出
模块定义 (.def) 文件是包含一个或多个描述 DLL 各种属性的 Module 语句的文本文件。如果不使用 __declspec(dllexport) 关键字导出 DLL 的函数,则 DLL 需要 .def 文件。.def 文件必须至少包含下列模块定义语句:文件中的第一个语句必须是 LIBRARY 语句。此语句将 .def 文件标识为属于 DLL。LIBRARY 语句的后面是原创 2013-03-21 12:52:31 · 2020 阅读 · 0 评论 -
[DLL]在非MFC扩展Dll中导出类的简单例子
创建新的动态链接库Dll项目1.创建静态项目MathFunDll:选择 win32项目->输入MathFunDll项目名称->下一步->选择DLL;选择附加选项的空项目->完毕。(当然也可以不选择附加选项空项目)2.向动态库添加类MyMathFun:MyMathFun.h#pragma once// #ifdef DLLCLASS_API// #d原创 2013-03-21 19:51:27 · 1693 阅读 · 0 评论 -
[DLL]DLL概述和动态调用DLL
创建DLL工程新建项目: Visual C++ -> Win32项目,名称:myDLL下一步,选择DLL,确定。修改文件名myDLL.cpp改为myDLL.c;不然调用DLL时会出现错误代码127(找不指定程序,就是找不到导出函数ExportMsg)//#include "stdafx.h"#include #include // 使用__declspec(dllexpor原创 2012-12-09 15:19:22 · 1467 阅读 · 0 评论 -
从Win32过渡到MFC(一)
前言 使用VS2005/8/10的空项目来创建窗口,可以作为Dome来研究,应用在使用MFC的过程中自己窗口。 MFC是微软对Win32代码进行封装的一套庞大的类库,如果直接讲解,由于不了解其内部结构和开发思想,学习起来将是非常难于理解的。为了了解MFC是如何封装的,今天我们先来开发一个我们自己的Win32类库。 所谓类库,是指一套可以原创 2012-12-10 20:38:51 · 7244 阅读 · 0 评论 -
[项目整理]Win32,MFC的可执行文件只能运行一次
//第一种方法:控制release版本的exe文件只能运行一次#ifndef _DEBUG //debug 版本中,项目属性-->预处理器 -->预处理定义: 有_DEBUG if (FindWindow(NULL,_T("窗口标题"))) //这种方法个缺点:当先运行一个debug版本的exe文件时,则release版本的exe文件不能运行了。debug版本影响release版本。下一种方原创 2013-06-22 18:13:40 · 1748 阅读 · 0 评论 -
Win32中的字符串(位,字符,字节,编码)
W版本和A版本的Win32APIA:ANSI字符集; W:wide Unicode字符集。windows支持Unicode和ANSI编码的字符。在User32.dll中导出的函数实际上没有MessageBox,只有MessageBoxA和MessageBoxW,这两者是同一个API,实现了同样的功能。不同的是,MessageBoxA以多字节字符串作为参数输入,MessateBoxW以Un原创 2012-12-19 22:53:55 · 2399 阅读 · 2 评论 -
[Win32]Win32 SDK编程系列文章——菜单
理论菜单可以说是WINDOWS最重要的元素之一。有了它,用户可以方便地选择操作命令.用户只要细读一下所有的菜单项就可以明了应用程序所提供的大概功能,而且可以立即操作,无须去阅读手册了.正因为菜单给了用户一种方便的方式,所以您在应用程序中加入菜单时就要遵守一般的标准.譬如:一般头两个菜单项是"File"和"Edit",最后是"Help",您可以在这中间插入您要定义的菜单项.如果所运行的菜单命原创 2013-06-05 21:45:07 · 1944 阅读 · 0 评论 -
[Win32]Win32 SDK编程系列文章——鼠标输入消息
理论和处理键盘输入一样,WINDOWS将捕捉鼠标动作并把它们发送到相关窗口。这些活动包括左、右键按下、移动、双击新式鼠标还包括滚轮消息WM_WHEEL等。WINDOWS并不像处理键盘输入那样把所有的鼠标消息都导向有输入焦点的窗口,任何鼠标经过的窗口都将接收到鼠标消息,无论有否输入焦点。另外,窗口还会接收到鼠标在非客户区移动的消息(WM_NCMOVE),但大多数的情况下我们都会将其忽略掉。原创 2013-06-05 20:03:54 · 1823 阅读 · 0 评论 -
从Win32过渡到MFC(二)
将Win32Lib封装成类 前面两个工程都还是全局函数的形式,现在我们来将Win32Lib封装成class,为向MFC过渡埋下伏笔。Win32Lib工程中,我们仅仅是改造了WinProc()这个窗口处理函数,对WinMain()主函数并没有改造。仔细分析WinMain()函数,发现其本质就做了2件事情:一是创建和显示窗口,一是进行消息循环以响应窗口消息。因此,我们的封装思想也是基于这2点的原创 2012-12-10 21:21:52 · 1070 阅读 · 0 评论 -
[Win32]Win32窗口应用程序的框架
概述 现在市场上出现了很多应用程序框架,比如窗体程序,如MFC,.net framwork , VB , delphi,举不胜数。其实,这些并不是开发win32应用程序必需的东西,windows在底层是为我们开放了一套API函数库,使用这套函数库,其实我们也能构建出一套功能强健的win32应用程序。 Win32的窗口应用程序,其实,win32窗口程序的核心就是窗口,一个win32窗口应原创 2013-03-11 21:02:28 · 3485 阅读 · 0 评论 -
[win32]unicode与ansi互相转化
Ansi字符串我们最熟悉,英文占一个字节,汉字2个字节,以一个/0结尾,常用于txt文本文件Unicode字符串,每个字符(汉字、 英文字母)都占2个字节,以2个连续的/0结尾 将当前的项目设置成unicode或是ansi的下面的代码都成立#include "stdafx.h"#include #include //使用的是多字节字符集,就在窄字符集,则TCHAR就是 cha原创 2013-03-13 20:24:18 · 2749 阅读 · 0 评论 -
[win32]int与LPCWSTR之间的转换
#include #include void test3(){ // LPCWSTR to int LPCWSTR wstr=L"234"; std::wstring tempstr(wstr); int val=_wtoi(tempstr.c_str()); //int to LPCWSTR int itemp=123; wchar_t str[10]; _itow_s原创 2013-03-15 18:32:50 · 7661 阅读 · 0 评论 -
[Win32]定时器SetTimer
要调用的地方 SetTimer(g_hMainWnd,ID_GIVEUP,1000,NULL);//会给主窗口发送WM_TIMER消息;1000=1秒;ID_GIVEUP为标识 if (MessageBox(g_hMainWnd,L"确定要退出吗?",L"提示",MB_YESNO)==IDYES) { KillTimer(g_hMainWnd,ID_GIVEUP); //自己的原创 2013-04-17 17:42:42 · 1730 阅读 · 1 评论 -
[Win32]注册表的写
注册表的写 HKEY hKey; DWORD dwAge=30; RegCreateKey(HKEY_LOCAL_MACHINE,"Software\\http://www.sunxing.org\\admin",&hKey);//在Software下创建项http://www.sunxing.org\admin RegSetValue(hKey,NULL,REG_SZ,"zha原创 2013-04-17 18:04:32 · 1300 阅读 · 0 评论 -
[Win32]纯资源DLL
把资源转化成dll,目的是为了不让别人轻易的得到资源,是一种保护资源的一种方式。创建DLL1.创建DLL项目ResVideo:新建win32项目,选择 DLL,完成。2.添加资源文件ResVideo.rc,在resource.h文件中添加资源宏:#define IDR_SWF_TEST 600#define IDR_SWF_CHUNTIAN原创 2013-05-06 16:50:31 · 1797 阅读 · 0 评论 -
[Win32]Win32 SDK编程系列文章——菜单(快捷菜单)——动态加载
理论创建普通菜单步骤如下:1)创建菜单 如:CreateMenu2) 添加菜单项 如:AppendMenu3)加载菜单 LoadMenu4)设置菜单到窗口 SetMenu5)处理菜单响应6)消除菜单 DestroyMenu创建右键菜单的步骤如下:1)创建菜单 如:CreateMenu2) 添加菜单项 如:AppendMenu3)使用T原创 2013-06-09 13:21:52 · 2746 阅读 · 0 评论 -
读取配置文件Ini文件
在MFC,win32控制台程序,win32Window应用程序中都可以使用与可.exe文件在同一个目录下的config.ini文件内容如下[student]age =20name =xiaoli#include #include #pragma comment(lib,"shlwapi.lib")#define INI_FILE _T("config.ini")原创 2013-03-08 18:27:02 · 1706 阅读 · 0 评论 -
[Win32]Win32 SDK编程系列文章——绘制文本
绘制文本Windows 中的文本是一个GUI(图形用户界面)对象。每一个字符实际上是由许多的像素点组成,这些点在有笔画的地方显示出来,这样就会出现字符。这也是为什么我说“绘制”字符,而不是写字符。通常您都是在您应用程序的客户区“绘制”字符串(尽管您也可以在客户区外“绘制”)。Windows 下的“绘制”字符串方法和 Dos 下的截然不同,在 Dos 下,您可以把屏幕想象成 85 x 25原创 2013-06-04 21:54:41 · 4227 阅读 · 1 评论 -
[Win32]Win32 SDK编程系列文章——键盘输入消息
理论因为大多数的PC只有一个键盘,所以所有运行中的WINDOWS程序必须共用它。WINDOWS 将负责把击键消息送到具有输入焦点的那个应用程序中去。尽管屏幕上可能同时有几个应用程序窗口,但一个时刻仅有一个窗口有输入焦点。有输入焦点的那个应用程序的标题条总是高亮度显示的。 实际上您可以从两个角度来看键盘消息:一是您可以把它看成是一大堆的按键消息的集合,在这种情况下,当您按下一个键时,WIND原创 2013-06-05 17:21:16 · 2746 阅读 · 0 评论 -
string、wstring、cstring、 char、 tchar、int、dword互转
最近编程一直头痛字集中类型的转化,明知都可以转却总是记不住,不断的上网查来查去,在这里小结一下。以备以后方便使用,当然有些方法可能不是最新的,或者最简单的,但是对于自己已经了解的使用起来应该方便的多:1》string 转 wstringwstring s2ws(const string& s){ _bstr_t t = s.c_str(); wchar_t* pwchar =原创 2013-04-11 12:31:29 · 1708 阅读 · 0 评论