2011年12月19日 星期一

[VC]給應用程式做個ICON

寫程式也寫了有兩年了,但是從來也沒給程式弄個ICON過。

原因主要有兩個…

第一,開發的幾乎都是嵌入式程式…
(給鬼看喔)


第二,再來就是Linux的常駐程式…

其他的話,就都是網路的程式了。
PHP、Flash、C#的小工具…

總之…是給鬼看喔!


以上屬於閒聊,主因是最近在弄作品集,想把之前做的DEMO遊戲弄得漂亮點。

遊戲程式弄成這樣…總是不太好吧

經過一番Google之後,找到了一個比較快的方法,在此作為筆記。

Step 1:
在Project哩,加入一個*.rc的檔案。

Step 2:
點兩下,或打開資源視窗,就會看到裡面有一個類似資料夾的東西。
Step 3:

準備一個 *.ico 的檔案。

Step 4:

使用筆記本編輯"*.rc"檔案,裡面會有一堆註解…其實都沒用,只要把下面兩行輸入即可。

#include "resource.h"
IDI_ICON1               ICON                    "icon2.ico"


Step 5:
Build好之後,就會看到Icon貼在程式上了,像遊戲多了吧!




2011年12月12日 星期一

[VC Debug] delete 引發的 0xfeeefeee [ heap memory ] 問題

因為有點時日沒碰C了,碰到了很久以前曾經發生過的問題。

問題點:
STACK * temp_stack=new STACK();
memcpy(temp_stack,this,sizeof(STACK));
delete temp_stack;

這三行程式碼,乍看之下好像沒甚麼不對。
可是當你按下Debug時,問題就來了。

其實解決分法就是...
用C的方法去做,如下:
STACK * temp_stack=(STACK *)malloc(sizeof(STACK));
memcpy(temp_stack,this,sizeof(STACK));
free(temp_stack);

問題點之二:
void operator =(datas & val)
{
  memcpy(this,&val,sizeof(datas));
};

解決方法就是別用memcpy...
雖然C歸C,C++歸C++。
但是有些在C上很好用的方法,用在C++上卻會出問題。
所以寫程式還是謹慎點。

順帶一提…Release程式是不會有這個問題的。
可是我有潔癖…

查資料時得到的豆知識
[ 0xCCCCCCCC ] 沒有被初始化的stack memory
[ 0xCDCDCDCD ] 沒有被初始化的heap memory
[ 0xFEEEFEEE ] 意指freefree, 就是已歸還的heap memory