Chinaunix

标题: 谁有封装好的ADO类,常用操作就行! [打印本页]

作者: liuqingzhu    时间: 2012-03-24 12:51
标题: 谁有封装好的ADO类,常用操作就行!
谁有封装好的ADO类,常用操作就行!有的话,发liuqingzhu@163.com,先谢了.
作者: bruceteen    时间: 2012-03-24 14:30
从来不用COM垃圾的飘过
对于数据库,要么用通用的ODBC方式,要么用数据库自身的api接口,还有一些封装好的库,比如OTL等等,就是不用DAO、ADO等COM垃圾
作者: 三月廿七    时间: 2012-03-24 14:36
本帖最后由 三月廿七 于 2012-03-24 14:40 编辑

回复 2# bruceteen
问你个问题, 如何在文本控件或是 按钮上画个 图标/位图,有哪个消息?(不考虑 DrawIcon)   
BS_ICON 怎么用的?
作者: bruceteen    时间: 2012-03-24 14:50
画图标如果不用DrawIcon或类似的函数,难道你准备自己解析ICON格式?

在文本控件上画图,重载后自绘比较正宗
在窗口类的OnDraw/OnPaint中自绘比较简单
(BTW:为什么不直接用 Picture Control?)

在按钮上画图,重载后自绘
也可以设置其属性Owner Draw为true后自绘
(BTW:为什么不直接设按钮属性Bitmap/Icon为true,然后用SetBitmap/SetIcon?)
作者: bruceteen    时间: 2012-03-24 14:51
回复 3# 三月廿七


画图标如果不用DrawIcon或类似的函数,难道你准备自己解析ICON格式?

在文本控件上画图,重载后自绘比较正宗
在窗口类的OnDraw/OnPaint中自绘比较简单
(BTW:为什么不直接用 Picture Control?)

在按钮上画图,重载后自绘
也可以设置其属性Owner Draw为true后自绘
(BTW:为什么不直接设按钮属性Bitmap/Icon为true,然后用SetBitmap/SetIcon?)
作者: 三月廿七    时间: 2012-03-24 15:05
本帖最后由 三月廿七 于 2012-03-24 15:16 编辑

回复 5# bruceteen

有 picture control的吗?
用纯API, 是为了以后容易跨平台

如何在静态文本上绘图?
drawIcon我会的,想问问还有其他方式吗,drawIcon有点高级了,

HWND text = CreateWindow(TEXT("STATIC"), "",
                                WS_CHILD | WS_VISIBLE | BS_ICON,
                                20, 20, 300, 230,
                                hwnd, (HMENU) 1, NULL, NULL);

SendMessage(text, BM_SETIMAGE, IMAGE_ICON, (LPARAM)IDI_WARNING);
为什么不行, ?   

PS: windows 画个图还要发个消息,参数又是menu, 又是id, 太乱了...
作者: bruceteen    时间: 2012-03-24 16:06
回复 6# 三月廿七


有,它其实也就是个static控件

看你的代码,是将button的东西用在了static上

        HWND text = ::CreateWindow( TEXT("STATIC"), TEXT("abc"),
                                WS_CHILD | WS_VISIBLE | SS_ICON,
                                20, 20, 300, 230,
                                m_hWnd, (HMENU) 1, NULL, NULL);

        ::SendMessage(text, STM_SETIMAGE, IMAGE_ICON, (LPARAM)::LoadIcon(NULL,IDI_ERROR) );
作者: 三月廿七    时间: 2012-03-24 16:16
回复 7# bruceteen

太棒了, 谢谢,   
作者: 三月廿七    时间: 2012-03-25 11:43
回复 7# bruceteen
为什么不能在用TAB键在 g1 和 g2 之间切换焦点??
而且在 g1 里的 2 个按钮也不能用 TAB 键切换焦点,? 什么原因 ,

                HWND g1 = CreateWindow(TEXT("button"), TEXT("Choose Color"),
                        WS_CHILD | WS_VISIBLE | BS_GROUPBOX | WS_TABSTOP,
                        10, 10, 120, 110, hwnd, (HMENU) 0, g_hinst, NULL);
                CreateWindow(TEXT("button"), TEXT("Blue"),
                        WS_CHILD | WS_VISIBLE,
                        20, 30, 100, 30, g1 , (HMENU)ID_BLUE , g_hinst, NULL);
                CreateWindow(TEXT("button"), TEXT("Yellow"),
                        WS_CHILD | WS_VISIBLE,
                        20, 55, 100, 30, g1 , (HMENU)ID_YELLOW , g_hinst, NULL);
       
                HWND g2 = CreateWindow(TEXT("button"), TEXT("Choose Color"),
                        WS_CHILD | WS_VISIBLE | BS_GROUPBOX | WS_TABSTOP,
                        10 + 150, 10, 120, 110, hwnd, (HMENU) 1, g_hinst, NULL);
                CreateWindow(TEXT("button"), TEXT("Blue"),
                        WS_CHILD | WS_VISIBLE,
                        20 + 150, 30, 100, 30, g2 , (HMENU)ID_BLUE2 , g_hinst, NULL);
                CreateWindow(TEXT("button"), TEXT("Yellow"),
                        WS_CHILD | WS_VISIBLE,
                        20 + 150, 55, 100, 30, g2 , (HMENU)ID_YELLOW2 , g_hinst, NULL);
作者: bruceteen    时间: 2012-03-25 12:20
回复 9# 三月廿七


    我这里没有VC编译器,我明白帮你试试看
你还可以在消息处理函数中处理 tab 键,用 SetFocus 设置焦点
作者: 三月廿七    时间: 2012-03-25 12:46
本帖最后由 三月廿七 于 2012-03-25 12:57 编辑

回复 10# bruceteen
恩,

你工作还在找好吗?
我查了一下51Job, 无锡的网游公司就1、2家,北京就不一样,北京有1000、2000家
你只要把简历轻轻的一投,我保证你的电话会被打爆掉 ,哈哈 ,!

下次我就不多废话了,
作者: bruceteen    时间: 2012-03-25 13:01
回复 11# 三月廿七

    网游呀,没搞过
作者: 三月廿七    时间: 2012-03-25 13:13
本帖最后由 三月廿七 于 2012-03-25 13:43 编辑

回复 12# bruceteen

工作内容是有层次划分的,肯定有适合你的,...

我刚入门,我只是个打酱油的,没什么见解,
反正网游、页游、手游都是 c/c++写的,你不是找 c/c++ 的工作吗...
而且游戏是 GUI 编程,像你这样的水平,代码扫一眼还不会了吗?
我都想不明白那些山寨货能把代码写成什么样子,还有你看不懂的?

我都怀疑,你是不是写编译器的呀,你是不是看不起游戏啊...    


作者: bruceteen    时间: 2012-03-25 14:24
回复 13# 三月廿七

^_^ 我也不是搞GUI的,只是会点MFC而已。
我没有看不起网游或GUI,只是没做过不了解而已
作者: bruceteen    时间: 2012-03-26 09:08
回复 9# 三月廿七

TAB顺序搞不定,只有在消息预处理函数中做了
  1.     HWND g1 = CreateWindow(TEXT("Button"), TEXT("Choose Color"),
  2.         WS_CHILDWINDOW | WS_VISIBLE | BS_GROUPBOX,
  3.         10, 10, 120, 110, hwnd, (HMENU)0, g_hinst, NULL);
  4.     CreateWindow(TEXT("Button"), TEXT("Blue"),
  5.         WS_CHILDWINDOW | WS_VISIBLE | BS_AUTORADIOBUTTON | WS_GROUP,
  6.         20, 30, 80, 30, g1 , (HMENU)ID_BLUE , g_hinst, NULL);
  7.     CreateWindow(TEXT("Button"), TEXT("Yellow"),
  8.         WS_CHILDWINDOW | WS_VISIBLE | BS_AUTORADIOBUTTON,
  9.         20, 55, 80, 30, g1 , (HMENU)ID_YELLOW , g_hinst, NULL);

  10.     HWND g2 = CreateWindow(TEXT("Button"), TEXT("Choose Color2"),
  11.         WS_CHILDWINDOW | WS_VISIBLE | BS_GROUPBOX,
  12.         10+150, 10, 120, 110, hwnd, (HMENU)1, g_hinst, NULL);
  13.     CreateWindow(TEXT("Button"), TEXT("Blue2"),
  14.         WS_CHILDWINDOW | WS_VISIBLE | BS_AUTORADIOBUTTON | WS_GROUP,
  15.         20, 30, 80, 30, g2 , (HMENU)ID_BLUE2 , g_hinst, NULL);
  16.     CreateWindow(TEXT("Button"), TEXT("Yellow2"),
  17.         WS_CHILDWINDOW | WS_VISIBLE | BS_AUTORADIOBUTTON,
  18.         20, 55, 80, 30, g2 , (HMENU)ID_YELLOW2 , g_hinst, NULL);
复制代码

作者: bruceteen    时间: 2012-03-26 16:04
回复 9# 三月廿七


    搞定了,原来你将 radiobutton 设为 groupbox 的子控件了
  1.     HWND g1 = CreateWindow(TEXT("Button"), TEXT("Choose Color"),
  2.         WS_CHILDWINDOW | WS_VISIBLE | BS_GROUPBOX,
  3.         10, 10, 120, 110, hwnd, (HMENU)0, g_hinst, NULL);
  4.     CreateWindow(TEXT("Button"), TEXT("Blue"),
  5.         WS_CHILDWINDOW | WS_VISIBLE | BS_AUTORADIOBUTTON | WS_GROUP,
  6.         20, 30, 80, 30, hwnd , (HMENU)ID_BLUE , g_hinst, NULL);
  7.     CreateWindow(TEXT("Button"), TEXT("Yellow"),
  8.         WS_CHILDWINDOW | WS_VISIBLE | BS_AUTORADIOBUTTON,
  9.         20, 55, 80, 30, hwnd , (HMENU)ID_YELLOW , g_hinst, NULL);

  10.     HWND g2 = CreateWindow(TEXT("Button"), TEXT("Choose Color2"),
  11.         WS_CHILDWINDOW | WS_VISIBLE | BS_GROUPBOX,
  12.         10+150, 10, 120, 110, hwnd, (HMENU)1, g_hinst, NULL);
  13.     CreateWindow(TEXT("Button"), TEXT("Blue2"),
  14.         WS_CHILDWINDOW | WS_VISIBLE | BS_AUTORADIOBUTTON | WS_GROUP,
  15.         20+150, 30, 80, 30, hwnd , (HMENU)ID_BLUE2 , g_hinst, NULL);
  16.     CreateWindow(TEXT("Button"), TEXT("Yellow2"),
  17.         WS_CHILDWINDOW | WS_VISIBLE | BS_AUTORADIOBUTTON,
  18.         20+150, 55, 80, 30, hwnd , (HMENU)ID_YELLOW2 , g_hinst, NULL);
复制代码

作者: 三月廿七    时间: 2012-03-26 16:33
本帖最后由 三月廿七 于 2012-03-26 16:58 编辑

同一个组合框里的可以吗? 去掉组合框可以吗?
作者: bruceteen    时间: 2012-03-26 23:37
三月廿七 发表于 2012-03-26 16:33
同一个组合框里的可以吗? 去掉组合框可以吗?


在同一个组合框中不用table设焦点,而是用上下左右键
和 组合框 没有任何关系,有关系的是那个group属性。一堆radiobutton的id要连续,第一个要加group属性

作者: 三月廿七    时间: 2012-03-27 00:05
本帖最后由 三月廿七 于 2012-03-27 00:06 编辑

回复 18# bruceteen

我的意思是 6 号box 里的那2个按钮之间 能否实现Tab停靠
+ 我没试出来...,

   
作者: tomorrow819    时间: 2012-03-27 00:12
再过几十年,我们来相会,送到火葬场,全部烧成灰,你一堆,我一堆,谁也不认识谁,全部送到农村做化肥。

94你................

作者: bruceteen    时间: 2012-03-27 08:32
回复 19# 三月廿七

    8和10是什么?
    关于Tab停靠,你得保证7和9的父窗体是这个对话框,而不是6
    2和6是什么?看起来像层,Windows不支持层概念
作者: 三月廿七    时间: 2012-03-27 10:14
本帖最后由 三月廿七 于 2012-03-27 10:15 编辑

回复 21# bruceteen

8、10就 Label,  图是GTK官网上的,
假设 6 是 1 的子窗体,
我这里6是弹出的对话框,7,9是这个对话框上的按钮,然后不能Tab停靠,

所以说 windows 控件的数据结构设计的垃圾嘛,~~

你能不能把你的完整测试代码发一下,
作者: bruceteen    时间: 2012-03-27 11:17
回复 22# 三月廿七

听不懂呀
8、10 根本不需要呀,button本身就可以设置标题
“6 是 1 的子窗体” --- 也不需要呀,7 9 作为 1 的 子控件就行了
“6是弹出的对话框” --- 看起来不像

我现在比较忙,下午有时间我帮你看看
作者: 三月廿七    时间: 2012-03-27 11:28
回复 23# bruceteen

可别耽误自己的工作呀, 有空就看看,就当娱乐~~
作者: bruceteen    时间: 2012-03-27 12:05
回复 24# 三月廿七
  1. CreateWindow( TEXT("Button"), TEXT("Frame Lable")
  2.     , WS_CHILDWINDOW | WS_VISIBLE | BS_GROUPBOX
  3.     , 10, 10, 200, 100, hwnd, (HMENU)-1, g_hinst, NULL);

  4. CreateWindow( TEXT("Static"), TEXT("This is some text inside the frame!")
  5.     , WS_CHILDWINDOW | WS_VISIBLE | WS_GROUP | SS_LEFT
  6.     , 20, 30, 160, 15, hwnd, (HMENU)-1, g_hinst, NULL);

  7. CreateWindow( TEXT("Button"), TEXT("Cancel")
  8.     , WS_CHILDWINDOW | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON | BS_TEXT
  9.     , 50, 120, 75, 23, hwnd, (HMENU)IDCANCEL, g_hinst, NULL);

  10. CreateWindow( TEXT("Button"), TEXT("OK")
  11.     , WS_CHILDWINDOW | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON | BS_TEXT
  12.     , 135, 120, 75, 23, hwnd, (HMENU)IDOK, g_hinst, NULL);
复制代码
有一种简单的方法,你新建一个MFC对话框程序,用资源编辑器把元素布置好,运行。
打开 Spy++,按工具栏上最左边的那个按钮(Windows),按ALT+F3,把那个瞄准器一样的图标拖到你刚才运行的程序界面上,按OK确定。点相应的树节点,右键选择“属性”,……




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2