Categories
快乐每一天

今天的补遗

今天还整理了一个在MSN Space上的Blog,换了一个Theme,调整了一些布局。并且把原先测试MSN syn时候发过来的垃圾blog删除,然后还写了一些东西。

然后还试用了Windows Live Writer来写blog,很好用。

今天还算不错,美好的开始。

Categories
快乐每一天

新时期的第一个周末

今天是新时期的第一个周末,早上醒来的时候似乎天还是很昏暗,但是时间已经是10点过了。匆匆的搞定必须的步骤,心情顿时开朗起来。

是的,从今天开始,在今后的一年的大部分时间里,我都是一个人在这个狭小的空间里生活,那么就应该让它精彩一些。

收拾完房间,整理好厨房,把积攒了几天的垃圾统统扔走,一切都会是一个崭新的开始。

中午和wong讨论一些Fortran和C混合编程的问题,这个问题在前两周的时候也讨论过。说实话我对这个并不是特别了解,平日里,我用得最多就是Visual C++ 6.0 和 CVF 6.5,因为平台单一,所以混编起来没有什么问题。但是wong需要在win和linux系统下测试,并且需要兼容各种编译器,c主要是vc,icc,gcc,fortran有cvf,g77,intel fortran等,不同的编译器在处理函数的时候对函数名称以及函数参数(特别是字符串)的调用约定很不一致,对于代码的跨平台带来了很大的麻烦。今天我们又谈到了函数参数的传递形式,在某些编译器(wong说linker也会进行调整)会用堆栈的方式传递,而另外一些是把参数mov到临时内存的方式。具体的研究成果希望wong将来能够整理出一个笔记,造福人类。(http://www.itcivil.com/post/121.html)

扯远了,回归正题。

独自一个人在家的时候,很容易无所事事,对我来说,这也是历史经验证明的。但是现在还是需要改变一下,前人总结的经验就是指定计划然后执行,不管能不能坚持下来,但是还是试试吧。

短期目标:

1. 锻炼身体,现在有的时候身体有些不爽,应该没什么大碍,但是还是要锻炼一下身体。

2. 认真饮食,发扬我们家不怕苦不怕累坚持自己做美味的习惯。

3. 充足睡眠,以前由于各种原因睡眠比较少,现在开始要改进。

4. 坚持学习,现在需要学习的东西太多了,结构软件、英语、日语…

猪宝大人电话回来了,一切都还好,略微放心。现在通讯还是不方便,应该过几天就可以了。昨天将SKYPE调试好并且也充值了,似乎通话效果也还不错,希望在未来的时间里面网通不要捣乱。

谢谢大家,一切都好。

Categories
快乐每一天

Blog是一种心情,然后是一种生活方式

当自己一个人的时候,总是可以静下来体会一些东西。记得那次看Scott Meryers的Effective STL的时候,看到他在前言里提到,“感谢我的妻子,Nancy,她从未忘记提醒我生活比C++和软件重要”。或许Nancy是对的。

那生活是什么呢?在这个周末,去拜读了一些朋友们的blog后,或许有了一些答案。

打开了shangxia的Tulip’s World ,听到无间道里那首再见警察的舒缓旋律,看到无论是荷兰小镇Enschede或者是德国的Osnabruck,似乎都是平静而又优美,一切都会给人一种很舒服的感觉,仿佛另外的一个世界。

回想起我们家米妮猪*猪宝大人在初到川崎的感受,“川崎真的很美,晚上的街上也很安全,很温暖,很宁静”。一切都不像是在这边,“高楼上的一片天。我们都生活在钢筋水泥之中,只能看到被切割得奇形怪状的天空”,这是另外一个网友blog里写的。

然后回想起pearl的云南之旅,猫猫同学的猫族战争Seudy纤柔彩凡里的东京生活,hygeen的End of Sky,形形色色的故事,形形色色的心情,形形色色的生活。

依旧没有答案,但却蹦出了另外一个念头:“Blog是一种心情,然后是一种生活方式”,就以此为标题吧。

Categories
技术讨论

Displaying a Bitmap from a BMP File

发件人: wangxl [mailto:hamo2k@163.com]
发送时间: 2006年9月13日 23:09
收件人: ‘wangxianlei@cabrtech.com’
主题: Displaying a Bitmap from a BMP File

Displaying a Bitmap from a BMP File
Rating:

  Ramakrishna Talla (view profile)
April 3, 2003

Environment: MFC, Visual C++ 6.0, Windows 2000
(continued)

The following code fragment shows how to read an image from a BMP file and display it in your MFC application window. You could see several articles on the same focus; the one I present here is very simple, with just a few lines of code. The code given below has been tested with Visual C++ 6.0 on Win 2000.

Create a single document interface application; select CFormView as the base class for the application’s view base class. Click on the resource tab on the project explorer to navigate to the resource editor and drag a button to the dialog resource. Double-click the button to add a handler to the application’s view class, as shown below.

void AppView::OnButton1()
{
}

Step 1: Load the Image File

Call the following:

CString szFilename ("C:\Talla\yourimg.bmp");
HBITMAP hBmp = (HBITMAP)::LoadImage(
                NULL,
                szFilename,
                IMAGE_BITMAP,
                0,
                0,
                LR_LOADFROMFILE|LR_CREATEDIBSECTION
                );

Step 2: Create a Bitmap Object and Attach It to the Object

CBitmap bmp;
bmp.Attach(hBmp);

Step 3: Create a Memory DC and Select the BMP to It

You also need to store the old BMP pointer:

CClientDC dc(this);
CDC bmDC;
bmDC.CreateCompatibleDC(&dc);
CBitmap *pOldbmp = bmDC.SelectObject(&bmp);

Step 4: Get the BMP Height and Width

Obtain this from CBitmap’s GetBitmap function.

BITMAP  bi;
  bmp.GetBitmap(&bi);

Step 5: Get the Block of Pixels from memoryDC to the Screen

Use CClientDC’s BitBlt function. Next, re-select the old BMP. The complete code is as follows:

void AppView::OnButton1()
{
   CString szFilename("C:\Talla\yourimg.bmp");
   HBITMAP hBmp = (HBITMAP)::LoadImage(NULL,szFilename,
                             IMAGE_BITMAP,0,0,
                             LR_LOADFROMFILE|LR_CREATEDIBSECTION);

   CBitmap bmp;
   bmp.Attach(hBmp);

   CClientDC dc(this);
   CDC bmDC;
   bmDC.CreateCompatibleDC(&dc);
   CBitmap *pOldbmp = bmDC.SelectObject(&bmp);

   BITMAP  bi;
   bmp.GetBitmap(&bi);

   dc.BitBlt(0,0,bi.bmWidth,bi.bmHeight,&bmDC,0,0,SRCCOPY);

   bmDC.SelectObject(pOldbmp);
}

Borland CaliberRM Integrates with Visual Studio to Bring Sophistication to Requirements Management
Get DB2 Express-C 9. Free to Develop, Deploy, Distribute. No limits–just data. Download Now!
Webcast: Linux on Multi-Core–WAS CE and the Open Stack Appliance
Learn how to navigate the key issues that affect developing and deploying mobile applications.
Developer.com Webcast: Defining Your Own Software Development Methodology.

Categories
技术讨论

auto_ptr的应用

template<class T>
class auto_ptr {
public:
typedef T element_type;
explicit auto_ptr(T *p = 0) throw();
auto_ptr(const auto_ptr<T>& rhs) throw();
auto_ptr<T>& operator=(auto_ptr<T>& rhs) throw();
~auto_ptr();
T& operator*() const throw();
T *operator->() const throw();
T *get() const throw();
T *release() const throw();
};
The class describes an object that stores a pointer to an allocated object
of type T. The stored pointer must either be null or designate an object
allocated by a new expression. The object also stores an ownership
indicator. An object constructed with a non-null pointer owns the pointer.
It transfers ownership if its stored value is assigned to another object.
The destructor for auto_ptr<T> deletes the allocated object if it owns it.
Hence, an object of class auto_ptr<T> ensures that an allocated object is
automatically deleted when control leaves a block, even via a thrown
exception.

—–
可以自动释放对象。

auto_ptr<C> p(new C());
p->DoSomething();

Categories
技术讨论

PHP+ACCESS的解决方案

由于一些低价的空间支持ACCESS数据库,因此开发起来比用php+mysql这套黄金搭档要别扭许多,但是也不是没有解决方案。

可以采用下面的例子,利用adodb.connection来进行access数据库的连接。

其中对于数据连接驱动有两种,可以根据虚拟主机的实际情况进行选择。

<?php
$dbc=new com(“adodb.connection”);
//$dbc->open(“driver=microsoft access driver (*.mdb);dbq=D:\virtualhost\web10022\www\test\aaa.mdb”);
$dbc->open(“Provider = Microsoft.Jet.OLEDB.4.0;Data Source = D:\\virtualhost\\web10022\\www\\test\\aaa.mdb”);
$rs=$dbc->execute(“select * from adminuser”);

$num_columns = $rs->Fields->Count();
echo $num_columns . “\n”;

$i=0;
while (!$rs->eof){
$i+=1;
$fld0=$rs->fields[“username”];
$fld1=$rs->fields[“password”];
echo “$fld0->value $fld1->value<br>”;
$rs->movenext();
}
$rs->close();
?>