| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5117 人关注过本帖
标题:WIN32 API按钮制作
只看楼主 加入收藏
小赵q1
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:492
专家分:777
注 册:2011-8-26
结帖率:100%
收藏
已结贴  问题点数:100 回复次数:22 
WIN32 API按钮制作
我用API写了个窗口,但是想在窗口中添加几个按钮,却怎么也找不大怎么弄的,主要就是实现两个方面,1、一个普通按钮,一个彩色按钮,2、单击按钮弹出一个提示。
一晚上时间找到个例子,看了好长时间都跟我用的很多地方不一样,求帮忙,找到的例子在这个地方:
http://blog.
不一样的地方有很多,比如我设计类的地方是这样写的
    //设计一个窗口类
    WNDCLASS wndcls;
    wndcls.cbClsExtra=0;
    wndcls.cbWndExtra=0;
    wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH); //背景颜色
    wndcls.hCursor=LoadCursor(NULL,IDC_ARROW);  //鼠标在窗口内的形状。
    wndcls.hIcon=LoadIcon(hInstance, (LPCTSTR)IDI_ICON1);  //最小化图标。IDI_ERROR是左上角图标句柄,如果为0,就是另外一种窗口图标
    wndcls.hInstance=hInstance;     //应用程序实例句柄由WinMain函数传进来
    wndcls.lpfnWndProc=zhaofeng;   //指明回调函数,要回调自己定义的那个函数
    wndcls.lpszClassName="sunxin2006";  //给自己的窗口注册一个类名,后面调用就能找到,
    wndcls.lpszMenuName=NULL;     //系统菜单,如新游戏,帮助等,如果没有就定义为NULL,
    wndcls.style=CS_HREDRAW | CS_VREDRAW;  //类的样式,可以使任何组合。
    RegisterClass(&wndcls);  //用这个函数创建一个类;
他定义类的地方是这样的:
    //设计一个窗口类
    WNDCLASSEX wcex;  
  
    wcex.cbSize = sizeof(WNDCLASSEX);   
  
    wcex.style          = CS_HREDRAW | CS_VREDRAW;  
    wcex.lpfnWndProc    = (WNDPROC)WndProc;  
    wcex.cbClsExtra     = 0;  
    wcex.cbWndExtra     = 0;  
    wcex.hInstance      = hInstance;  
    wcex.hIcon          = LoadIcon(hInstance, (LPCTSTR)IDI_BTNTEST);  
    wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);  
    wcex.hbrBackground  = (HBRUSH)(COLOR_WINDOW+1);  
    wcex.lpszMenuName   = (LPCSTR)IDC_BTNTEST;  
    wcex.lpszClassName  = szWindowClass;  
    wcex.hIconSm        = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL);  
虽然大同小异,但是好多地方都要变通,按他的方法也能实现他的两个按钮的效果,但是在我的窗口里面就有很多问题,好不容易改完了,但是点击按钮不会弹出那两个对话框了,
另外就是他这个做窗口的方法和我做窗口的方法有什么区别呢?
请高手指教,小弟不胜感激,谢谢  
搜索更多相关主题的帖子: 设计 制作 
2012-04-14 05:44
C_戴忠意
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:575
专家分:1349
注 册:2011-10-21
收藏
得分:8 
又是API,可惜我不会呀

编程之路定要走完……
2012-04-14 09:41
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:15 
没有看到你的源代码,偶只能猜测一下,应该是你的button没有定义ID值。
#define btn1 1  
#define btn2 2  
所以在消息循环的wm_command消息里,你对应的case语句始终没有机会执行,自然没法弹出对话框了。
和你创建何种方式的窗口类应该无关。

我们都在路上。。。。。
2012-04-14 10:24
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
哇 小赵兄给了个很好的例子 我做按键是在菜单按钮下面的 在主窗口下添加按钮还要去尝试。

梅尚程荀
马谭杨奚







                                                       
2012-04-14 10:24
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:0 
回复 4楼 有容就大
呵呵,上次不是给你说过么,其实对话框里拖放的绝大多数的控件都可以用API直接进行创建的,包括菜单。

我们都在路上。。。。。
2012-04-14 10:32
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 5楼 hellovfp
嗯 不过对话框里弄就把很多事交给电脑了
要自己创建按钮才好 可以不受限制

梅尚程荀
马谭杨奚







                                                       
2012-04-14 11:04
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:0 
回复 6楼 有容就大
呵呵,其实偶注意到C#里面WinForm的封装搞得比较好,那里没有vc的对话框窗口设计了,都统一成了普通窗口设计。
也就是这里谈到的普通窗口创建子控件的方式。
以后偶会给你一个示例,用C模拟这种方式,而且可以把控件的一些属性放在XML等配置中,哪天觉得界面不爽了,改改这个外部文件就可以了,而不用重新编译程序。

我们都在路上。。。。。
2012-04-14 11:12
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:15 
如果不是打算一直用C做一切工作,学过控制台基本编程思想之后就应迅速把重点转移到能够快速编写GUI模式的语言上,沿用之前学过的编程思想,而不应该把精力浪费在这种细节上。

授人以渔,不授人以鱼。
2012-04-14 12:14
小跳蚤
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:1
帖 子:437
专家分:1623
注 册:2011-4-9
收藏
得分:8 
学习中
2012-04-14 12:18
阴阳
Rank: 4
等 级:业余侠客
帖 子:102
专家分:297
注 册:2012-4-7
收藏
得分:8 
膜拜

一阴一阳之谓道!
2012-04-14 13:36
快速回复:WIN32 API按钮制作
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012196 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved