VC雕虫小技集(二)

VC雕虫小技集(二)
何志丹

1,如果你没有定义_UNICODE,则LPCTSTR代表 const char * ,因此直接使用就可以了.
如果定义了_UNICODE ,LPCTSTR代表 const wchar_t* ,就不能直接使用了.

2,得到鼠标的位置
DWORD dw = GetMessagePos();
CPoint pt(LOWORD(dw),HIWORD(dw));//鼠标的屏幕坐标
CWnd::ScreenToClient();

3,得到文件的长度
方法一:HANDLE hHandle;
DWORD dwSize;
hHandle = ::CreateFile((LPCTSTR)strZipfile,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if(hHandle == INVALID_HANDLE_VALUE)
    return FALSE;
dwSize = ::GetFileSize(hHandle,NULL);
CloseHandle(hHandle);

方法二:CString szFile="c:/aaa.txt";
int nFileSize=0;
CFileFind finder;
if(finder.FindFile(szFile)){
    finder.FindNextFile();
    nFileSize = finder.GetLength(); //文件大小在这里
    finder.Close();
}

方法三:CStdioFile sf;
….
sf.GetLength();

4,CArray没有"=",但有copy.

CStringArray arr1,arr2;
arr1.Add("0");
arr2.Add("a");
arr1.Copy(arr2);

5,如何得到view类的句柄
不要忘记了# include 文件
CMyView *pView = (CMyView *)((CMainFrame *)AfxGetMainWnd())->GetActiveView();
pView->m_hWnd就是

6,自定义消息
下面是增加自定义消息的步骤:
第一步:定义消息。开发Windows95应用程序时,Microsoft推荐用户自定义消息至少是WM_USER+100,因为很多新控件也要使用WM_USER消息。
第二步:实现消息处理函数。该函数使用WPRAM和LPARAM参数并返回LPESULT。
LPESULT CMainFrame::OnMyMessage(WPARAM wParam, LPARAM lParam)
{
    // TODO: 处理用户自定义消息
    ...
    return 0;
}
第三步:在类头文件的AFX_MSG块中说明消息处理函数:
class CMainFrame:public CMDIFrameWnd
{
...
// 一般消息映射函数
protected:
// {{AFX_MSG(CMainFrame)
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnTimer(UINT nIDEvent);
afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
}
第四步:在用户类的消息块中,使用ON_MESSAGE宏指令将消息映射到消息处理函数中。
BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_CREATE()
ON_WM_TIMER()
ON_MESSAGE(WM_MY_MESSAGE, OnMyMessage)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
如果用户需要一个整个系统唯一的消息,可以调用SDK函数RegisterWindowMessage并使用ON_REGISTER_MESSAGE宏指令取代ON_MESSAGE宏指令,其余步骤同上。

7,wscanf是scanf的宽字符版本 ,用法与scanf是一样的,用来读取stdin流,并将信息存储到其参数列表指定的变量中。
cin 对象是由istream类所衍生出的,主要用来将数据由标准输入装置输入到程序中的变量,通过cin输入的数据,必须以字节流的格式组成,cin搭配“>>”用算符

VC雕虫小技集(二)

时间: 2024-11-05 18:56:51

VC雕虫小技集(二)的相关文章

VC雕虫小技集(三)

VC雕虫小技集(三)何志丹1,固定窗口大小,最大值为(600,400),最小值也为(600,400). void CMainFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI){lpMMI->ptMaxTrackSize.x = 600;lpMMI->ptMaxTrackSize.y = 400;lpMMI->ptMinTrackSize.x = 600;lpMMI->ptMinTrackSize.y = 400;CFrameWnd::OnGe

VC雕虫小技集(一)

VC雕虫小技集(一)何志丹 1,避免随机数相同,可以取当前时间,读文件,读任意内存(如未定义变量,有一定危险). CTime t = CTime::GetCurrentTime();int n = t.GetMinute() * 60 + t.GetSecond();while(n-- > 0){    rand();}const int N = 100;int result = rand()%N; 2, 字符串与数的转换 sprintf,sscanf,其实还有其它许多函数,但只这两个函数是最容

Hadoop自学系列集(二) ---- CentOS下安装JDK

上篇我们讲述了如何使用VMware安装CentOS系统,接下来就看如何安装我们最为熟悉的jdk吧!安装前先看看系统上有没有安装过jdk,输入java -version,如果查询出了其他版本的jdk版本,就先删除了,笔者这里使用jdk1.6.说开始就开始,下面开始说明安装步骤吧. 1.我们去Oracle获取jdk1.6安装文件,地址分享:http://download.oracle.com/otn/java/jdk/6u45-b06/jdk-6u45-linux-i586.bin,这地址不能直接进

linux 信号集 二 sigaction

sigaction函数的功能是检查或修改与指定信号相关联的处理动作(可同时两种操作). 他是POSIX的信号接口,而signal()是标准C的信号接口(如果程序必须在非POSIX系统上运行,那么就应该使用这个接口) 给信号signum设置新的信号处理函数act, 同时保留该信号原有的信号处理函数oldact int sigaction(int signo,const struct sigaction *restrict act, struct sigaction *restrict oact);

win2000罕见实用技巧集(二)

十五.在Windows2000中使用Windows98的收藏夹 ??要把Windows98下的收藏夹搬到Windows2000下,你只要把Windows98中的Windowsfavorites目录下的所有内容复制到Windows2000的documents and settingsadministrator(或其他用户名)favorites中,就搞定 . ??十六.Windows2000的“快速重启”与“唤醒” ??在Windows2000中,按Shift键不是快速重启而是取消重新启动.在“关机

Java多线程知识小抄集(二)

本文主要整理博主遇到的Java多线程的相关知识点,适合速记,故命名为"小抄集".本文没有特别重点,每一项针对一个多线程知识做一个概要性总结,也有一些会带一点例子,习题方便理解和记忆. 1-26请参考<Java多线程知识小抄集(一)> 27. ConcurrentHashMap ConcurrentHashMap是线程安全的HashMap,内部采用分段锁来实现,默认初始容量为16,装载因子为0.75f,分段16,每个段的HashEntry 28. 线程安全的非阻塞队列 非阻塞

java高级工程师开放面试题集&lt;二&gt;

临近年关,不少人蠢蠢欲动,有童鞋问我java后端面试会面试什么? 作为一个java后端老鸟,跌打滚爬多次被面试和面试别人,总结了一些经验,希望对大家有所帮助. 特别说明,仅仅针对工作两年以上的java后端开发.以开放性题目为主,没有标准答案. 上篇<java高级工程师开放面试题集<一>> 本次是第二篇: 6.缓存相关 如何设计实现LRU缓存? Least Recently Used,最近最少使用缓存. 思路: 6.1.每个key 需要有value,最近的使用时间戳 6.2.面向对象

菜鸟前端程序员小知识点锦集二

1. 数组排序      Array---sort()方法:     1> 用sort方法对字母排序:         var arr=new Array(6)         arr[0]=a.. arr[1]=...         arr.sort();         排出来按a-z的顺序排     2> 用sort方法对数字排序:         arr.sort(sortNumber);从小到大对数字排序.     3> 如果按照其他标准进行排序,需提供函数,        

2013计算机视觉代码合集二

Feature Detection and Description General Libraries: VLFeat – Implementation of various feature descriptors (including SIFT, HOG, and LBP) and covariant feature detectors (including DoG, Hessian, Harris Laplace, Hessian Laplace, Multiscale Hessian, M