22號考完的試,23號晚上火車,第二天回到蘭州.
回來幾天基本上就是待家看書,潘愛民的COM原理與應用.還有一本COM與COM+從入門到精通,都是圖書館借的,偶爾看那么一點.
翻譯了一篇Codeproject的小文章,關于VC控件子類化的,做為練習..草草閱讀Codeproject的入門文章若干篇,有點小收獲,慢慢總結文字吧.
目前正在用VC,SDK嘗試寫一個提示上機休息的timecount類型的軟件,主要是我的表有這個功能,想做成能夠顯示LED風格時間的小玩具.SDK寫出來應該會很小吧,寫了一半,現在還在學習怎么用HDC..估計下周能寫好吧.
回來忍受不了電腦的速度,上次重裝到現在差不多一年多了吧.裝了不少有的沒的很多東西,只好重新裝了一個xp,順便裝了個fedora8,算是wzc推薦的,偶爾可以換換口味..xp用了個ubuntu美化包. 
今天查了考試成績,這回分出的很快,分數從60多到80多,各有分布,還好都沒掛,充分證明我們學校總評成績中作業以及點名只占極小比例甚至不占.
娛樂方面,玩了幾個小游戲,U148網推薦的短褲小子,COPY不走樣,靈異行者推薦的passage(比較另類吧).
吃的方面,吃了不少,今天去阿西亞吃了羊排和羊羔肉吃得挺飽.
晚上準備看一個The Man from Earth..這周就是這樣..下周繼續
Powered by Zoundry
今天是表哥生日,也是2007最后一天..祝愿大家新年快樂..順便小小總結一下,最近讀書筆記什么的文章都沒有發,因為有段時間飄飄的沒了魂,以后會繼續慢慢的發的.請高手多多幫助指點.
總結一下2007,總結一下自己:
我,87年生,已經滿20歲了,沒什么成就,愛好編程,會一些C/C++,Win32,C#之類的東西,生活還是沒規律,還是一個人..
今年初姥姥病逝了,比較悲痛..其他還好,十一同好友chz去了一趟長沙,好友wzc在那讀書,我們都愛好tech..
在西安讀大三,學CS,在學校沒學太多東西,自己隨便看看一些編程書籍..今年參加過兩次acm區域賽,都是做出幾個簡單題,做題速度慢,都沒拿上牌,算法基礎還有很大提升空間.今年看了幾本書,win32多線程,win32核心編程看了大半,the old new thing,vc++技術內幕重新看了個大概,算法導論翻了一些,SQL語言的電子書,還有一些電子書都淺嘗輒止了一下,有本win shell programming的電子書相當不錯,看了一半,以后有機會還會看的..我現在對win32編程還是有很大興趣,只是水平很爛,五一寫了一個寢室查網速的軟件用了MFC跟winpcap庫,基本能勉強應用.覺得現在很多應用C#更容易用,不過shell extension估計還是c++好點,hook這些不知道別的語言怎么..學的內容還有很多呢..希望能得到前輩指點
年中開始接觸豆瓣這樣的web2.0網站,發現很不錯,后來又用飯否,還有就是google reader,感覺網站程序原來也很神奇,以前對網站編程不怎么感興趣以為不過是asp,php而已,好像現在很多web2.0網站都會用到python等動態語言,有可能還用c++做算法,可惜我C++只是懂個皮毛,python只了解簡單語法寫過很少代碼..希望明年能再觸類旁通一些..
想起10年前的我,擁有我的第一臺電腦有了1年(96年有的第一臺電腦),比較遺憾沒有老師指點,只能夠自己買一些雜志報紙學學,玩了好幾年,只是會了些基本dos操作,win95應用,一些亂七八糟的應用軟件都用過不少,那時候覺得寫軟件的人可真nb啊,記得那時候一個圖標大戰的小程序都覺得他很有趣.上初中接觸到了現在的好友wzc跟chz,我們便在計算機方面相互交流,進步能快一點,學了一點vb應用,不過都沒怎么練過手..之后是高中,轉眼就過去了..回想過去的計算機之路,覺得大半時間是打了游戲,其他時間用來學習了它的周邊,這10年大概只能算是個啟蒙,希望我在以后的路上能和朋友們一起進步一起分享知識.
還想說很多廢話,不過還是不說了..以后還是多說些實在的技術周邊
07年:<天堂><長沙><WinSock><VIM><ACM><侄子><彭坦><dota><Google><*魚><二十><尾巴>....很多很多..
今天晚上放了些炮,幾個同班同學一起,炮在空中爆炸,看到難得見到的明亮星星,它一定是預示著未來的光明,但是它仍然離我很遠...我希望能在新的一年里有所改變.
嗨皮牛業
昨天裝sql server 2005,一進去安裝界面就亂碼了,找來找去發現是AppLocale的問題,有一個微軟社區的解決方法,于是我刪了AppLoc.tmp..發現安裝界面正常了,結果安裝過程中仍然偶爾冒出一些亂碼..也沒有多管..裝完以后發現開始菜單是亂碼,添加刪除程序中也是亂碼..雖然不影響太多使用,還是很不爽..
早上使用curl讀取一個fanfou的rss,發現出現的也是亂碼,不知道怎么搞的,卸載掉Applocale也沒用,還是亂碼...不過重裝sql server這些的過程就再不出現亂碼了...
問題仍待解決
這篇心得關于技術內幕第五章,比較的基礎..
我是VC++的初學者
vc++技術內幕這本書我是去年暑假開始看的,那時候剛學windows編程,雖然之前用過c#,vb,不過都沒怎么練習,這本書我大概看了前面的80%,不過都未曾動手,近日打算從頭練習一下,在這里記些筆記
第五章第一個例子很簡單
一個單文檔MFC應用程序,View類中一個CRect類型變量保存矩形的信息,一個int型保存矩形顏色的屬性
WM_LBUTTONDOWN響應函數判斷單擊左鍵時鼠標位置是不是在之前那個矩形區域內,是的話變換矩形顏色的屬性,而且命令矩形區域重繪..
OnDraw()中用dc選取矩形顏色,繪制矩形的內切橢圓
應用的函數有:
virtual CGdiObject* CDC::SelectStockObject(
int nIndex
);//選取顏色,這里只選畫刷大概有如下畫刷
BLACK_BRUSH DKGRAY_BRUSH GRAY_BRUSH HOLLOW_BRUSH LTGRAY_BRUSH NULL_BRUSH WHITE_BRUSH
BOOL CDC::Ellipse(LPCRECT lpRect);//畫矩形對應的內切橢圓
BOOL CRECT::PtInRect(
POINT point
) const throw( );//判斷point是否在矩形中
注意一點就是CView::OnLButtonDown(UINT nFlags, CPoint point)
這里的Point坐標是View的client坐標,如果需要全局坐標需要轉換
第二個例子關于映射模式
不同的映射模式,對應的坐標是有區別的,而且他們的邏輯單位比例都不同
固定比例的映射模式有
Mapping Mode
|
Logical Unit
|
MM_LOENGLISH
|
0.01 inch
|
MM_HIENGLISH
|
0.001 inch
|
MM_LOMETRIC
|
0.1 mm
|
MM_HIMETRIC
|
0.01 mm
|
MM_TWIPS
|
1/1440 inch
|
可變比例的映射模式
MM_ISOTROPIC and MM_ANISOTROPIC
我自己寫了一個Demo看了一下,好像只有MM_ANISOTROPIC跟MM_TEXT是x軸左向右,y軸上到下,DC原點為0,0
其他的映射模式x軸一樣,y軸變成了從下至上,DC原點還是0,0
CDC的幾個函數這里有必要說說
virtual int CDC::SetMapMode(
int nMapMode
);
int CDC::GetMapMode() const;
設置/讀取DC的映射模式
virtual CSize CDC::SetWindowExt(
int cx,
int cy
);//設置窗體范圍
virtual CSize CDC::SetViewportExt(
int cx,
int cy
);//設置視口范圍
virtual CPoint CDC::SetViewportOrg(
int x,
int y
);//設置(0,0)點的位置
窗體范圍和視口范圍的設置會影響可變比例映射
可變比例映射的x,y計算方法參看下面的公式
x scale factor = x viewport extent / x window extent
y scale factor = y viewport extent / y window extent
device x = logical x* x scale factor + x origin offset
device y = logical y* y scale factor + y origin offset
CDC成員函數的參數大都是用邏輯坐標,但是CWnd的成員卻以設備坐標為參數
但是CDC成員中有函數
LPtoDP,將邏輯坐標轉換為設備坐標
void LPtoDP( LPPOINT lpPoints, int nCount = 1 ) const; void LPtoDP( LPRECT lpRect ) const; void LPtoDP( LPSIZE lpSize ) const;
DPtoLP,剛好相反
void DPtoLP( LPPOINT lpPoints, int nCount = 1 ) const; void DPtoLP( LPRECT lpRect ) const; void DPtoLP( LPSIZE lpSize ) const;
第三個例子關于滾動條
文檔視圖的工程建立向導中可以讓View繼承自CScrollView,使得View帶有滾動條
OnInitialUpdate函數在視圖建立后,OnDraw執行之前執行,所以對于滾動條的初始化可以放在這個函數中
void CScrollingViewWindowView::OnInitialUpdate()
{
CScrollView::OnInitialUpdate();
CSize sizeTotal;
// TODO: 計算此視圖的合計大小
sizeTotal.cx = 20000; //20cm
sizeTotal.cy = 30000; //30cm
CSize sizePage(sizeTotal.cx/2,sizeTotal.cy/2);
CSize sizeLine(sizeTotal.cx/50,sizeTotal.cy/50);
SetScrollSizes(MM_TEXT, sizeTotal,sizePage,sizeLine);
}
雖然是初始化了滾動條,但是不能夠使用快捷鍵(上下左右,pagedown啥的),需要手動重載afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
需要用到CWnd::OnVScroll, CWnd::OnHScroll,分別控制縱向與橫向兩個滾動條
nSBCode
Specifies a scroll-bar code that indicates the user's scrolling request. This parameter can be one of the following:
· SB_BOTTOM Scroll to bottom.
· SB_ENDSCROLL End scroll.
· SB_LINEDOWN Scroll one line down.
· SB_LINEUP Scroll one line up.
· SB_PAGEDOWN Scroll one page down.
· SB_PAGEUP Scroll one page up.
· SB_THUMBPOSITION Scroll to the absolute position. The current position is provided in nPos.
· SB_THUMBTRACK Drag scroll box to specified position. The current position is provided in nPos.
· SB_TOP Scroll to top.
by gohan 11.23