2007年3月28日 星期三

GDI+ how to?

Today, I will show all of you how to create a dialog or control which can using GDI+.

For this case, it really quite simple.

Here I have to provide a simple template class which can be the base class of your
GDI+ dialog or window.

Header file is display below:

GdiPlusHelper.h

===========================================================

#ifndef __GDIPLUS_H__
#include
#endif

#pragma once

// link with the library
#pragma comment(lib, "GdiPlus")

using namespace Gdiplus;

template
class CGdiPlusHelper{
public:
CachedBitmap* cached_bitmap_;
// cached offscreen bitmap into which all the drawing goes
Graphics* mem_graphics_;
// memory graphics
Bitmap* mem_bitmap_;
ULONG_PTR gdiplus_token_;
RECT m_rcClient;
T* m_pT;

CGdiPlusHelper() : cached_bitmap_(NULL),
mem_bitmap_(NULL),
mem_graphics_(NULL)
{ m_pT = static_cast(this); }

// call this puppy to invalidate your window!
void SetDirty()
{
if(this->mem_graphics_)
{
delete mem_graphics_;
mem_graphics_ = NULL;
}
if(this->mem_bitmap_)
{
delete mem_bitmap_;
mem_bitmap_ = NULL;
}
if(this->cached_bitmap_)
{
delete cached_bitmap_;
cached_bitmap_ = NULL;
}
}

protected:
int ReSize(/*BOOL& bool_handled*/)
{
//bool_handled = FALSE;
m_pT->GetClientRect(&m_rcClient);
SetDirty();
return 0;
}
int Paint(/*BOOL& bool_handled*/)
{
CPaintDC pdc(m_pT/*->m_hWnd*/);
Graphics graphics(pdc.m_hDC);

ReSize();
int int_width = m_rcClient.right - m_rcClient.left;
int int_height = m_rcClient.bottom - m_rcClient.top;

if((int_width <= 0) (int_height <= 0)) return 0; // nothing to do here.... if(bool_double_buffering) { if(!mem_bitmap_) CreateOffScreenGraphics(int_width, int_height, &graphics); // draw from cached bitmap to window if(graphics.DrawCachedBitmap(cached_bitmap_, 0, 0) != Ok) { // make the bitmap again (display parameters changed) SetDirty(); CreateOffScreenGraphics(int_width, int_height, &graphics); graphics.DrawCachedBitmap(cached_bitmap_, 0, 0); } } else this->m_pT->Draw(&graphics, int_width, int_height);
return 0;
}

int CreateGDIPlus(/*BOOL& bool_handled*/)
{
// init GDI+
Gdiplus::GdiplusStartupInput gdiplusStartupInput;
Gdiplus::GdiplusStartup(&gdiplus_token_, &gdiplusStartupInput, NULL);
//bool_handled = FALSE;
return 0;
}

int DestroyGDIPlus(/*BOOL& bool_handled*/)
{
// get rid of all the gdi+ data
if(cached_bitmap_)
{
delete cached_bitmap_;
cached_bitmap_ = NULL;
}

if(this->mem_bitmap_)
{
delete mem_bitmap_;
mem_bitmap_ = NULL;
}

if(this->mem_graphics_)
{
delete mem_graphics_;
mem_graphics_ = NULL;
}

// and shutdown gdi+
Gdiplus::GdiplusShutdown(gdiplus_token_);
//bool_handled = FALSE;
return 0;
}

void CreateOffScreenGraphics(int int_width, int int_height, Graphics* pGraphics)
{
if(!int_width !int_height)
return; //don't have anything to do.
// create off-screen bitmap
mem_bitmap_ = new Bitmap(int_width, int_height);
// create off-screen graphics
mem_graphics_ = Graphics::FromImage(mem_bitmap_);
// draw to offscreen graphics
m_pT->Draw(mem_graphics_, int_width, int_height);
// now create the cached bitmap
cached_bitmap_ = new CachedBitmap(mem_bitmap_, pGraphics);
}
};

================================================================
T , can be your Dialog or control,
For example:

#include "GdiPlusHelper.h"

class CTestDialog: public CDialog, public CGdiPlusHelper
{
......
void Draw(Graphics* pGraphics, int nWidth, int nHeight);
};

or

class CTestCtrl: public CWnd, public CGdiPlusHelper
{
DECLARE_DYNAMIC(CTestCtrl)
......
void Draw(Graphics* pGraphics, int nWidth, int nHeight);
};

Is it simple?

Cheers,

Andrew

2007年3月27日 星期二

奇怪的公司

最近很奇怪說~~~

公司的網路禁止下載BT就算了,
連宿舍的也不可以用, 有沒有搞錯呀~~~

工單發不出去, 就教人家不要用網路下載東東,
不要玩網路遊戲, 用的人就要發揮公德心,
挖勒~~~~

那那個假日值班的人, 卻不在工作崗位上,
被連Call不到的傢伙, 到現在卻都還沒有被懲處,
太誇張了~~~

現在就因為那個該被懲處卻還沒被行刑的傢伙抱怨一下,
老塞就叫大家不可以用網路玩遊戲, 下載東西,
這是沒道理~~~

反正是個很奇怪的公司就對了~~~

唉唉唉~~~~

對了~~~

那個人也做過一些很倒楣的事情...
比如說: 洗澡的時候停水, 此時此刻正是滿身泡泡的狀態~~~
哈哈哈哈~~~真是太好笑了說:P

2007年3月14日 星期三

低落的心情

唉唉唉~~~

本來以為這個星期待在新竹會很愉快的,
豈知一通突如其來的電話,
就要我在明天一早在台南上班, 去處理問題,
盡然還質疑我說, 客服主任工程師叫我回來我就回來~~

哇勒~~~
哪裡有問題本來就該去哪裡處理, 這邊已經拖很久了,
而且我回來也都有跟主管報備, 是我錯了嗎?
shit~~~

那就算了, 現在還要我明天就要出現在無塵室去幫他找問題,
好讓"哈巴" 可以在下星期的會議中要進度報告,
讓我難得有機會跟家人好好相處的時間都要剝奪掉,
真是有夠過份的~~~

這下我辭意更堅定了...
原本想要在4月初提離職的, 現在看來,
勢必要提早了, 一點都不想給他們好臉色看~~

面對這樣對員工尖酸刻薄的公司, 面對這樣的老闆,
選擇離開才是唯一的道路...

這也難怪大家都想離開, 大家都不想幹了~~~

經營一家公司的基本原則就是人才,
如何照顧好員工, 關心員工, 獎勵員工,
才可以為公司帶來動力, 這樣的經營手法似乎在這裡都是看不見的...

所以現在我的立場是, 不會再替這個公司想了,
一切只為自己想好了~~~

再見, 晶X~~

大家結束合作的日子就不遠了~~~

哈哈哈~~~~~

2007年3月9日 星期五

最新詐騙手法

今天挺好笑的,
出現了一堆笑話, 也有人接到詐騙電話..

好笑的是, 有人開了104卻留得不是自己的電話, 結果留的是主管的電話.
很妙吧~~~ 難怪工作的機會遲遲沒有著落... 哈哈~~~~

詐騙的手法又更新了,
今天有人接到了這樣的電話.. 真實事件, 我還幫忙查了台北市警察局的電話來查詢的~~~

內容大致如下:
=====================================================
早上,手機突然響起∼

我:喂∼你好!

對方:請問是 X 先生嗎?

我:是的,請問你是?

對方:你好,這裡是台北市警局,想請問你一下,

你為什麼在X月X日沒來到庭說明?你沒收到傳票嗎?

我:(心裡一驚!)傳票?沒阿...沒收到阿... 什麼事嗎?
(心想:這是詐騙集團吧...)

對方:我們在幾天前破獲以XXX與YYY為首的詐騙集團,
裡面有以你的名字在XX銀行與YY銀行開的兩個帳戶,進行詐騙收款。
我是這起案子的偵辦警員,因為你在X月X日沒到庭說明,
所以我現在打電話問你。

我現在先核對一下你的資料...你是 X XX先生吧...
身份證字號是XXXXXXXXXX吧∼住址:XXXXXXXXXXXXXXXXX

我:是阿...沒錯...(按∼連我的身份證字號都知道...真的假的...)

對方:因為前些日子你沒到庭說明,我現在要釐清你是嫌犯還是受害人。
我正在作筆錄,我們之間的談話,現在也有做錄音。
我將會把相關的資料交給法官,看你需不需要到台北來出庭說明。

我:(心裡存疑)你可以把案件交給我們這裡比較近的警察局,我過去說明作筆錄可以嗎?

對方:(有點生氣)我是這件案子的偵辦警員,你叫我交給誰?
我現在要釐清說你是嫌犯還是受害人,你不要想太多...
因為這裡有五百多位跟這件案子相關的人,我們現在正在過濾中。
你心裡有這樣的防備之心我們可以理解。但是我現在要釐清案情所以要請你
配合說明一下。

我:(心裡有點驚,半信半疑)好!.. 你可以給我你的資料嗎?

對方:好,我是台北市警局犯罪調查科二組組長陳文華,警員編號46049,
我們住址是臺北市延平南路96號。

我:請稍等一下,我記一下,可以在重複一次嗎?說慢一點...因為我寫字有點慢...

對方:好,我是台北市警局犯罪調查科二組組長陳文華,警員編號46049,
我們住址是臺北市延平南路96號。你可以等一下在記,我會再重複,
但請你先回答一下,你有在XX銀行與YY銀行開過戶嗎?

我:沒有!(有點信了ㄝ...)

對方:那現在你有資金流動的銀行是哪幾家?請小心回答,
因為如果我們查到有你說的這幾家以外的銀行,我們會先凍結你的帳戶!
凍結三個月。跟你確認並釐清案情。

我:喔..我有在XX銀行與XX銀行有帳戶!(心防被攻破了~愚蠢的行為一)

對方:我們會查明這兩家你的帳戶中,是否有不尋常的資金流動,
也要查明是否有相關被害人匯款到你的帳戶中。我們懷疑你的個人資料有外流出去。

對方:你有辦現金卡或申請信用卡嗎?因為你的資料有外流,
所以我想釐清一下所有可能的外流管道。

我:我持有XX的信用卡一張∼( 愚蠢的行為二)

對方:沒有其他家了嗎?這家以外的信用卡我們會予以凍結以保障你的財產安全!

我:謝謝你...

對方:請問一下,你有因為缺錢而販賣你的資料給他人嗎?

我:沒阿...沒有過...(按!...我還需要幹這種事嗎?)

對方:那請問一下,你有在大型賣場申請過會員,或在中華電信申請市話或網路嗎?
因為我在過濾清查受害者時,有受害人的資料是以這樣的方式流出去的

我:有阿....我有在新竹X賣場申請過會員,也有申請中華電信的ADSL。

對方:因為你第一次沒到庭說明,我們請你在12月25日到台北市法務部執行處
第三偵查庭到庭說明。 但是如果我和法官的書記官今天可以把你的部分釐清,
你25日就不必來了。

我:(心裡還是半信半疑)沒關係阿..我可以上台北說明,因為現在在電話中,
我不清楚你的身份有些比較私人的部分我不便說明。

對方:不用這樣麻煩!等一下我會請法官的書記官打電話給你,你跟他說明一下,
因為他是我們的上級單位,出不出庭會由他們來決定,看是不是能釐清你的犯罪部分!

我:(按...你爺爺我犯啥罪...頂多上網抓片片而已)可以...但是私人的部分我也不便
在電話中說明。

對方:我等一下請法官的書記官跟你聯絡!請保持你的聯絡方式暢通!
-----------------------------------------------------------------------------

接下來,趕快衝回座位上上網查一下台北市警局的電話(網路萬歲),然後撥過去,通了∼

我:你好,我想請犯罪調查科二組組長陳文華聽一下電話!

警察:(楞了一下!)這是詐騙集團,有很多人都打電話過來找他,我們這裡沒有這個人,
你沒留郵局的帳號或轉帳出去吧∼ 我:沒有阿!(鬆了一口氣∼)你確定嗎?

警察:你會打過來確認,要相信我們!不要被他們騙了....也不要惹毛他們。

我:謝謝你!
-----------------------------------------------------------------------------
(兩分鍾後,我的手機又響,顯示的號碼為0267206661)

我:喂∼你好!

對方:你好,我是台北市法務部偵查庭的書記官。

我:(不等他說完)我查清楚了∼根本沒有你們這些人∼喀∼(電話掛掉)
接下來...連續撥了五~六通電話過來,我都直接掛掉沒聽∼ 事後,
我又撥到台北市警局報警...請他查一下0267206661這支電話。
警察說這不是我們國內的電話∼ 這件事折騰了半天...終於宣告落幕......
過程中,雖然心裡有所防備...但是還是被套出一點東西出來..... 事後,
趕緊打到不小心透露出來的相關金融機構處理詢問,
並立即設定信用卡的資料查詢密碼及凍結預借現金的權限∼ 幸好,
有想到要問對方的資料,隨即查證(網路萬歲)... 若沒上網查相關的聯絡方式...
再接到那位詐騙書記官...我不知道會發生什麼事......
請各位小心....... 現在...除非有警察現身過來抓我....
否則..我都不會信任何打我手機的陌生人了........
按~....死詐騙集團..... 下面附上我上網查的詐騙記錄.....

http://0rz.tw/392hj

本文出處:
http://diary.blog.yam.com/damianho/trackback/2507716

2007年3月8日 星期四

想離職

有這個想法的興起,
其實就是要呼應先前發佈的 "想讀書" 一文.

有感離家太久, 放老婆一人在家, 肯定不是什麼太好的決定,
但是為了賺錢仍得有所取捨.

現在, 小公主即將誕生之際, 身為乃父的我,
有豈能置之不理呢?

於是乎, 興起了想離職的念頭~~~

不過念頭歸念頭, 付諸實行的動作到也是進行的挺快的, 哈~
轉眼間, 好的工作已經落袋了...

目標直指數家百元俱樂部的公司,
說運氣好也是, 說有實力也是, 但自己的努力更實在...
不過好處是除了可以賺更多的奶粉錢之餘,
也會有時間去實現2008唸書去的想法...
是不是一舉多得呢?

所以付諸實行的日子也快要到了,
在晶彩的日子應該要開始倒數了...

.........3, 2, 1~~~ 耶, 離職囉~~~哈哈..

高興的太早了:P

原來如此 - 個性怪異的源由

有此一說, 話說XX公司執行副總是個變態狂~~
==============================

日前聽說了這件事, 覺得有點不可思議, 於是上網查詢, 卻發現了意想不到的結果...
主人公 - 錢XX 外號(錢X)

結果竟然發現, 他他他... 是五年前男扮女裝到三溫暖偷窺的變態博士,
天哪~

來XX公司快兩年了, 這還是第一次聽到說, 聽說來3年以上的人都知道, wow~~~
看來這已經是XX公司的不傳之密了:P

俗話說: 若要人不知, 除非己莫為
應驗在錢X的身上, 真是貼切.

還是專心做好自己的本分吧~~不要想東想西, 免得搞出這樣的醜聞,
不但不能杜絕, 還可以傳頌永久說, 畢竟這是網路所帶來的風險呀~~~

值得慎思~~~~

PS. 難怪此人喜好Fire員工於自己的隨心所欲呀..哈哈

詳全文:
http://tw.myblog.yahoo.com/missjulianacd/article?mid=455&prev=457&next=81&l=f&fid=27