我住包子山

this->blog.MoveTo("blog.baozishan.in")

#

关于Up/Down控件(spin control)使用方法的一点小心得

image    学用纯SDK写win32程序,资料有一个英文版Windows Programming电子书,以及MSDN,用到了Up/Down控件让用户输入数据,同时也提供了Edit box.两者的同步是否会有问题呢?
  尝试了半天,终于有了点结果:
1、初始化控件,对控件句柄发送UDM_SETRANGE32消息,进行范围的初始话。UDM_SETPOS32消息设置初值。
   
image
2、关联Edit Box 控件,这个我弄了半天才明白,首先要在资源编辑中的对话框编辑界面,设定Tab控件的顺序(格式->Tab键顺序)。将Edit Box的序号设置成Up/Down控件序号减一,设定Up/Down的属性Auto Buddy为True,Set Buddy Integer为true。
3、现在已经能够正常的使用Up/Down功能了。
  可是如果不想用控件关联,而是自己设定逻辑怎么办呢?几个小时之前我不会关联的方法,想要努力实现手动维护Edit box的功能。最后终于有了些教训,得到了点心得:
  在Up/Down的父窗口(一般是对话框)的消息处理函数中,对WM_VSCROLL消息做一个处理,当lParam与Up/Down的窗口句柄相等时,对Up/Down的操作结束 ,其中wParam中的高位部分是Up/Down的值,用这个值来更新Edit Box。
WM_VSCROLL nScrollCode = (int)LOWORD(wParam);
  nPos = (short int)HIWORD(wParam);
  hwndScrollBar = (HWND) lParam;

  今天我的教训是使用了WM_NOTIFY的消息,处理UDN_DELTAPOS的通知,lParam是一个结构:NMUPDOWN,通过这个结构来更新Edit box,因为这个通知不等操作结束就已经发出,并且这个结构体中有当时的位置以及变化量,更新时候还需要将当时位置加上变化量。这样的更新就会出现一定的问题,有时候pos已经到了设定好的范围边界,pos加上变化量就会超出边界,还要继续判断,效率等等问题就出现了,而且十分麻烦。所以最好使用关联的方法,如果有特殊要求就用WM_VSCROLL响应,千万不要使用UDN_DELTAPOS,白花功夫,呵呵。就写到这里.

今天是除夕了,祝所有程序员朋友新春快乐!!

posted @ 2008-02-06 02:14 Gohan 阅读(8051) | 评论 (1)编辑 收藏

周回顾[1]

算是第二周了,感觉时间过得很快,马上就除夕了,回顾一下:

   本周学习:初学python,Dive into Python看完了第五章,真的是很有特点,过完年回来我会写一些总结。Fedora8的adsl连接似乎不怎么稳定,Pidgin我给它升级成了最新版,有一篇Fedora7安装后的配置像我这样的Linux初学者值得去参考一下。写的WIN32的一个提醒程序,只用了SDK,完全没用MFC,现在大致功能可以实现,参考了两篇Code Project的文章,An LED time and value display control and Simple Reminder Application 以及MSDN

本周收藏网址:

Gohan‘s Reminder

Sprout Builder,生成flash的Gadget,支持图片,文本,rss,目前正在内测,我正在关注。
画动作人物铅笔画,图文教程。学习吉他,视频教程。读书建议:来自褪墨发起的活动,寒假还是要充充电的。

   这次的冰冻灾害实在严重,尤其是贵州省,愿受灾害影响的人们早日度过难关,上帝保佑吃完了饭人民。马上要过年了,这位我们国家的骨鲠之士可能很难跟家人团聚(不翻墙会撞墙),我希望他能平安过年,家人早日团聚,遗憾的是我不能为你做什么事情。世界需要爱,最近老罗发起了一个对黑砖窑受难者家属的捐助活动,许许多多人响应了,因为有支付宝支付的方法,很方便,我把平时偶尔买彩票的钱捐在这里,数额太小不值一提,不过希望每个有能力捐助的人都能出一份心意,这样也就够了。想要帮助别人的人们,推荐你们阅读这篇文章留意身边的异常现象-自救与救人,有时候要会仔细思考留意才能解救他人,或使自己得救。

   谷歌中国这次推出了春运交通图算是个大好事,及时这样也不能弥补久错,仍然算是连累了Google总公司,虽然Google也有瑕疵,但是我仍非常喜欢Google,光是使用它的Gmail(快捷键一览)跟Reader(快捷键一览)都那么的方便。

   本周玩的东西也不少:

看了长江七号,不赖,希望周星星的干女儿能继续成长,好在龙珠里面演好Gohan这个角色。

火影387,鼬不该这样自私的,一定有苦衷。两个跟记忆有关小游戏令脑贵庚(我测出来是20,太准了),记忆力大考验,合理使用标记,就可以打完。

   其他有趣图文:二战期间在华美军如何分辨日本人80后都用过的小学生作文百写不爽的必杀句有趣的C语言问题(强烈推荐),情侣用的血条衫挑战你的常识

   有趣视频:火影的cosplay纽约火车站静止一族(强烈推荐)。

   这周就到这儿吧。下周继续

 

posted @ 2008-02-04 21:34 Gohan 阅读(461) | 评论 (2)编辑 收藏

每周回顾(0)

22号考完的试,23号晚上火车,第二天回到兰州.
回来几天基本上就是待家看书,潘爱民的COM原理与应用.还有一本COM与COM+从入门到精通,都是图书馆借的,偶尔看那么一点.
翻译了一篇Codeproject的小文章,关于VC控件子类化的,做为练习..草草阅读Codeproject的入门文章若干篇,有点小收获,慢慢总结文字吧.
目前正在用VC,SDK尝试写一个提示上机休息的timecount类型的软件,主要是我的表有这个功能,想做成能够显示LED风格时间的小玩具.SDK写出来应该会很小吧,写了一半,现在还在学习怎么用HDC..估计下周能写好吧.

回来忍受不了电脑的速度,上次重装到现在差不多一年多了吧.装了不少有的没的很多东西,只好重新装了一个xp,顺便装了个fedora8,算是wzc推荐的,偶尔可以换换口味..xp用了个ubuntu美化包. a.JPG

今天查了考试成绩,这回分出的很快,分数从60多到80多,各有分布,还好都没挂,充分证明我们学校总评成绩中作业以及点名只占极小比例甚至不占.

娱乐方面,玩了几个小游戏,U148网推荐的短裤小子,COPY不走样,灵异行者推荐的passage(比较另类吧).

吃的方面,吃了不少,今天去阿西亚吃了羊排和羊羔肉吃得挺饱.

晚上准备看一个The Man from Earth..这周就是这样..下周继续

Powered by Zoundry

posted @ 2008-01-28 23:19 Gohan 阅读(171) | 评论 (0)编辑 收藏

翻译习作:Create your own controls - the art of subclassing 子类化,继承公共控件

     摘要: Create your own controls - the art of subclassing By Chris MaunderAn introduction to subclassing the Windows common controls using MFC Introduction 程序员们可以用许多windows通用控件提供的功能方便的编程,这些控件从list到button甚至...  阅读全文

posted @ 2008-01-25 00:02 Gohan 阅读(1463) | 评论 (0)编辑 收藏

随便说说,写在2007年末

    今天是表哥生日,也是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><*鱼><二十><尾巴>....很多很多..

今天晚上放了些炮,几个同班同学一起,炮在空中爆炸,看到难得见到的明亮星星,它一定是预示着未来的光明,但是它仍然离我很远...我希望能在新的一年里有所改变.

嗨皮牛业

posted @ 2007-12-31 23:28 Gohan 阅读(347) | 评论 (2)编辑 收藏

VC++编程内幕学习心得(2)--下

     摘要: 接着上回开始 书上的第二个例子 直接贴我略加修改的代码,后面附有注释: void Cfont2View::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo) {//想说的是OnPrepareDC在每次调用OnDraw之前调用,可在里面进行初始化的一些操作     CRect clientRect;     ...  阅读全文

posted @ 2007-12-08 18:04 Gohan 阅读(2010) | 评论 (2)编辑 收藏

安装界面乱码的罪魁祸首

image

昨天装sql server 2005,一进去安装界面就乱码了,找来找去发现是AppLocale的问题,有一个微软社区的解决方法,于是我删了AppLoc.tmp..发现安装界面正常了,结果安装过程中仍然偶尔冒出一些乱码..也没有多管..装完以后发现开始菜单是乱码,添加删除程序中也是乱码..虽然不影响太多使用,还是很不爽..

早上使用curl读取一个fanfou的rss,发现出现的也是乱码,不知道怎么搞的,卸载掉Applocale也没用,还是乱码...不过重装sql server这些的过程就再不出现乱码了...

问题仍待解决

posted @ 2007-12-05 10:05 Gohan 阅读(2843) | 评论 (3)编辑 收藏

VC++编程内幕学习心得(2)--上

     摘要: 第六章 GDI,字体,位图 第五章的例子就有简单的CDC类型的应用 这次更加详细的总结了设备环境类型及其应用常用类型CClientDC和CWindowDC,算做显示设备函数 CDC::GetClipBox(LPRECT lpRect)能够获取当前操作dc可见的区域矩形吧,我大概这样子理解.当然,映射模式不同的情况得到的值也不一样,是逻辑坐标单位 只有改写视图类的OnPaint类时才会用CPaint...  阅读全文

posted @ 2007-11-26 21:46 Gohan 阅读(2549) | 评论 (0)编辑 收藏

vc++技术内幕学习心得1

这篇心得关于技术内幕第五章,比较的基础..
我是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坐标是Viewclient坐标,如果需要全局坐标需要转换

 

第二个例子关于映射模式

 

不同的映射模式,对应的坐标是有区别的,而且他们的逻辑单位比例都不同

 

固定比例的映射模式有

 

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_ANISOTROPICMM_TEXTx轴左向右,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

posted @ 2007-11-23 16:37 Gohan 阅读(1303) | 评论 (0)编辑 收藏

new beginning

这个月南京和成都两次比赛分别只做出一道题跟两道题目,都排到了50名开外,都是差一道题目拿到铜奖,不过仍然感到了自己编码能力的缓慢提升.现在抓紧时间慢慢补课,win32编程我会继续的学习,这阵子在玩VIM,好像有点意思的东西

posted @ 2007-11-20 14:37 Gohan 阅读(203) | 评论 (0)编辑 收藏

仅列出标题
共16页: First 7 8 9 10 11 12 13 14 15 Last