Windows
文章平均质量分 87
feilongzaitianhehe
软件开发者,涉猎范围包括但不限于C#、C、C++,系统包括Linux、freeRTOS、windows等;
联系邮箱:956806322@qq.com 或者 微信:flshihuai 无重要事项不要联系,谢谢各位
展开
-
MFC编写的串口程序为什么在别的电脑上打不开啊?
MFC的COM控件,你需要做的就是在你自己的电脑上搜索到这个文件:MSCOMM32.OCX找到之后复制到另一台机器的c:/windows/system32下,然后运行regsvr32 mscomm32.ocx 命令,就可以了。【问】那能在软件启动的时候去注册这个控件吗?如果可以,又如何注册呢?【答】最好是弄个安装包,打包ocx文件。因为即使你程序中注册,也不能确保这个文件存在,并知道文件位置啊。程...转载 2018-04-10 17:13:11 · 1119 阅读 · 0 评论 -
MarshalAs的使用
作用:MarshalAs属性指示如何在托管代码和非托管代码之间封送数据。使用方法:[MarshalAs(UnmanagedType unmanagedType, 命名参数)]实际上相当于构造一个MarshalAsAttribute类的对象常用的UnmanagedType枚举值:(详细内容查MSDN)BStr 长度前缀为双字节的 Unicode转载 2016-05-05 11:48:53 · 728 阅读 · 0 评论 -
WPF学习------XAML 语法详述
XAML 语言规范XAML 语言规范中也定义或引用了此处定义的 XAML 语法术语。 XAML 是一种基于 XML 并遵循或扩展 XML 结构规则的语言。 其中某些术语共享自或基于描述 XML 语言或 XML 文档对象模型时常用的术语。有关 XAML 语言规范的更多信息,请从 Microsoft 下载中心下载 [MS-XAML]。转载 2016-05-24 17:53:13 · 1269 阅读 · 0 评论 -
没有可用于当前位置的源代码
调试时候蹦出一个对话框“没有可用于当前位置的源代码” 确定,或 显示汇编,调试无法进入一个函数,之后这函数就完了,死活不被调用了。 产生原因不明~~以下是微软官方的解释:没有可用于当前位置的源代码项目不包含您试图查看代码的源代码。原因通常是双击了“调用堆栈”窗口或“线程”窗口中没有源代码的模块。可以继续调试,但不能使用源代码窗口设置断点并在此位置执行其他操作。如转载 2016-03-23 11:03:00 · 3160 阅读 · 1 评论 -
C#中Abstract和Virtual
在C#的学习中,容易混淆virtual方法和abstract方法的使用,现在来讨论一下二者的区别。二者都牵涉到在派生类中与override的配合使用。一、Virtual方法(虚方法) virtual 关键字用于在基类中修饰方法。virtual的使用会有两种情况: 情况1:在基类中定义了virtual方法,但在派生类中没有重写该虚方法。那么在对派生类实例的调用转载 2016-03-10 11:29:39 · 338 阅读 · 0 评论 -
MFC 窗口重绘
在刷新窗口时经常要调用重绘函数MFC提供了三个函数用于窗口重绘InvalidateRect(&Rect)Invalidate()UpdateWindow()当需要更新或者重绘窗口时,一般系统会发出两个消息WM_PAINT(通知客户区有变化)和WM_NCPAINT(通知非客户区有变化)--WM_NVPAINT系统会自己搞定--WM_PAINT消息对应的函数是OnP转载 2016-03-21 17:27:45 · 964 阅读 · 0 评论 -
VS编译问题“fatal error C1859 意外的预编译头错误,只需重新运行编译器”
方法 1禁用/analyze编译器选项,则它会被启用。方法 2开始清理生成。方法 3重新启动计算机。方法 4禁用创建/使用预编译头的编译器选项。注意这些方法不能保证正常工作。即使您使用这些方法之一,您可能仍会遇到此问题。我的解决方案,生成 ->仅用于项目->仅清理 生成->清理解决方案,生成 ->清理项转载 2015-12-15 20:21:05 · 1610 阅读 · 0 评论 -
SIP输入面板
软件输入面板(Software Input Panel,简称SIP)是每个装备了WinCE系统的移动平台的一个基本功能。它提供给用户在PDA上进行数据输入的一种手段。当谈及SIP的时候,我们一般会想到两点:一是SIP本身,二是如何在程序中使用SIP。SIP是一个实现了IInputMethod或者IInputMethod2接口的COM对象。它应该被系统调入使用,所以你不能在C#中进行SIP开转载 2015-10-12 14:50:49 · 1280 阅读 · 0 评论 -
刷新--MFC界面刷新函数比较
一:什么时候才会发生重绘窗口的消息? 当需要更新或重新绘制窗口的外观时,应用程序就会发送WM_PAINT消息。对窗口进行重新绘制。二:Invalidate() -- RedrawWindow() -- UpdateWindow()三个函数有什么异同? Invalidate()是强制系统进行重画,但是不一定就马上进行重画。因为Invalidate(转载 2015-09-29 16:27:00 · 3077 阅读 · 0 评论 -
VC++ EDIT控件重绘
用VC++6.0编程的时候,文本编辑控件Edit Box是一个经常用到的控件。如果你是用它输入一些简单的文字、数字等信息,直接拿来用就可以了,但如果你用它制作大文本的编辑软件,就会觉得不好控制,许多功能无法实现,即便用CEditView,也只会生成一个类似于记事本的东西,再想加入些自己编写的功能也很困难。下面我以CEdit为基类定义了一个CEditBox类,加入了许多文本编辑时经常要用到的接口函数转载 2015-09-07 19:19:43 · 3022 阅读 · 0 评论 -
C#中fixed关键字的作用总结
原则:1、垃圾回收机制,维护引用信息不维护指针信息2、引用类型的实例化对象在生存期内由垃圾回收机制处理,可能移动内存3、当一个类的实例化对象中含有值类型时,定义指向这些值类型的指针编译报error,因为这些内嵌在引用类型中的值类型实例会随着引用实例化对象的内存移动而移动,所以指针值在不知情的情况下会发生变化,fixed关键字做的工作便是让这样的类实例化对象(不是类类型本身,而是一个实例转载 2016-05-05 14:29:05 · 3490 阅读 · 0 评论 -
.Net中C#的DllImport的用法
在 C# 中通过 P/Invoke 调用Win32 DLL http://msdn.microsoft.com/zh-cn/library/aa686045.aspx 大家在实际工作学习C#的时候,可能会问:为什么我们要为一些已经存在的功能(比如 Windows中的一些功能,C++中已经编写好的一些方法)要重新编写代码,C#有没有方法可以直接都用这些原本已经转载 2016-05-05 14:58:55 · 936 阅读 · 0 评论 -
c#初学-多线程中lock用法的经典实例
一、Lock定义 lock 关键字可以用来确保代码块完成运行,而不会被其他线程中断。它可以把一段代码定义为互斥段(critical section),互斥段在一个时刻内只允许一个线程进入执行,而其他线程必须等待。这是通过在代码块运行期间为给定对象获取互斥锁来实现的。 在多线程中,每个线程都有自己的资源,但是代码区是共享的,即每个线程都可以执行相同的函数。这可能带来的问转载 2016-05-18 15:44:21 · 659 阅读 · 0 评论 -
System.Windows.Forms.Application.DoEvents()
记得第一次使用Application.DoEvents()是为了在加载大量数据时能够有一个数据加载的提示,不至于系统出现假死的现象,当时也没有深入的去研究他的原理是怎样的,结果在很多地方都用上了Application.DoEvents(),今天看到了关于这方面的一些文章,知道我以前有些用法是不当的,有些地方需要慎用Application.DoEvents()。首先我们先看看在循环比较大的程转载 2017-04-27 10:01:53 · 2139 阅读 · 0 评论 -
C#里面设置ListView单列(某个单元格的样式:颜色和字体等)。
C#里面设置ListView单列(某个单元格的样式:颜色和字体等)。 ListViewItem lvi = new ListViewItem((i + 1).ToString()); lvi.UseItemStyleForSubItems = false; ListViewItem.Lis转载 2017-05-08 09:29:56 · 8281 阅读 · 2 评论 -
C# 如何给Winform的button等控件添加快捷键
一:Alt + *(按钮快捷键) 在大家给button、label、menuStrip等控件设置Text属性时在名字后边加&键名就可以了,比如button1.text= "确定(&O)"。就会有快捷键了,这时候按Alt+O就可以执行按钮单击事件。二:Ctrl+*及其他组合键 在WinForm中设置要使用组合键的窗体的KeyPreview(向窗体注册键盘事件)属性为Tru转载 2017-04-05 21:58:34 · 3147 阅读 · 2 评论 -
C# Tostring 格式化输出字符串全解
C 货币2.5.ToString("C")¥2.50D 十进制数25.ToString("D5")00025E 科学型25000.ToString("E")2.500000E+005F 固定点25.ToString("F2")25.00G 常规2.5.ToString("G")2.5转载 2017-04-12 15:32:40 · 757 阅读 · 0 评论 -
C#操作字符串方法总结
staticvoid Main(string[] args){ string s =""; //(1)字符访问(下标访问s[i]) s ="ABCD"; Console.WriteLine(s[0]); // 输出"A"; Console.WriteLine(s.Length)转载 2017-04-12 15:03:05 · 299 阅读 · 0 评论 -
c#中为什么又重新使用了goto语句
对于goto语句,在c/c++中就已经被不推荐使用了,在java中根本就没有goto的存在了,为什么c#中又重新使用goto语句呢?首先了解一下c#中的goto语句用法:1)基本的作用还是和以前一样,用户跳到Label的地方执行语句。//exp1 有效代码{ { goto labelA; }labelA:}转载 2017-03-23 13:55:14 · 1733 阅读 · 0 评论 -
C# 中各种路径的获取方法
// 获取程序的基目录。System.AppDomain.CurrentDomain.BaseDirectory // 获取模块的完整路径,包含文件名System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName // 获取和设置当前目录(该进程从中启动的目录)的完全限定目录。System.Environment.转载 2017-04-07 17:19:26 · 713 阅读 · 0 评论 -
C#多线程之二:ManualResetEvent和AutoResetEvent
初次体验ManualResetEvent和AutoResetEvent主要负责多线程编程中的线程同步;以下一段是引述网上和MSDN的解析:在.Net多线程编程中,AutoResetEvent和ManualResetEvent这两个类经常用到, 他们的用法很类似,但也有区别。Set方法将信号置为发送状态,Reset方法将信号置为不发送状态,WaitOne等待信号的发送。可以通过构造函转载 2016-05-23 11:11:40 · 495 阅读 · 0 评论 -
C#多线程那点事——信号量(Semaphore)
信号量说简单点就是为了线程同步,或者说是为了限制线程能运行的数量。那它又是怎么限制线程的数量的哩?是因为它内部有个计数器,比如你想限制最多5个线程运行,那么这个计数器的值就会被设置成5,如果一个线程调用了这个Semaphore,那么它的计数器就会相应的减1,直到这个计数器变为0。这时,如果有另一个线程继续调用这个Semaphore,那么这个线程就会被阻塞。获得Semaphore的线转载 2016-05-20 11:43:25 · 6976 阅读 · 0 评论 -
MFC 中调用系统软键盘的几种方法
1.直接运行微软系统自带的虚拟键盘程序“osk.exe” 在普通MFC项目中可以调用ShellExecute或者WinExec方法来直接运行微软系统自带的虚拟键盘程序“osk.exe”,十分方便一句话就可以搞定。ShellExecute: ShellExecute(GetSafeHwnd(), NULL, _T("osk.exe"), NUL转载 2015-09-06 14:32:30 · 4971 阅读 · 1 评论 -
MFC文件复制、删除
VC:文件操作大全,打开,保存,复制,删除,查找等 各种关于文件的操作在程序设计中十分常见,如果能对这些操作都了如指掌,就可以根据实际情况找到最佳的解决方案,从而可以在较短的时间内编写出高效的代码。本文对Visual C++中有关文件操作进行了全面的介绍,并对在文件操作中经常遇到的一些疑难问题进行了详细分析。1. 文件的查找 当对一个文件操作时,如果不知道该文件是否存在转载 2015-09-28 19:51:44 · 547 阅读 · 0 评论 -
WINCE应用程序全屏显示
WINCE应用程序全屏方法1、全屏显示,不显示标题栏,但是有任务栏在WINCE中实现全屏的方法,在Dlg的OnlnitDialog()里加入以下代码:CRect m_FullScreenRect; //全屏区域 CRect WindowRect; GetWindowRect(&WindowRect); //获得窗口的边框矩形尺寸CRect ClientRect; R原创 2015-08-25 21:14:50 · 2245 阅读 · 0 评论 -
MFC 消息响应与消息处理过程
WPARAM 和 LPARAM,消息响应机制wParam和lParam 这两个是Win16系统遗留下来的产物,在Win16API中WndProc有两个参数: 一个是WORD类型的16位整型变量;另一个是LONG类型的32位整型变量。因此根据匈牙利命名法,16位的变量就被命名为wParam, 32位的变量就被命名为lParam。 到了Win32API中,原来的16位变量也被扩展为32位,因此转载 2015-08-24 15:32:35 · 2554 阅读 · 0 评论 -
MFC消息响应机制
--- MFC是Windows下程序设计的最流行的一个类库,但是该类库比较庞杂,尤其是它的消息映射机制,更是涉及到很多低层的东西,我们在这里,对它的整个消息映射机制进行了系统的分析,可以帮助程序开发人员对MFC的消息映射机制有一个比较透彻的了解。1.引言---- VC++的MFC类库实际上是Windows下C++编程的一套最为流行的类库。MFC的框架结构大大方便了程序员的编程工作,转载 2015-08-24 15:50:30 · 369 阅读 · 0 评论 -
wince 自动启动程序设置
这是我在做wince6的时候为设置自启动而寻找的方法。我发现公司定的这个设备在“Program Files”和windows文件夹下放置的东西在机子重启之后就什么都没有了。我只有使用注册表测试,发现重启后还存在,因此我用注册表方式设置了自启动。而在这个过程中,我发现如果程序放在SD卡内是不行的,只有放在nand才行。为什么放在SD卡内不可以自启动,原因在我下面搜集的几篇文章中找到了,原来SD卡是在转载 2015-07-13 20:08:11 · 751 阅读 · 0 评论 -
WINCE 程序自启动设置总结
WINCE用户程序开机自启动方法总结。原创 2015-07-13 20:38:01 · 2594 阅读 · 0 评论 -
Windows 小知识点汇总
Windows 关键小知识点汇总。原创 2015-06-13 10:38:23 · 739 阅读 · 0 评论 -
afx_msg void OnHScroll( UINT nSBCode, UINT nPos, CScrollBar* pScrollBar );中的三个参数的作用
nSBCodeSpecifies a scroll-bar code that indicates the user's scrolling request. This parameter can be one of the following:表名用户滚动需求的代码,参数是以下的几种之一:SB_LEFT Scroll to far left.滚动到左边SB_ENDSCRO原创 2015-06-09 20:42:23 · 1094 阅读 · 0 评论 -
CloseHandle()函数的使用
CloseHandle()函数的使用??很多程序在创建线程都这样写的:............ThreadHandle = CreateThread(NULL,0,.....);CloseHandel(ThreadHandle );。。。。。这不是刚好创建又关闭了吗?线程怎么运行呢?======================================转载 2015-06-17 21:47:01 · 325 阅读 · 0 评论 -
WINCE学习路线图
首先,WinCE要跑在硬件上,所以我建议一定要学习ARM的体系结构,弄明白里面的一些基本原理,比如处理器模式、寄存器设置、异常系统以及存储系统等等。参考书籍:《ARM体系结构与编程》---杜春雷 《ARM嵌入式系统开发:软件设计与优化》--大牛推荐 其次,学习WinCE的应用程序编程,了解Win32的系统架构,这部分只要了转载 2015-05-10 20:17:23 · 544 阅读 · 0 评论 -
WINCE读取系统数据或系统配置信息
WINCE中获得系统数据或系统配置信息概述GetSystemMetrics ()用于得到被定义的系统数据或者系统配置信息。语法int WINAPI GetSystemMetrics( __in intnIndex);下面是GetSystemMetrics函数参数intnIndex的定义:SM_ARRANGE 标志用于获得系统如何安排最小化窗口 详细请参看下方备注.:原创 2015-08-26 21:27:05 · 1584 阅读 · 0 评论 -
VC CFont 用法
VC CFont 用法 LOGFONT结构的变量 仔细查一下CFont my_CFont;if( !my_CFont.CreatePointFont( 300,_T("Helvetica"),NULL ) )return;( GetDlgItem (IDC_EDIT1) )->SetFont( &my_CFont );二、常用法CRe转载 2015-08-28 21:33:26 · 519 阅读 · 0 评论 -
如何在static上显示位图
1 拖动一个Static到对话框上,如何在这个Static上添加资源中的位图?为这个static控件关联一个变量: Cstatic m_static;然后在对话框的初始化函数中: //加载位图 CBitmap bmp; bmp.LoadBitmap(IDB_BITMAP1); m_static.SetBitmap(bmp)转载 2015-08-28 22:02:01 · 640 阅读 · 0 评论 -
MFC中UpdateData()函数的使用
当你使用了ClassWizard建立了控件和变量之间的联系后:当你修改了变量的值,而希望对话框控件更新显示,就应该在修改变量后调用 UpdateData(FALSE);如果你希望知道用户在对话框中到底输入了什么,就应该在访问变量前调用UpdateData(TRUE)。 用处:主要控制ddx_data 把控件中的值和变量进行交换 比如你有个编辑框,输入了一些值,你的程序怎么得到呢;必须先转载 2015-09-01 20:35:47 · 411 阅读 · 0 评论 -
VC MFC 发送模仿键盘消息
1.单键消息if(QCWnd->GetSafeHwnd()) { QCWnd->ShowWindow(SW_NORMAL); QCWnd->SetForegroundWindow(); keybd_event(xx,MapVirtualKey(xx,0),KEYEVENTF_KEYUP,0); keybd_event(xx,MapVirtualKey(xx,0),0,转载 2015-09-08 13:25:25 · 12189 阅读 · 0 评论 -
MFC中改变控件的TAB顺序
在MFC中添加控件后,按Ctrl+d可以改变控件TAB顺序,怕自己忘了,一个神奇的东西,记下。 关于改变Tab顺序的方法有以下几种:方法一:在动态创建控件的时候STYLE设置成为WS_CHILD|WS_VISIBLE|WS_TABSTOP,其中WS_TABSTOP是影响TAB顺序的。先创建的控件TAB顺序在前。如果要颠倒TAB顺序的话,就把在创建控件时把WS_T转载 2015-09-02 17:22:41 · 685 阅读 · 0 评论 -
VC使用API和发送键盘消息模拟键盘(组合键)消息
Windows大行其道的今天,其界面的操作方式早已被广大用户认可。Windows应用程序大多数都是基于窗体的程序,在大多数情况下,这些程序接收用户输入分为两种:键盘输入和鼠标输入。有时,对于繁杂的,或重复性的输入操作,用程序来模拟键盘及鼠标的输入将会大大提高用户的工作效率,比如在批量打印的时候,让用户重复的设置页边距等参数是一件非常恼火的工作。VC编程实现鼠标模拟在VC模拟鼠标操作(SendMes转载 2015-09-08 13:53:47 · 10852 阅读 · 1 评论