2005年10月27日

1.下午开会,主要讲了其它产品与公司要做的产品的查询统计功能,认为ClearQuest的查询、统计很强,需要学习。

1.看了XHTML,2.0还在draft状态,主要用的是1.0,它对HTML改动不是很大。
2.下午3点多开始开会,讨论改过以后的版本。主要还是细节的问题,大的功能方面基本确定了,需要从用户的角度看系统,把系统整得更易用才行。
会上还分析了一个看上去非常简单的连接窗口的需求,共有五十多个,想得出的实在太少了。思维需要更加拓宽。

1.加入了树,用于查询、统计。老板觉得树做得很快,比较满意。
2.下午的会上主要对以下几个方面进行了讨论:
a.进入Query界面的不合理
b.需要有一个设置当前项目的地方
c.安全级别与查询出来的Issue有什么关系?
d.public用户建好后有什么权限?
e.pop3邮件如何自动建Issue?
f.没有日报表?
3.会后指出:
a.看了哪个软件,就学成它那个样子,没有一点自己的创新,这是不对的。
b.对很多细节把握不够,要让用户用起来方便、习惯、自然,同时还要考虑适

当改变界面,降低复杂度。

2005年10月25日

A list of the COMDLG32 classes is shown in the following table.

Class Purpose
CColorDialog Allows the user to select or create a color
CFileDialog Allows the user to open or save a file
CFindReplaceDialog Allows the user to substitute one string for another
CPageSetupDialog Allows the user to input page measurement parameters
CFontDialog Allows the user to select a font from a list of available
fonts
CPrintDialog Allows the user to set up the printer and print a
document

Using the CFileDialog Class Directly

CFileDialog dlg(TRUE, "bmp", "*.bmp");
if (dlg.DoModal() == IDOK) {
CFile file;
VERIFY(file.Open(dlg.GetPathName(), CFile::modeRead));
}

The first constructor parameter (TRUE) specifies that this object is a
"File Open" dialog instead of a "File Save" dialog. The default file extension
is bmp, and *.bmp appears first in the filename edit box. The
CFileDialog::GetPathName function returns a CString object that
contains the full pathname of the selected file.

Nested Dialogs

我们可以自己定制一个资源模板,让Common Dialog寄宿在我们的模板里:

1.Run AppWizard to produce \vcpp32\ex07b\ex07b. Accept all the defaults but
two: select Single Document and deselect Printing And Print Preview. The options
and the default class names are shown in the next graphic.
用向导生成一个工程ex07b,去掉打印功能。

2.Use the dialog editor to create a dialog resource.
Make the dialog box about
3-by-5 inches, and use the ID IDD_FILESPECIAL. Set the dialog’s Style
property to Child, its Border property to None, and select its Clip Siblings and
Visible properties. Create the template with a button with ID IDC_DELETE
and a group box with ID stc32=0×045f, as shown here.
在资源中插入一个Dialog,设置其ID为IDD_FILESPECIAL并将属性改为Child窗体,边框设为None,选上Siblings。在上面画一个GroupBox,ID设为stc32=0×045f,去掉Visible。再画一个Button with ID IDC_DELETE

Check your work by choosing Resource Symbols from the Visual C++ View menu.
You should see a symbol list like the one shown in the graphic below.
在View菜单下面检查一下资源的ID是否正确。

3.Use ClassWizard to create the CSpecialFileDialog class. Fill in the
New Class dialog, as shown here, and then click the Change button.
用向导生成类CSpecialFileDialog,Change the names to SpecFileDlg.h and SpecFileDlg.cpp.

Unfortunately, we cannot
use the Base Class drop-down list to change the base class to
CFileDialog, as that would decouple our class from the
IDD_FILESPECIAL template. We have to change the base class by hand.

4.Map the WM_INITDIALOG message in the CSpecialDialog class. The
OnInitDialog member function needs to change the common dialog’s Open
button caption to Delete. The child window ID is IDOK.

BOOL bRet = CFileDialog::OnInitDialog();
if (bRet == TRUE) {
GetParent()->GetDlgItem(IDOK)->SetWindowText("Delete");
}
return bRet;

5.Map the new IDC_DELETE button (Delete All Matching Files) in the
CSpecialDialog class. 

 void CSpecialFileDialog::OnDelete() 
{
m_bDeleteAll = TRUE;
// 0x480 is the child window ID of the File Name edit control
// (as determined by SPYXX)
GetParent()->GetDlgItem(0x480)->GetWindowText(m_strFilename);
GetParent()->SendMessage(WM_COMMAND, IDCANCEL);

}

The OnDelete member function sets the
m_bDeleteAll flag and then forces the main dialog to exit as if the
Cancel button had been clicked. The client program (in this case, the view) gets
the IDCANCEL return from DoModal and reads the flag to see whether
it should delete all files. Here is the function:


6.Edit the file SpecFileDlg.h.
1)change
class CSpecialFileDialog : public CDialog
to
class CSpecialFileDialog : public CFileDialog


2)Add the following two public data members:

CString m_strFilename;
BOOL m_bDeleteAll;

3)Finally, edit the constructor declaration:

CSpecialFileDialog(BOOL bOpenFileDialog, 
LPCTSTR lpszDefExt = NULL,
LPCTSTR lpszFileName = NULL,
DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
LPCTSTR lpszFilter = NULL,
CWnd* pParentWnd = NULL

);

7.Edit the CSpecialFileDialog constructor in SpecFileDlg.cpp.

CSpecialFileDialog::CSpecialFileDialog(BOOL bOpenFileDialog,
LPCTSTR lpszDefExt, LPCTSTR lpszFileName, DWORD dwFlags,
LPCTSTR lpszFilter, CWnd* pParentWnd)
: CFileDialog(bOpenFileDialog, lpszDefExt, lpszFileName,
dwFlags, lpszFilter, pParentWnd)

{
//{{AFX_DATA_INIT(CSpecialFileDialog)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_ofn.Flags |= OFN_ENABLETEMPLATE;
m_ofn.lpTemplateName = MAKEINTRESOURCE(IDD_FILESPECIAL);
m_ofn.lpstrTitle = "Delete File";
m_bDeleteAll = FALSE;

}


In addition, it must set some members of the CFileDialog base class data
member m_ofn, which is an instance of the Win32 OPENFILENAME
structure. The Flags and lpTemplateName members control the
coupling to your IDD_FILESPECIAL template, and the lpstrTitle
member changes the main dialog box title.

8.Replace CDialog with CFileDialog in SpecFileDlg.h And SpecFileDlg.cpp

9.Add code to the virtual OnDraw function in file ex07bView.cpp. The
CEx07bView OnDraw function (whose skeleton was generated by AppWizard)
should be coded as follows to prompt the user to press the mouse button:

void CEx07bView::OnDraw(CDC* pDC)
 {
 pDC->TextOut(0, 0, "Press the left mouse button here.");

}

10.Add the OnLButtonDown message handler to the CEx07bView class. Use
ClassWizard to create the message handler for WM_LBUTTON-DOWN, and then edit the
code as follows:
void CEx07bView::OnLButtonDown(UINT nFlags, CPoint point) 
{
CSpecialFileDialog dlgFile(TRUE, NULL, "*.obj");
CString strMessage;
int nModal = dlgFile.DoModal();
if ((nModal == IDCANCEL) && (dlgFile.m_bDeleteAll)) {
strMessage.Format(
"Are you sure you want to delete all %s files?",
dlgFile.m_strFilename);
if (AfxMessageBox(strMessage, MB_YESNO) == IDYES) {
HANDLE h;
WIN32_FIND_DATA fData;
while((h = ::FindFirstFile(dlgFile.m_strFilename, &fData))
!= (HANDLE) 0xFFFFFFFF) { // no MFC equivalent
if (::DeleteFile(fData.cFileName) == FALSE) {
strMessage.Format("Unable to delete file %s\n",
fData.cFileName);
AfxMessageBox(strMessage);
break;
}
}
}
}
else if (nModal == IDOK) {
CString strSingleFilename = dlgFile.GetPathName();
strMessage.Format(
"Are you sure you want to delete %s?", strSingleFilename);
if (AfxMessageBox(strMessage, MB_YESNO) == IDYES) {
CFile::Remove(strSingleFilename);
}
}

}
11.Of course, you'll need to include the statement

#include "SpecFileDlg.h"

after the line

#include "ex07bView.h"


2005年10月20日

大风大浪早上去听了M$的SQL Server 2005发布会
地点在雷迪森广场酒店,武林门那里。发布会9:00开始,我八点多就到了,拿到了前50名才有的光盘和MSDN杂志。

1.了解SQL Server 2005的新技术、新功能
a.易用性:镜像备份更容易,自动快速切换,切换时间在3秒内;使用两个数据库进行异地镜像
b.安全性:具有加密接口,自由添加加密方法


2.看了VS.NET2005的4个Demo
a.自动生成增删改界面和代码
b.Office支持
c.Smart Client
d.ASP.NET2的组件、Master Page

2005年10月19日

昨天总算把驾照考出来了,真是非常运气。

今天去sourceforge上看了下,
1.Earth3D 上升了900多位
Earth3D is a program to display the earth as a 3D globe (including heightfields) in real-time. One can zoom until cities become visible. It uses huge datasets that are loaded on demand over the internet. It is possible to embed dynamic data into the view.
http://sourceforge.net/projects/earth3d/

2.RoundCube 上升了700多位
RoundCube Webmail is a browser-based multilingual IMAP client with an application-like user interface providing full functionality like MIME support, contacts and filters. It is written in PHP with MySQL and implements web standards such as XHTML and CSS
http://sourceforge.net/projects/roundcubemail/

3.FreePOPs 上升了50位

FreePOPs is a webmail to pop3 conversion daemon. It is extensible to support other webmail using the scripting language LUA. See the homepage for supported webmails.
http://sourceforge.net/projects/freepops/

4.kiki the nanobot 也升了700多位

kiki the nanobot is a 3-D puzzle game. It is basically a mixture of the games Sokoban and Kula-World.
http://sourceforge.net/projects/kiki/

2005年10月16日

今天星期天,练了两天的车,就快考试了,现在在这里总结一下:

一档没情况不要点刹车,有情况踩离合器再点刹车。

二档时有情况先离合器到底,再刹车,车多又可以走时可以半联动前进,情况处理好了,再加油门加档

四档五档减速时要看情况,前面很多人和车,多点刹车,到二档的速度再换二档前进;前面有小情况,稍点点刹车换三档,脚钩油门看看可以通过就可以了。

转弯:直角、十字路口、弯度比较大的转弯用二档慢速通过,弯度适中的用三档。

上坡:要加油门,不能点刹车,松油门就相当于用刹车了,更不允许换档。

熄火:不要慌,手刹空档,发动,一档,提手刹,脚钩油门,慢慢松离合器,前进。

调头,先打右转向灯,减速到一档,换一档,看后视镜有无车过来、左边有没车辆、前方有没车,确认安全后再半联动往左转(一般一圈多一点就行了,不需要两把打死)。

超车:先跟住前方车辆,稍在前车左边一点,看看对面有没有车辆、障碍物,如果安全可以超车,打左转向灯,看后视镜,后方无超车车辆,就可以按喇叭加油门超车,超出前方车辆时,对面还没有车过来,打右转向灯,慢慢往右斜进去。超车完毕关掉转向灯。

2005年09月12日

网上找了些有关汽车熄火的问题:

1。什么是熄火?是不是发动机在一直没有给油的情况下,惯性原因停掉了,因此熄火?

2。为什么会熄火?是不是油给的不足,而且离合放的太快,因此发动机动力带不动该档位,因此熄火?熄火跟档位和速度也是有关的吧,如果档位高,速度慢也是要熄火的吧。

3。车暂时停着,脚一直踩着离合,但是没有给油(红灯状态),此时变速箱与发动机是分离的,发动机又没有油,这样发动机如何保持持续运转?因为一旦放了离合半联动启动的话,发动机就要带动变速箱,从而带动传动轴启动的阿?

4。如果挂进一个档位,但是车停了(可能是惯性停止,也可能是踩死刹车停止的),这时会熄火吗?如果踩死了离合(没有挂进任何档位),车停了,会熄火吗?如果挂进了空档,车停了,这是不会熄火的吧?

我前天第一次上车,开了一天,熄过一次火,同去的同学也熄了几次,因此急于搞清熄火原理,以免类似情况频繁发生。希望各位高手指点迷津,谢谢。


回答你的问题不需要高手,只不过你这个新手是个太“新”的手:

1、发动机不转了,就是熄火;

2、熄火的原因:发动机运行出现故障、与车轮等传动机构连接(带档)面车已经停下时、带档时达不到到最低发动机转速(即怠速)时,即使踩下离合器发动机也无法维持最基本的运转速度和关闭电门锁等;

3、发动机怠速是靠发机机的怠速系统维持,并不是没有给油,可以理解成给了一个固定的油门,只是不需要踩油门踏板而已;

4、以下几种情况下,发动机都能维持正常的怠速运转:踩下离合使发动机自行空转;置于空档位置时;档速与怠速相对应,而发动机怠速运转时的动力足以维持车辆行驶;


谢谢!再问一个情况,就是五档情况下正常行驶,突然串出一个人,条件反射紧急刹车了,左脚没有踩死离合,急刹车杀死了,这时会熄火吗?这是是刹车片把车轮锁死了,发动机通过离合还带着档呢,并不存在带档转速不够的情况,发动机应该还在转吧。这样的话,如果一切太平,过了几秒以后,能够踩离合重新挂一档,加油门启动吗?换句话说,即便不是急刹车,只要车速太慢,或是停了,挂着档,没带离合也是会熄火的?
属“车轮等传动机构连接(带档)而车已经停下时”或“带档时达不到到最低发动机转速(即怠速)时”这两种情况,当然会熄火。

2005年09月11日


昨天早上去练车了,复习了一下移库、倒桩。
然后教练教我换档:

先练习脚:
1.左脚踩离合器到底,右脚抬起,
2.左脚迅速抬上一点后,再慢慢地向上抬;同时右脚轻轻踩油门。
3.左脚离开离合器,放到离合器左边

练好后,再加上手的动作:
1.左脚踩离合器到底,右脚抬起,
2.换档,加档时必须从1->2->3->4->5的顺序往上加,不能跳档,但减档时可以从5档到一档,但速度必须先踩刹车降下来。
3.档换好后,左脚马上抬上来一点,但不能太多,接着再慢慢地向上抬;同时右脚轻轻踩油门。
4.如果在一档,左脚不必拿开离合器,在其它档时必须拿开。


减档时,先踩刹车,把速度降下来,再踩离合器,再慢慢踩刹车,速度差不多后,移开刹车到油门,离合器到底,换档,离合器迅速上来一点,再右脚下去一点点,左脚上来一点点……


昨天体验了一下3档的速度,呵呵~爽


下午去同学那里看《大长今》,这个韩剧还是蛮有意思的,好看。不过太长了,五十三集,没那么多时间在那看。呜~

2005年09月09日

今天早上去考试了,8:45出发,换了一辆车,到那边是9:40左右,稍微休息了一下,说是已经到180号了。然后他叫190号前的可以进去,就进去了。做得还顺,有一两题没看过,乱猜了。结果考了97分,算是就这样过了吧。把成绩单交给教练就去上班了。
明天又得开始练车了,22号考移库。