分享
 
 
 

SDK按钮控件的实现

王朝vc·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

高手就别看了!

我是一个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_AUTOCHECKBOX|WS_CHILD|WS_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_PUSHBUTTON|WS_CHILD|WS_VISIBLE,

180,

40,

160,

30,

hwnd,

(HMENU)ID_PUSHME2,

hInstance,

NULL);

hbtnWnd3=CreateWindow(

"button",

"BS_AUTORADIOBUTTON",

BS_AUTORADIOBUTTON|WS_CHILD|WS_VISIBLE,

350,

40,

180,

30,

hwnd,

(HMENU)ID_PUSHME3,

hInstance,

NULL);

hbtnWnd4=CreateWindow(

"button",

"BS_CHECKBOX",

BS_CHECKBOX|WS_CHILD|WS_VISIBLE,

540,

40,

180,

30,

hwnd,

(HMENU)ID_PUSHME4,

hInstance,

NULL);

hbtnWnd5=CreateWindow(

"button",

"BS_AUTO3STATE",

BS_AUTO3STATE|WS_CHILD|WS_VISIBLE,

10,

80,

160,

30,

hwnd,

(HMENU)ID_PUSHME5,

hInstance,

NULL);

hbtnWnd6=CreateWindow(

"button",

"BS_DEFPUSHBUTTON ",

BS_DEFPUSHBUTTON|WS_CHILD|WS_VISIBLE,

180,

80,

160,

30,

hwnd,

(HMENU)ID_PUSHME6,

hInstance,

NULL);

hbtnWnd7=CreateWindow(

"button",

"BS_GROUPBOX",

BS_GROUPBOX|WS_CHILD|WS_VISIBLE,

350,

80,

180,

30,

hwnd,

(HMENU)ID_PUSHME7,

hInstance,

NULL);

hbtnWnd8=CreateWindow(

"button",

"BS_LEFTTEXT",

BS_LEFTTEXT|WS_CHILD|WS_VISIBLE,

540,

80,

180,

30,

hwnd,

(HMENU)ID_PUSHME8,

hInstance,

NULL);

hbtnWnd9=CreateWindow(

"button",

"BS_RADIOBUTTON",

BS_RADIOBUTTON|WS_CHILD|WS_VISIBLE,

10,

120,

160,

30,

hwnd,

(HMENU)ID_PUSHME9,

hInstance,

NULL);

hbtnWnd10=CreateWindow(

"button",

"BS_3STATE",

BS_3STATE|WS_CHILD|WS_VISIBLE,

180,

120,

160,

30,

hwnd,

(HMENU)ID_PUSHME10,

hInstance,

NULL);

hbtnWnd11=CreateWindow(

"scrollbar", //滚动条控件,点击此按钮并拖动鼠标可使窗口大小变化

"BS_OWNERDRAW ", //自定义控件

BS_OWNERDRAW|WS_CHILD|WS_VISIBLE,

350,

120,

180,

30,

hwnd,

(HMENU)ID_PUSHME11,

hInstance,

NULL);

////////////////////////////////////////////////////////////////////

///下面一个是编辑框按钮,你可以在其中输入文字,具有一个简单的写字板的

///功能,可以复制、粘贴、剪切等操作

///////////////////////////////////////////////////////////////////

hbtnWnd2=CreateWindow(

"edit", //在这里设置此按钮为edit类型,表示将控件设定为编辑框控件

text, //字符型数组在前面已经定义,在这里显示它的内容

WS_CHILD|WS_VISIBLE|ES_MULTILINE|ES_AUTOVSCROLL|ES_AUTOHSCROLL

|WS_HSCROLL|WS_VSCROLL|ES_LEFT|WS_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) ;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有