月度归档: 2010 年 8 月

  • VC++实现窗口抖动

    VC++实现窗口抖动,代码如下

    void Move()
    {
    	srand((unsigned)time(NULL));
    	HWND hWnd = ::AfxGetMainWnd()->GetSafeHwnd();
    	RECT rcOld, rcNew;
    	::GetWindowRect(hWnd, &rcOld);
    	::memcpy(&rcNew, &rcOld, sizeof(RECT));
    	int iWidth = rcOld.right-rcOld.left;
    	int iHeight = rcOld.bottom-rcOld.top;
    	int x = 0, y = 0;
    	for (int i =0; i<80; i++)
    	{
    		x = rand()%60-30;
    		y = rand()%60-30;
    		::MoveWindow(hWnd, rcNew.left+x, rcNew.top+y, iWidth, iHeight, TRUE);
    	}
    	::MoveWindow(hWnd, rcOld.left, rcOld.top, iWidth, iHeight, TRUE);
    }
  • wwDBGird显示排序的小三角号

    在Query里面加上order by即可,但有一点要注意:

    比如下面的SQL:

    select t.*, t.rowid from Table1 t order by colunm

    千万 不能 在column前面加t (即t.column):

    select t.*, t.rowid from Table1 t order by t.colunm — 这是错的,这样不会 显示小三角号

  • CB MDI框架,Frame关闭的时候,子窗口如何获取这个关闭消息

    是否触发FormCloseQuery()这个事件?,OnClose()和这个事件的触发顺序有先后,以前整过这个东东,都忘了,可测试一下,如果不是 MainForm和ChildForm之间的 关系,当前的Form必须先关闭Frame才能关闭吧?

    原帖链接:https://bbs.csdn.net/topics/340262055

  • PL/SQL命令窗口里,过程,包,触发器等不能执行的解决办法

    PL/SQL命令窗口里,过程,包,触发器等不能执行的解决办法。

    解决办法:在过程(包,触发器,等)最后加个 /  即可

    CREATE OR REPLACE PACKAGE BODY Pkg_Validuser
    ....
    END
    /

  • PL/SQL自动执行单条语句的设置

    PL/SQL自动执行单条语句的设置:

    工具->首选项->窗口类型->SQL窗口

    自动执行查询, 自动选择语句 打上对号

    OK

  • 清除windows系统打开文档历史记录

    系统默认选项总会保留用户近期所打开文档的历史记录,对于某些用户确实很方便,但在公用计算机上,却没人想让其他人知道自己的所做所为。
    (1)打开注册表编辑器。(“开始”-“运行”栏输入“regedit”即可)
    (2)打开HKEY_CURRENT_USER\Software\Microsoft\Windows\Current Version\Policies\Explorer子键。
    (3)新建双字节值NoRecentDocsHistory,数值设为1 表示禁止[文档]进行历史记录的保留,数值为0时表示允许。
    (4)重启电脑后可见效果。

  • Qt里,windows下获取窗口句柄的方法

    Qt里,windows下获取窗口句柄的方法:

    在windows下,QWidget类的WId winId () const 成员函数返回的就是窗口句柄.

  • C语言关于函数指针的&和*

    C89,调用函数指针,需要在函数指针前加*,对函数指针赋值,需要在函数名前面加&

    C89,以后,对函数指针操作不需要& 和 *,但,使用它们是个好习惯

    如下代码(C89函数指针风格)

    #include <stdio.h>
    #include <stdlib.h>
    int max(int x, int y)
    {
        return (x > y ? x :y);
    }
    int main ( int argc, char *argv[] )
    {
        int (*p)(int,int) = &max;	// 这里&max
        int a, b, c;
        scanf("%d%d", &a, &b);
        c = (*p)(a,b);	// 这里(*p)
        printf("%d\n", c);
        return EXIT_SUCCESS;
    } 

  • VIM插件:c-support使用

    1.在~/.vim/c-support/templates/Templates可以设置版权信息,如作者、信箱、版权归属等,新建.c或.cpp文件 是可以看到,并且列出了使用模板文件位置,可以自己编辑,在c.idoms.templete中修改常用函数模板(如main函数等),
    2./if 插入一般函数
    3./im 插入主函数
    4./cfu 插入函数头,即函数说明
    5./cfr 插入一个frame comment,可以用来写变量说明
    6./p< 插入一个include , 并且把光标放在<>中
    7./rc 保存并编译
    8./rr 运行
    9./nr 可以在~/.vim/c-support/codesnippets中编写一些预编译代码或者代码块,通过此命令使用

  • 构造函数是producted属性的创建方法

    构造函数是producted属性的创建方法:

    如下声明的构造函数:

    protected:
        CWeb();           // 动态创建所使用的受保护的构造函数
        virtual ~CWeb();

    创建方法如下:

    CRuntimeClass * pRuntimeClass = RUNTIME_CLASS(CWeb);
    CObject* pObject = pRuntimeClass->CreateObject();
    ASSERT(pObject->IsKindOf(RUNTIME_CLASS(CWeb)));
    m_pWeb = ((CWeb*)pObject);  // m_pWeb为自己定义的CWeb类指针

    之后使用m_pWeb就可以了。