网络软件 系统工具 应用软件 图形图像 多媒体类 免费游戏 安全相关 免费音乐 网页素材 电子书籍 考试考题 建站源码
教育教学 多媒体类 编程开发 操作系统 游戏天地 娱乐天地 简历求职 站长专区 网页设计 安全技术 图形图像 文学驿站
业界资讯 | 图形图像 | 操作系统 | 网络冲浪 | 工具软件 | 办公软件 | 媒体动画 | 精文荟萃 | 认证考试 | 网页设计 | 技术开发 | 专栏
当前位置:热点网络学院编程开发Visual C++SDK按钮控件的实现
精品推荐
热点TOP10
·Microsoft Windows 2000 应用程序兼容性 ( 2 )
·Visual C++中位图按钮的新颖设计
·干掉你的状态条(Not no statusbar)!!!
·如何在VC++中使用注册表
·在SDK程序中使用MFC中的辅助类
·STL之父访谈录
·重定义键盘的两种实现方法
·如何成为一名优秀的程序员?
·大学生造病毒
·在MFC程序中如何注册/注销ActiveX控件(.OCX)
·情有独钟C++:Visual C++ .NET编译器的新特性
·在CPP文件中自动添加函数注释的ADDIN
·DEBUG和RELEASE 版本差异及调试相关问题
·如何用Socket实现客户端通信模块
·TCP/IP winsock 编程要点
·WDM驱动程序入门(3)——安装步骤
·C++编译器怎么实现异常处理1
·MSDN笔记---TN001:Window Class Registration(窗口类注册)
·VC下关于debug和release的不同的讨论
·SDK按钮控件的实现
SDK按钮控件的实现
日期:2005年11月10日 作者: 查看:[大字体 中字体 小字体]

高手就别看了!

我是一个SDK的初学者,下面准备学习VC。我经历了SDK的初学者的痛苦。很多书上的程序都是一些稍微复杂一些的程序。因此,我将自己调试的一些小程序,功能单一,并附上程序的详细说明,以帮助和我一样的初学者。

/////////下面是程序

/*------------------------------------------
  这个程序主要练习如何实现按钮
  显示各种按钮控件的效果,控件上的名称即为按钮的设置风格

  ------------------------------------------*/

#include <windows.h>

//下面定义菜单ID的具体数值
#define ID_PUSHME1 1
#define ID_PUSHME2 2
#define ID_PUSHME3 3
#define ID_PUSHME4 4
#define ID_PUSHME5 5
#define ID_PUSHME6 6
#define ID_PUSHME7 7
#define ID_PUSHME8 8
#define ID_PUSHME9 9
#define ID_PUSHME10 10
#define ID_PUSHME11 11
#define ID_PUSHME12 12

//窗口函数的说明
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM) ;


/////////////////////////////////////////////////////////////////////////
//主函数WinMain(),主要用来创建主窗口,并建立消息循环机制
//可使系统调用窗口函数WndProc()
//在Windows编程过程中,这个函数基本上结构一样的
//程序员一般不做太多的变动
////////////////////////////////////////////////////////////////////////
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
              PSTR szCmdLine, int iCmdShow)
     {
     static char  szAppName[] = "About1" ;
     MSG          msg ;
     HWND         hwnd ;
    
  //////////////////////////////////////////////////////
  ////注册窗口类
  WNDCLASSEX   wndclass ;

     wndclass.cbSize        = sizeof (wndclass) ;
     wndclass.style         = CS_HREDRAW CS_VREDRAW ;
     wndclass.lpfnWndProc   = WndProc ;
     wndclass.cbClsExtra    = 0 ;
     wndclass.cbWndExtra    = 0 ;
     wndclass.hInstance     = hInstance ;
     wndclass.hIcon         = LoadIcon (hInstance, szAppName) ;
     wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
     wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
     wndclass.lpszMenuName  = NULL;
     wndclass.lpszClassName = szAppName ;
     wndclass.hIconSm       = LoadIcon (hInstance, szAppName) ;

     RegisterClassEx (&wndclass) ;

  /////////////////////////////////////////////////////////////
  //创建窗口
     hwnd = CreateWindow (szAppName, "控件实现",
                          WS_OVERLAPPEDWINDOW,
                 CW_USEDEFAULT, CW_USEDEFAULT,
                 CW_USEDEFAULT, CW_USEDEFAULT,
                          NULL, NULL, hInstance, NULL) ;
    
 
  /////////////////////////////////////////////////////////////
     //显示和更新窗口
  ShowWindow (hwnd, iCmdShow) ;
     UpdateWindow (hwnd) ;

  //////////////////////////////////////////////////////////////
  //消息循环机制
     while (GetMessage (&msg, NULL, 0, 0))
          {
          TranslateMessage (&msg) ;
          DispatchMessage (&msg) ;
          }
    
  return msg.wParam ;        ////表示从PostQuitMessage返回的值

     }


/////////////////////////////////////////////////////////////////////////////////
//以下是窗口函数,这里是程序员主要编程的地方
//程序员可根据各种消息而设定各种效果,这里也是学习SDK主要要学习的地方
/////////////////////////////////////////////////////////////////////////////////
LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
     {
    
 
 static HINSTANCE hInstance ;
   
 
 //各菜单句柄的说明
    static HWND hbtnWnd1,hbtnWnd2,hbtnWnd3,hbtnWnd4,
           hbtnWnd5,hbtnWnd6,hbtnWnd7, hbtnWnd8,
     hbtnWnd9,hbtnWnd10,hbtnWnd11,hbtnWnd12;


 //程序中用到的字符数组定义
    static char text[]="在这里设置此按钮为edit类型,表示将控件设定为编辑框控件,可以输入文本";    
 
 
 switch (iMsg)
          {
          case WM_CREATE :
              hInstance = ((LPCREATESTRUCT) lParam)->hInstance ;
              
     hbtnWnd1=CreateWindow(
       "button",  //这里设定按钮的类型为button,其它类型有静态控件static,
                  //滚动条控件scrollbar,编辑框控件edit,列表框控件listbox

       "BS_AUTOCHECKBOX",   //这里设定按钮上显示的文本
       BS_AUTOCHECKBOXWS_CHILDWS_VISIBLE,
                   //按钮风格,其中必须有WS_CHILD风格,因为是子窗口,
          //这里可以设定按钮的风格和窗口的风格参数
       10,        
       40,          //(10,40)为按钮的左上角的坐标
       160,        //按钮的宽度
       30,         //按钮的高度
          hwnd,       //父窗口句柄
       (HMENU)ID_PUSHME1,        //子窗口ID,即按钮ID
       hInstance,   //实例句柄 
       NULL);       //额外参数
 
    
 ///////////////////////////////////////////////////////////
 // 下面一些按钮的定义同上面第一个按钮hbtnWnd1的定义相同,
 //  如果你只想定义一个按钮,下面11个按钮的内容你完全可以取消
 //  另外注意每个按钮的位置,长宽大小全一样
 ////////////////////////////////////////////////////////////
               hbtnWnd2=CreateWindow(
       "button",
       "BS_PUSHBUTTON",
       BS_PUSHBUTTONWS_CHILDWS_VISIBLE,
       180,
       40,
       160,
       30,
          hwnd,
       (HMENU)ID_PUSHME2,
       hInstance,
       NULL);

       hbtnWnd3=CreateWindow(
       "button",
       "BS_AUTORADIOBUTTON",
       BS_AUTORADIOBUTTONWS_CHILDWS_VISIBLE,
       350,
       40,
       180,
       30,
          hwnd,
       (HMENU)ID_PUSHME3,
       hInstance,
       NULL);

     hbtnWnd4=CreateWindow(
       "button",
       "BS_CHECKBOX",
       BS_CHECKBOXWS_CHILDWS_VISIBLE,
       540,
       40,
       180,
       30,
          hwnd,
       (HMENU)ID_PUSHME4,
       hInstance,
       NULL);

     hbtnWnd5=CreateWindow(
       "button",
       "BS_AUTO3STATE",
       BS_AUTO3STATEWS_CHILDWS_VISIBLE,
       10,
       80,
       160,
       30,
          hwnd,
       (HMENU)ID_PUSHME5,
       hInstance,
       NULL);
     
               hbtnWnd6=CreateWindow(
       "button",
       "BS_DEFPUSHBUTTON ",
       BS_DEFPUSHBUTTONWS_CHILDWS_VISIBLE,
       180,
       80,
       160,
       30,
          hwnd,
       (HMENU)ID_PUSHME6,
       hInstance,
       NULL);

       hbtnWnd7=CreateWindow(
       "button",
       "BS_GROUPBOX",
       BS_GROUPBOXWS_CHILDWS_VISIBLE,
       350,
       80,
       180,
       30,
          hwnd,
       (HMENU)ID_PUSHME7,
       hInstance,
       NULL);

     hbtnWnd8=CreateWindow(
       "button",
       "BS_LEFTTEXT",
       BS_LEFTTEXTWS_CHILDWS_VISIBLE,
       540,
       80,
       180,
       30,
          hwnd,
       (HMENU)ID_PUSHME8,
       hInstance,
       NULL);

                  hbtnWnd9=CreateWindow(
       "button",
       "BS_RADIOBUTTON",
       BS_RADIOBUTTONWS_CHILDWS_VISIBLE,
       10,
       120,
       160,
       30,
          hwnd,
       (HMENU)ID_PUSHME9,
       hInstance,
       NULL);
     
               hbtnWnd10=CreateWindow(
       "button",
       "BS_3STATE",
       BS_3STATEWS_CHILDWS_VISIBLE,
       180,
       120,
       160,
       30,
          hwnd,
       (HMENU)ID_PUSHME10,
       hInstance,
       NULL);

       hbtnWnd11=CreateWindow(
       "scrollbar",   //滚动条控件,点击此按钮并拖动鼠标可使窗口大小变化
        "BS_OWNERDRAW  ", //自定义控件
       BS_OWNERDRAWWS_CHILDWS_VISIBLE,
       350,
       120,
       180,
       30,
          hwnd,
       (HMENU)ID_PUSHME11,
       hInstance,
       NULL);


 ////////////////////////////////////////////////////////////////////
 ///下面一个是编辑框按钮,你可以在其中输入文字,具有一个简单的写字板的
    ///功能,可以复制、粘贴、剪切等操作
 ///////////////////////////////////////////////////////////////////
     hbtnWnd2=CreateWindow(
       "edit",    //在这里设置此按钮为edit类型,表示将控件设定为编辑框控件
       text,      //字符型数组在前面已经定义,在这里显示它的内容
       WS_CHILDWS_VISIBLEES_MULTILINEES_AUTOVSCROLLES_AUTOHSCROLL
        WS_HSCROLLWS_VSCROLLES_LEFTWS_BORDER,
       10,
       160,
       568,
       130,
          hwnd,
       (HMENU)ID_PUSHME12,
       hInstance,
       NULL);
    
     return 0 ;
                 
                   
          case WM_DESTROY :
               PostQuitMessage (0) ;
               return 0 ;
          }
          return DefWindowProc (hwnd, iMsg, wParam, lParam) ;
     }


 

 

(出处:http://down.vipcn.com/)

关于我们 | 帮助(?) | 版权声明 | 友情连接 
Copyright 2005-2005 viphot.com All Rights Reserved.
Powered by:mesky