| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 968 人关注过本帖
标题:c语言怎么实现按扭
只看楼主 加入收藏
东台野人
Rank: 1
来 自:江苏省东台市
等 级:新手上路
帖 子:57
专家分:0
注 册:2007-11-17
收藏
 问题点数:0 回复次数:7 
c语言怎么实现按扭
c语言里有没有接受鼠标点击的函数.?
我想做一个window下的窗口,很简单的那种.几个按扭就行,每一个按扭可以打开一个网站...
搜索更多相关主题的帖子: c语言 
2008-01-08 19:44
camelbupt
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2007-9-28
收藏
得分:0 
顶一个,同求...
2008-01-08 22:01
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 
程序代码:
#include <windows.h>

#define IDE_WEB     101
#define IDB_END   117
#define IDB_OPENWEB   118

#define     WIN_START_X         100
#define     WIN_START_Y         100
#define     WIN_WIDTH           320
#define     WIN_HEIGHT          80

HWND hwnd ;
HWND hEdit_Web ;
HWND hButton_OpenWeb, hButton_End ;

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ; //消息处理过程函数
int winLayout(HINSTANCE hInstance) ;    //窗口布局函数
int CheckString(char *strA, char *strB) ;   //字符串匹配判断函数

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                   PSTR szCmdLine, int iCmdShow)
{
    static TCHAR szAppName[] = TEXT ("SineWave") ;
    MSG           msg ;
    WNDCLASS      wndclass;

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

    if (!RegisterClass (&wndclass))
    {
            MessageBox (  NULL, TEXT ("Program requires Windows NT!"),
                   szAppName, MB_ICONERROR) ;
                   return 0 ;
    }

    hwnd = CreateWindow ( szAppName, TEXT ("打开指定网页程序"),
                          WS_POPUP,
                          WIN_START_X, WIN_START_Y ,
                          WIN_WIDTH, WIN_HEIGHT ,
                          NULL, NULL, hInstance, NULL) ;

    winLayout(hInstance);

    SetWindowPos(hwnd
                 , HWND_TOPMOST
                 , WIN_START_X, WIN_START_Y
                 , WIN_WIDTH, WIN_HEIGHT
                 ,SWP_SHOWWINDOW) ; //最顶端显示
                 
    ShowWindow (hwnd, iCmdShow) ;
    UpdateWindow (hwnd) ;

    while (GetMessage (&msg, NULL, 0, 0))
    {
            TranslateMessage (&msg) ;
            DispatchMessage (&msg) ;
    }

    return msg.wParam ;
}

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    HDC hdc ;
    PAINTSTRUCT ps ;
    HBRUSH hBrush ;

    switch (message)
    {
    case    WM_CREATE:
            return 0 ;
    case    WM_PAINT: //背景绘制与重画
            hdc = BeginPaint (hwnd, &ps) ;
            hBrush = CreateSolidBrush (RGB(201, 207, 202)) ;
            SelectObject (hdc, hBrush) ;

            Rectangle(hdc , 0, 0, WIN_WIDTH, WIN_HEIGHT);

            DeleteObject (hBrush) ;

            for(int i = 5; i < WIN_HEIGHT-5; i++)
             for(int j = 5; j < WIN_WIDTH-5; j++)
             {
                 SetPixel(hdc, j, i, RGB (18, 445-i, j/2)) ;
             }

            EndPaint (hwnd, &ps) ;
            return 0 ;
    case    WM_COMMAND: //点击按钮控件事件
                switch(LOWORD(wParam))
                {
                    case    IDB_END:
                            exit(0) ;
                            break ;
                    case    IDB_OPENWEB:    //连接网站按钮
                            char lastChar[100] = "", webChar[100] = "http:\\\\", *linkChar ;
                            GetWindowText(hEdit_Web, lastChar, 99) ;
                            //对不浏览器不能识别的网址进行处理
                            if(CheckString(lastChar, "http:\\\\"))
                            {
                                strcat(webChar, lastChar) ;
                                linkChar = webChar ;
                                SetWindowText(hEdit_Web, webChar) ;
                            }
                            else
                            {
                                linkChar = lastChar ;
                            }
                            //连接网站
                            ShellExecute(hwnd, "open", linkChar, "", "", SW_SHOW);
                            break ;
                }
                return 0;
    case    WM_DESTROY: //销毁窗口
            PostQuitMessage (0) ;
            return 0 ;
    }

    return DefWindowProc (hwnd, message, wParam, lParam) ;

}

int winLayout(HINSTANCE hInstance)
{
    hEdit_Web = CreateWindow("EDIT",       //建立网址输入文本框
                             NULL,
                             WS_CHILD | WS_VISIBLE | ES_RIGHT | WS_BORDER,
                             10, 10 ,
                             260, 20 ,
                             hwnd,
                             (HMENU)IDE_WEB,
                             hInstance,
                             NULL);
                             
    hButton_End = CreateWindow("BUTTON",       //建立退出按钮
                             "退出",
                             WS_CHILD | WS_VISIBLE,
                             110, 40 ,
                             50, 20 ,
                             hwnd,
                             (HMENU)IDB_END,
                             hInstance,
                             NULL);

    hButton_OpenWeb = CreateWindow("BUTTON",       //建立连接网页按钮
                             "连接网站",
                             WS_CHILD | WS_VISIBLE,
                             10, 40 ,
                             80, 20 ,
                             hwnd,
                             (HMENU)IDB_OPENWEB,
                             hInstance,
                             NULL);
}

int CheckString(char *strA, char *strB)
{
    do
    {
        if(*strA != *strB)
         return 1 ;
    }while(*(strA++) && *(strB++)) ;
    
    return 0 ;
}
C-FREE编译运行通过
2008-01-09 18:40
xDevil
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2007-8-31
收藏
得分:0 
果然牛b啊
2008-01-09 20:06
阿牧
Rank: 1
等 级:新手上路
威 望:1
帖 子:138
专家分:0
注 册:2007-11-5
收藏
得分:0 
为什么在dev C++编译器里不通过?
2008-01-09 20:29
linsua
Rank: 1
等 级:新手上路
帖 子:275
专家分:0
注 册:2008-1-2
收藏
得分:0 
原帖由 [bold][underline]xDevil[/underline][/bold] 于 2008-1-9 20:06 发表 [url=http://bbs.][/url]
果然牛b啊



for循环里定义变量用到了C99特性,
如果编译器不支持的话,把这个程序保存成.cpp ,当C++编译。

DEV-C++编译的时候,在工具-》编译选项-》在编译时加入以下命令     勾选,并在其中加上 -lgdi32 就好了,如图:
图片附件: 游客没有浏览图片的权限,请 登录注册


pS:这位写代码的是大牛啊,大家要多多向他请教啊

如果你对我的话感到再明白不过 那恐怕你是误解了我的意思
2008-01-09 23:12
xianshizhe111
Rank: 1
等 级:新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
收藏
得分:0 
顶牛
2008-01-09 23:16
东台野人
Rank: 1
来 自:江苏省东台市
等 级:新手上路
帖 子:57
专家分:0
注 册:2007-11-17
收藏
得分:0 
回复 3# 的帖子
太谢谢了.学习中.

永远记住:自己的取得成功的决心比什么都重要
2008-01-10 11:30
快速回复:c语言怎么实现按扭
数据加载中...
 
   



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

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