摘要:今天遇到一个很奇怪的问题:在vs2005中新建一个MFC程序,然后想在里面使用Skin++,在工程的stdafx.h里加入 #include “SkinPPWTL.h”, Linker->Input的Additional Dependencies处加上SkinPPWTL.lib就遇到下面的编译错误: error LNK2019: unresolved external symbol "__d...
阅读全文
摘要:个人先对第一篇的流程做个总结,从一个固定的光源点向一定范围发射出一些主要的光线,想象光线前方有一个巨大的虚拟平面,那么我们要做的就是决定这个虚拟平面上每个像素点的颜色是什么。如何决定呢?很简单,我们跟踪光线前进,看光线会最先与前面场景中哪个几何体发生相交,那么就根据相交点来决定虚拟平面上对应的点的颜色值(比如上一篇中就利用了相交点处几何体的材质颜色与灯光颜色,还加上了散射因子来决定对应的像素点的颜色)。
阅读全文
摘要: 从上面我们得到一个启示:与其等待光源发射一条光线穿过一个目前颜色还是黑色的像素,不如我们自己从照相机发射光线去穿过平面的每个像素,去观察这些光线能击中几何体上的哪些像素。
阅读全文
摘要:穷举法是最容易想出的解法,反正就是把所有能举出的子序列都算一遍和,找出最大的一个就是,复杂度O(N*N)。 对于分治法来说,“分“是比较简单的,对半分成求解左右两个序列的最大子序列,不过终止条件应该是什么呢?我的想法是到只剩一个元素的序列的话,直接返回这个元素就是了,可书上都是如果大于0,返回此元素,若小于0,则返回0,这里想不明白。最难的部分应该是“治”,要考虑跨左右两个...
阅读全文
摘要:1.1 找出第K大的数 方法1: #include #include #include #include using namespace std;int main(){ int data[] = {3,54,254,52,13,667,234,67,256,78,467,32,65,324,889,34,5}; int len = sizeof(data)/sizeof(int);...
阅读全文
摘要:>第三版P905页的这个程序有很多问题想不明白: #include #include using namespace std;int main(){ fstream inOut( "D:\\copy.out", ios_base::in|ios_base::app); int cnt=0; char ch; inOut.seekg(0); while ( in...
阅读全文
摘要:const int MAX_MENUCOUNT = 60,ITEMHEIGHT = 26,ITEMWIDTH= 120; //菜单项数量/**//*************************************CMenuItemInfo结构用于记录菜单项信息*************************************/struct CMenuItemInfo{ CSt...
阅读全文
摘要:这是我现在使用的一种线程通信方式的代码片段,两个线程之间通过自定义消息进行通知, #define MY_MSG WM_USER+100 //线程通信的自定义消息//消费者DWORD Consumer::Run(){//创建线程并启动 DWORD ThreadId; m_hThread = CreateThread( NULL,0,Routine,0,0,&ThreadId );//创建...
阅读全文
摘要:读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好。TinyXML是一个开源的解析XML的解析库,能够用于C++,能够在Windows或Linux中编译。这个解析库的模型通过解析XML文件,然后在内存中生成DOM模型,从而让我们很方便的遍历这棵XML树。DOM模型即文档对象模型,是将整个文档分成多个元素(如书、章、节、段等),并利用树型结构表示这些元素之间的顺序关系以及嵌套包含关系。如下是一个XML片段:<Persons><PersonID="1&q
阅读全文
摘要:核心对象: CImage m_imageFile; 绘制图片: void CFigureView::OnDraw(CDC* pDC){ CFigureDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return; // TODO: 在此处为本机数据添加绘制代码 CBrush ...
阅读全文
摘要:我现在项目是一个控制台程序,用到的Win32API都是与界面无关的,今天需要加入定时器刷新的功能,由于没有消息循环,所以WM_TIMER消息应该如何处理呢?综合了下网上找到的资料,写了个简单的demo,个人以为这种在一个线程中创建定时器,再通过指定的回调函数来处理定时器触发的模式是比较好的。 #include #include #include int ...
阅读全文
摘要:首先是考虑全屏处理的时机,是在创建窗口时还是显示窗口时进行,若是前者,则可以: BOOL InitInstance(HINSTANCE hInstance, int nCmdShow){ HWND hWnd; hInst = hInstance; // 将实例句柄存储在全局变量中 UINT width = GetSystemMetrics(SM_CXSCREEN); ...
阅读全文
摘要:MFC的几个核心技术:RTTI,Dynamic Creation,Message Mapping,Command Routing。
阅读全文
摘要:#define HIGHEST_THREAD 0x00#define ABOVE_AVE_THREAD 0x3F#define NORMAL_THREAD 0x7F#define BELOW_AVE_THREAD 0xBF#define LOWEST_THREAD 0xFF#define SLEEPDELAY 1#define FORLOOPDELAY ...
阅读全文
摘要:1,Win32 Console程序示例: #include #include #include #include const int FILEMAX = 300; // allow max. 300 files in each directorytypedef struct _DESTFILE{//目标文件 WIN32_FIND_DATA fd; BOOL bMatch;} DES...
阅读全文
摘要:1,Message Map雏形之实现 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM);LONG OnCreate(HWND,UINT,WPARAM,LPARAM);LONG OnPaint(HWND,UINT,WPARAM,LP...
阅读全文
摘要:看第一章的第一个例子时,和很多初学者一样,我也想知道如何把可执行文件的默认的图标: 改成自己需要的,例如这样: 首先来看看资源文件中到底是怎么定义的: IDI_CH_1 ICON "JJHOUR.ICO"IDC_CH_1 MENU BEGIN POPUP "文件(&F)" BEGIN MENUITEM ...
阅读全文
摘要:1,创建进程 #include #include int main( VOID ){ STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory( &si, sizeof(si) ); si.cb = sizeof(si); ZeroMemory( &pi, sizeof(pi) ); // Start the chil...
阅读全文
摘要:题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1022 #include #include #include #include using namespace std;string strIn,strOut;stack strTmp;//临时栈vector strInfo;int main(int argc,char* argv[]){ int...
阅读全文
摘要:题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1021 简单题,就是找找规律,就可以发现从2开始,每次递增4的值满足被3整除的要求 #includeusing namespace std;void doProcess(int n){//从2开始,每次递增 if (n%4==2) { cout>n) { d...
阅读全文