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,其实还有其它许多函数,但只这两个函数是最容易记住的.因为它们和printf,scanf,fprint,fscanf的用法类似.
char str[100];
int x = 5;
sprintf(str,"%d",x);
sscanf("10","%x",&x);

3,看一个键是否处于按下状态以及是否被按下过.
SHORT key = GetAsyncKeyState(VK_F11);
0x8001处于被按下状态
1两次调用GetAsyncKeyState(VK_F11);之间,f11被按下过.
GetAsyncKeyState,GetKeyState指定虚拟码为VK_LBUTTON,VK_RBUTTON就可判断鼠标是否被按下过

4,如何删除一个类.
方法一:
1,把文件删除.
2,再打开类向导(Ctrl+W)类向导找不到文件,会弹出一个对话框ReMove就行了.
方法二:
1,FileView中删除.
2,物理删除.

5,自定义的类没了:
project->Add to project ->files

6,使用PI
include math.h
#define _USE_MATH_DEFINES
#include "math.h"
则M_PI 就是pi了

7,请问怎样可以获得分区的卷标??
char buf[MAX_PATH];
GetVolumeInformation("c://", buf, MAX_PATH, NULL, NULL, NULL, NULL, NULL);
AfxMessageBox(buf);

8,打开一个网页
ShellExecute(::GetDesktopWindow(),_T("open"),//SK modified for Unicode
_T("http://www.sohu.com"),NULL,NULL,//SK modified for Unicode
SW_MAXIMIZE);

9,关闭时,弹出对话框让用户确认
void CMainFrame::OnClose()
{
    if(IDOK != MessageBox("你要退出吗?点确定退出","你要退出吗?",MB_OKCANCEL))
    return ;
    CFrameWnd::OnClose();
}

10,菜单小问题
ID_FILE_OPEN
在资源Accelerator中为:
ID Key
ID_FILE_OPEN Ctrl+O
表示在程序中按ctrl+o组合键激活打开菜单(如果文件菜单打开了,就无效).
在资源Menu中为:
ID_FILE_OPEN的标题为打开(&O).../tCtrl+O
&O表示当它的父菜单(文件菜单)被打开后,O激活文件菜单.

11,Sizeof有问题??
class B
{
    bool a;
    bool c;
    int b;
}; // sizeof (B) == 8

布局:
1 2 3 4
bool bool 填充 填充
1 2 3 4
int ...............
一目了然.:)
这个时候编译器只在c后插入两个填充字节,因为b占四个字节,所以自动的以一个字的二进制来填充.
这是编译器的对齐问题,只要在前面加入
#pragma 1
使得按一个byte对齐就可以了.

VC雕虫小技集(一)

时间: 2024-09-30 16:09:08

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,如果你没有定义_UNICODE,则LPCTSTR代表 const char * ,因此直接使用就可以了. 如果定义了_UNICODE ,LPCTSTR代表 const wchar_t* ,就不能直接使用了. 2,得到鼠标的位置 DWORD dw = GetMessagePos();CPoint pt(LOWORD(dw),HIWORD(dw));//鼠标的屏幕坐标CWnd::ScreenToClient(); 3,得到文件的长度 方法一:HANDLE hHandl

100个vc/c/c++语言学习网站/学习教程

软件: http://www.icodeguru.com/fav/soft.htm  教程: C函数实例参考手册 http://www.icodeguru.com/CPP/CExample/ C\C++实例参考手册 http://www.icodeguru.com/CPP/cppExample/ Win32Api实例参考手册 http://www.icodeguru.com/VC%26MFC/Win32ApiExample/ MFC实例参考手册 http://www.icodeguru.com/

iteye2012年12月第2周重要新闻回顾

幽冥虎王的攻击力实在太强悍的,我的血量也就一直没有超过四分之一,几乎每一刻都徘徊在死亡边缘,但是偏偏三个牧师的总和治疗输出堪堪能和BOSS的攻击输出持平了. 我是个正常的男人,也有很多正常的想法,其实夏天这些挺清秀的小MM也算是个美女,放在平时肯定是来者不拒就地正法了,可是,一想到凌雪就住在对面的房间,我的那一丝兴趣马上就烟消云散了,要是让凌雪知道这事情,那还了得?她铁定会认为我是个混进羊群中的大灰狼,把我扫地出门,那就得不偿失了. "嗯,没看错,这果然是个肉盾型的BOSS啊!防御和气血都超高,

什么值得买:一家论坛式导购网站的自我修养

什么值得买 的用户把这个网站亲切称为"色魔张大妈"(SMZDM演化而来),虽然这个昵称有些恶搞的成分,但这是一家我印象中这个时代为数不多的"正常"公司.它没有颠覆什么,但重新定义了什么是"值",并且改变了一大批人的消费习惯. 在电商领域,什么值得买从创立初始就在节奏与气质上特立独行,包括其至今都没有涉及"交易"环节.电商行业里,如果一家公司不擅长赶政策热点.赶创业故事热潮,很难在资本市场为自己谈到一个好价钱,没钱烧就没有资源支

微软常用VC运行库合集(2018.4.10)X86X64

相信使用windows的小伙伴们都遇到过运行库报错的问题,尤其是使用绿色软件的时候,比如QQ和PS,由于在精简的时候把运行库精简掉了,所以难免会出现运行库报错.除了市面上的盗版ghost系统会内置运行库外,一般来说,微软原版的windows比较干净,没有集成运行库. 包含组件 * Visual Basic Virtual Machine(5.1) * Visual Basic Virtual Machine (6.0) * Microsoft C Runtime Library(7.0) * M

vc++6.0各种报错合集

背景: 由于APP对于现在的我来说,只是一个工具,对VC++6.0绝对的是浅尝辄止吧!(暂时没有太多的时间分配到这块)所以在此把错误积累下来,以备下次使用少走弯路. 正文 一.出现警告“warning c4273:inconsistent dll linkage” 在报错的XX.h头文件中可以看到如下定义 #ifdef XXX_DLL_EXPORTS #define XXX_API extern"C" __declspec(dllexport) #else #define XXX_AP

【VC】MSDN System Color 大合集

Colors by Name Colors by Hue Colors by Lightness Colors by Saturation static WCHAR *pColorName[][2] = { {_T("AliceBlue"),_T("#F0F8FF")}, {_T("AntiqueWhite"),_T("#FAEBD7")}, {_T("Aqua"),_T("#00FFFF&quo

【转载】COM 组件设计与应用(十四)——事件和通知(vc.net)

原文:http://vckbase.com/index.php/wv/1244.html 一.前言 我的 COM 组件运行时产生一个窗口,当用户双击该窗口的时候,我需要通知调用者: 我的 COM 组件用线程方式下载网络上的一个文件,当我完成任务后,需要通知调用者: 我的 COM 组件完成一个钟表的功能,当预定时间到达的时候,我需要通知调用者: ... ... ... ... 本回书开始话说 COM 的事件.通知.连接点......这些内容比较多,我分两次(共四回)来介绍. 二.通知的方法 当程序