![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Windows编程
文章平均质量分 82
小蚂蚁_CrkRes
Where there is a will, there is a way
展开
-
VC++对话框适应不同分辨率
调整应用程序分辨率:关于对话框适应不同分辨率问题,主要分如下几步:1.利用GetSystemMetrics(SM_CXSCREEN)函数获得当前屏幕的宽度和高度cx,xy(in pixels)。2.分别判断分辨率大于或等于1024*768和分辨率只等于800*600的两种情况下就分别做如下处理。3.利用MoveWindow()函数框定住对话框的大小。对话框的大小自己定,只要大小不超出cx和cy。比如可以这样做cx-300,cy-200,这样,在任何分辨率下,你的对话框的大小都比屏幕小,而不会跑到屏原创 2020-06-30 21:48:04 · 1297 阅读 · 0 评论 -
VS中的路径宏 OutDir、ProjectDir、SolutionDir各种路径含义
说明$(RemoteMachine)设置为“调试”属性页上“远程计算机”属性的值。有关更多信息,请参见更改用于 C/C++ 调试配置的项目设置。$(References)以分号分隔的引用列表被添加到项目中。$(ConfigurationName)当前项目配置的名称(例如“Debug”)。$(PlatformName)当前项目平台的名称(例如“Win32”)。$(Inherit)指定在由项目生成系统所撰写的命令行中,继承的属性出现的顺序。默认情况下,继承的属性出现在当前属原创 2020-05-14 12:52:08 · 479 阅读 · 0 评论 -
windows右键菜单大揭密
在Windows系统中,只要对着桌面或是文件(夹)单击右键,就会弹出一个快捷菜单,里面有对该文件(夹)的一些常用操作命令,通过右键菜单,可以方便用户对文件的某些操作。不知道你是否对它感兴趣?是否想对它作一番改头换面,做出有自己特色的右键菜单?不用着急,看完本文的大揭密,你将成为这方面的高手! 修改右键菜单应该在注册表中,具体的说,是在HKEY_CLASSES_ROOT根键下(这里可是右键转载 2017-06-02 14:51:17 · 988 阅读 · 0 评论 -
修改MFC程序标题
MFC程序的默认的标题是“无标题-title”,其中title是应用程序的名称,我们应如何修改MFC窗口标题来符合自己的要求? MFC程序的文档类中定义了一个虚函数SetTitle,用于设置窗口标题的前半部分,如果只是要修改“无标题”部分,可以重载文档类的该函数。窗口标题的后半部分可以通过SetWindowText设置,也可以编辑字符串资源中的IDR_MAINFRAME字符串,将第一原创 2017-05-19 09:00:49 · 506 阅读 · 0 评论 -
WM_NCHITTEST消息的了解+代码实例进行演示
这个消息比较实用也很关键,它代表非显示区域命中测试。这个消息优先于所有其他的显示区域和非显示区域鼠标消息。其中lParam参数含有鼠标位置的x和y屏幕坐标,wParam 这里没有用。Windows应用程序通常把这个消息传送给DefWindowProc,然后Windows用WM_NCHITTEST消息产生与鼠标位置相关的所有其他鼠标消息。通俗的讲从消息产生消息。case WM_NCH原创 2016-10-18 14:29:01 · 2550 阅读 · 0 评论 -
怎么样把CDC上的一个图保存为bmp格式的图
001 HBITMAP GetSrcBit(HDC hDC,DWORD BitWidth, DWORD BitHeight)002 {003 HDC hBufDC;004 HBITMAP hBitmap, hBitTemp;005 //创建设备上下文(HDC)006 hBufDC = CreateCompatibleDC(hDC);转载 2016-08-15 14:15:06 · 2319 阅读 · 0 评论 -
DOS批处理脚本语言简介与详细说明
一.简单批处理内部命令简介 1.Echo 命令 打开回显或关闭请求回显功能,或显示消息。如果没有任何参数,echo 命令将显示当 前回显设置。 语法 echo [{on off}] [message] Sample:@echo off / echo hello world 在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用> >>转载 2016-08-15 10:12:28 · 2494 阅读 · 0 评论 -
MFC获取各个窗口(体)之间的指针(对象)
MFC在很多的对话框操作中,我们经常要用到在一个对话框中调用另一个对话框的函数或变量.可以用如下方法来解决. HWND hWnd=::FindWindow(NULL,_T("Sphere")); //得到对话框的句柄 C***Dialog* pWnd= (C***Dialog*)C***Dialog::FromHandle(hWnd); //由句柄得到对话框的对象指针原创 2016-07-13 08:43:47 · 663 阅读 · 0 评论 -
vs2015 滚动条实现,浏览Bitmap图片
尽管本章的初衷是用滚动条来显示一张bmp图片,但是他涉及到3大主题1. 运行时在对话框加载一张bitmap图片2. 通过滚动条技术显示一张原始大小的bitmap图片3. 通过双缓存技术实现绘图不闪烁 运行时在对话框加载一张bitmap图片使用类生成向导,为IDC_STATIC1创建一个名为m_st1 的CStatic控件变量在对话框的翻译 2016-08-16 13:20:49 · 2778 阅读 · 0 评论 -
::RegisterWindowMessage的用法
windows消息机制一 dlg.cpp添加#define MY_MESSAGE WM_USER + 1000dlg.h添加afx_msg LRESULT onMyMessage(WPARAM wparam, LPARAM lparam);dlg.cpp添加ON_MESSAGE(MY_MESSAGE , onMyMessage)原创 2016-07-29 10:16:58 · 1050 阅读 · 0 评论 -
电脑睡眠状态
ACPI规范定义了一台兼容ACPI的计算机系统可以有以下七个状态(所谓的全局状态):G0('S0)正常工作状态:计算机的正常工作状态-操作系统和应用程序都在运行。CPU(s)执行指令。在这个状态下(即没有进入G1睡眠),CPU和像硬盘、DVD驱动器等等这些的设备可以一再的进入和从低能源状态回来,叫做C0-Cn和D0-D3。(例如膝上型计算机,当使用电池运行的时候通常关掉所有当前未使用的设备原创 2016-07-08 10:28:19 · 2032 阅读 · 0 评论 -
谈谈对APC的一点理解
谈谈对APC的一点理解异步过程调用(APCs) 是NT异步处理体系结构中的一个基础部分,理解了它,对于了解NT怎样操作和执行几个核心的系统操作很有帮助。1) APCs允许用户程序和系统元件在一个进程的地址空间内某个线程的上下文中执行代码。2) I/O管理器使用APCs来完成一个线程发起的异步的I/O操作。例如:当一个设备驱动调用IoCompleteRequest来通转载 2016-05-31 09:54:08 · 1538 阅读 · 0 评论 -
19个免费的UI界面设计工具及资源
列表如下:DHTMLXDHTMLX 是一个JavaScript库,可跨浏览器、基于Ajax的用户界面。通过一组UI Widgets(小工具)可以快速开发令人印象深刻的web应用。LivePipe UI高质量控制和原型部件。jQTouch移动web开发的jQuery插件,支持iPhone, iPod Touch等。Fre转载 2016-02-26 09:47:11 · 7037 阅读 · 0 评论 -
21个免费的UI界面设计工具、资源及网站
Lumzy官方地址:http://www.lumzy.com/Lumzy是一个网站应用和原型界面制作工具。使用Lumzy,您可以轻松创建UI模型并即时发送到客户电脑中。 Lumzy还具有团队协作编辑工具。 Mockingbird官方地址:https://gomockingbird.com/Mockingbird(中文名:百舌鸟)是一个在线工具,它使您转载 2016-02-26 09:45:21 · 5488 阅读 · 0 评论 -
Attach、Detach和DeleteObject
1.CWnd Attatch和Detach的关系 首先,要明白Windows对象和MFC对象的区别。MFC对象实际上并没有把整个Windows对象都包装在其中,它只是有一个窗口句柄而已,这个窗口句柄如果指向一个实际存在的窗口对象(窗口对象,也就是WNDCLASS,是一个Windows对象),那么这个MFC对象就是有效的,否则这个MFC对象是空的。如果你还不明白,请回忆转载 2016-01-13 23:18:58 · 1292 阅读 · 0 评论 -
MFC中将位图写入指定Picture控件中的两种方式
注意着两种方式都要事先在对话框中拖picture控件,将其ID改为:IDC_PHOTO//方式一:通过加载一张已有的位图,并将其显示在指定的picture控件中void CTestDlg::OnPaint(){ CPaintDC dc(this); CBitmap bmp; bmp.LoadBitmap(IDB_BITMAP1);原创 2016-01-13 23:08:34 · 623 阅读 · 0 评论 -
VC程序播放音乐必备---mciSendString用法
使用MCI API,源文件中需要包含头文件 Mmsystem.h,在Project->Settings->Link->Object/libray module中加入库 Winmm.lib。 VS2008在源文件加上#include "mmsystem.h" #pragma comment(lib,"winmm.lib")1、MCI简介 MCI(Med转载 2016-01-13 15:30:56 · 7306 阅读 · 3 评论 -
VC程序运行时导出资源、DLL、EXE
在VC可以在可执行程序和调用动态静态库时动态的导出资源、DLL、exe。首先把想要导出的资源导入,这里简单描述DLL资源导入的步骤:1.在Resource View(资源视图)中查找到相应工程;2.使用Add(添加)->Resource(资源);3.选择Imort(插入)资源;4.在选择资源后弹出Custom ResourceType(自定义资源类型)输入自原创 2017-05-19 11:22:55 · 655 阅读 · 0 评论 -
C++获取系统图标方法
系统图像列表(有时亦被称作 Shell 图标缓存)是一个由 Windows Shell 维护的图标资源,资源管理器和其它应用程序使用这个列表来显示系统对象、程序和文件类型的图标。其实就是一个简单的 HIMAGELIST(可以用图像列表 API 存取的标准图像列表),一些应用程序可能会发现显示系统提供的图标更好一些,而不是自己内部存储这些图标的副本。所以,本教程的目的就是解说如何存取系统的图像列表,原创 2017-05-19 13:11:01 · 3074 阅读 · 0 评论 -
BAT DOS编程基础
1.@它的作用是让执行窗口中不显示它后面这一行的命令本身@echo off 的作用就是让脚本在执行时不显示 后面的echo off 2.echo回显,它其实是一个开关命令,就是说它只有同种状态;打开和关闭echo on 和 echo off 将回显关闭,它后面的命令都不显示命令本身,只显示执行后的结果,除非执行echo on 3.::这个是注释命令,原创 2017-05-31 13:46:09 · 444 阅读 · 0 评论 -
windows API实现中文中字符串与GBK、Unicode、UTF-8三种编码互转
#include <iostream>#include <string>#include <Windows.h>using namespace std; //gbk转UTF-8string GbkToUtf8(const std::string& strGbk)//传入的strGbk是GBK编码{ //gbk转unicode int ...转载 2019-01-07 15:08:32 · 1014 阅读 · 0 评论 -
开机启动,远程下载,远程控制
// AllInOneDemo.cpp: 定义控制台应用程序的入口点。//#include "stdafx.h"#include <WinSock2.h>#include <Windows.h>#include <urlmon.h>#pragma comment(lib,"urlmon.lib")#pragma comment(lib,"ws2...原创 2018-08-07 22:30:06 · 217 阅读 · 0 评论 -
Hook及远程注入
// InjectDemo.cpp: 定义控制台应用程序的入口点。//#include "stdafx.h"#include<Windows.h>int main(int argc,char* argv[]){ BOOL bRet = FALSE; HANDLE hProcess = INVALID_HANDLE_VALUE; BYTE* ...原创 2018-08-12 11:38:57 · 1187 阅读 · 0 评论 -
内存修改器
// SoCool.cpp: 定义控制台应用程序的入口点。//#include "stdafx.h"#include <Windows.h>#include <TlHelp32.h> // enum all process HANDLE g_hProcess = INVALID_HANDLE_VALUE;DWORD g_dwValueAddr[10...原创 2018-08-11 01:07:14 · 2003 阅读 · 0 评论 -
Hook MessageBox
// HookMessage.cpp: 定义控制台应用程序的入口点。//#include "stdafx.h"#include <Windows.h>class MyHookClass {public : MyHookClass() { m_pfnOld = nullptr; ZeroMemory(m_bNewBytes,...原创 2018-08-09 21:24:20 · 422 阅读 · 0 评论 -
键盘记录器
dll 部分:// dllmain.cpp : 定义 DLL 应用程序的入口点。#include "stdafx.h"#include <windows.h>#include <iostream>HHOOK g_hHook = nullptr;HINSTANCE g_hInstance=nullptr;LRESULT CALLBACK MsgHookP...原创 2018-08-05 19:41:05 · 817 阅读 · 0 评论 -
拼图
// PinTu.cpp : 定义应用程序的入口点。//#include "stdafx.h"#include "PinTu.h"#include <time.h>#define MAX_LOADSTRING 100// 全局变量: HINSTANCE hInst; // 当前实例TCHAR szTit...原创 2018-08-05 13:10:51 · 247 阅读 · 0 评论 -
udp通信
Server端:#include "stdafx.h"#include "NetWork.h"#include "winsock2.h"// innitialize socketbool InitializeSocket(){ bool bRet = false; do { WSAData wsadata; if (0 != ...原创 2018-08-04 12:42:05 · 192 阅读 · 0 评论 -
远程开关机实现
Server端:// RemoteShutDownDlg.cpp: 实现文件//#include "stdafx.h"#include "RemoteShutDown.h"#include "RemoteShutDownDlg.h"#include "afxdialogex.h"#ifdef _DEBUG#define new DEBUG_NEW#endif// 用...原创 2018-08-03 23:36:11 · 1521 阅读 · 1 评论 -
剖析MFC六大关键技术
MFC的六大关键技术包括:1.MFC程序的初始化过程。2.运行时类型识别(RTTI)。3.动态创建。4.永久保存。5.消息映射。6.消息传递。一、MFC程序的初始化过程1、设计一个简单完整MFC程序,产生一个窗口。当然这不能让AppWizard自动为我们生成。我们可以在Win32 Application工程下面那样写:#include <afxwin.h...原创 2018-07-24 20:43:17 · 464 阅读 · 0 评论 -
浏览和打开文件
方法一:老规矩这是一种传统方法,使用GetOpenFileName或者GetSaveFileName函数,看名字就知道,前者用来打开文件,后者是保存文件,这两个函数的用法是一样的,因此,我只演示其中一个。无论你使用哪个函数,都要涉及一个结构体——OPENFILENAME。关于它的成员,我就不一一来说了,挑几个有用的扯一扯。lStructSize:结构的大小,弄个sizeof就行了。lpstrFil...转载 2018-04-09 12:45:15 · 227 阅读 · 0 评论 -
内存映像共享数据
DLL的结构:链接方式隐式链接方式在DLL代码中可以像下面这样明确声明导出函数:exportFunctionName Index 16 Name MyName,ProcedureName Index 17 Name YourName,格式:“函数名 Index xx Name 导出名字”在应用程序方面,要求像下面一样明确声明相应的原创 2017-07-04 16:03:06 · 413 阅读 · 0 评论 -
CImage从资源中加载图片文件
BOOL CChildView::LoadImageFromResource(ATL::CImage *pImage, UINT nResID,LPCTSTR lpTyp){if ( pImage == NULL) return false;pImage->Destroy();// 查找资源HRSRC hRsrc = ::FindResource(AfxGetR原创 2016-01-13 14:35:28 · 2628 阅读 · 0 评论 -
静态链接库(lib)和动态链接库(dll)的区别和使用
一,概念 1)静态链接库就是你使用的.lib文件,库中得代码最后需要连接到你的可执行文件中去,所以静态连接的可执行文件一般比较大一些。 使用方法 1> 格式如:#pragma comment(lib,"XXX.lib") 2> 针对开发环境: 1、如果使用VC,可以在Project原创 2016-01-12 09:53:20 · 7795 阅读 · 1 评论 -
std::initializer_list in C++0x
在VC2010中,在语言核心方面增加了五个C++0x的特性:lambda、auto、static_assert、decltype、rvalue。 有点遗憾的是没有 std::initializer_list(其实遗憾的还有很多,只怪C++0x来得太晚,呵呵)。 std::initializer_list 带来的方便性是不言而喻的,它可以让标准容器库的使用变得更加的方便:在以前,我们转载 2015-11-25 13:42:06 · 570 阅读 · 0 评论 -
csv文件的读取类
头文件 XCFileStream.h#pragma once#include #include #include using namespace std;#include /// 其它库头文件/// 本项目头文件/// 无错#define XC_ERR_NONE 0/// 无效文件名或非指定文件格式#define XC_ERR_INVALID_FILE_NAME (-1)原创 2015-11-17 14:11:57 · 1529 阅读 · 0 评论 -
mfc tab控件使用
1. 新建一个MFC工程, 取名MyTab, 选择Dialog based, 然后Finish. 2. 删除对话框上默认添加的三个控件. 添加Tab Control控件并在Property属性中设置ID为IDC_TABTEST 在More Styles里勾上Bottom. 调速尺寸使其布满整个对话框, 我这边Tab Control的尺寸最后为164X203. 在ClassWizard为其添加变转载 2015-11-16 16:46:48 · 481 阅读 · 0 评论 -
一个进程的诞生与死亡
执行一个程序,必然就产生一个进程。最直接的程序执行方式就是在shell中以鼠标双击某一个可执行文件图标,执行起来的App进程起始是shell调用CreateProcess激活的。1.shell调用CreateProcess激活App.exe2.产生一个进程核心对象,计数值为13.系统为此进程建立一个4GB地址空间4.加载器将必要的代码加载到上述地址空间中,包括App.exe的程序、原创 2015-10-30 15:10:39 · 953 阅读 · 0 评论 -
SendMessage与PostMessage
这个主题关注两件事1.SendMessage 和PostMessage 的区别2.如何用SendMessage,PostMessage使用WM_KEYDOWN消息。找到LParam 和 WParam参数的方法为了理解SendMessage和PostMessage,请看下面的表SendMessagePostMessage向窗翻译 2015-10-29 16:13:10 · 1058 阅读 · 0 评论 -
C++ 使用TinyXML解析XML文件
1.介绍 读取和设置xml配置文件是最常用的操作,TinyXML是一个开源的解析XML的C++解析库,能够在Windows或Linux中编译。这个解析库的模型通过解析XML文件,然后在内存中生成DOM模型,从而让我们很方便的遍历这棵XML树。 下载TinyXML的网址:http://www.grinninglizard.com/tinyxml/ 使用TinyXML原创 2015-10-28 11:39:27 · 707 阅读 · 0 评论