Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1608714
  • 博文数量: 585
  • 博客积分: 14610
  • 博客等级: 上将
  • 技术积分: 7402
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-15 10:52
文章存档

2013年(5)

2012年(214)

2011年(56)

2010年(66)

2009年(44)

2008年(200)

分类: C/C++

2012-01-27 03:38:35

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搭配“>>”用算符
阅读(449) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~