| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2001 人关注过本帖, 1 人收藏
标题:写了一个小东西,大家看看~~
只看楼主 加入收藏
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
结帖率:90%
收藏(1)
 问题点数:0 回复次数:16 
写了一个小东西,大家看看~~
恩,姐姐的计算机图形学要求写的,不过已经过时了~~~所以只能算是我自己写着玩玩~~

其实只是主要拿这个小东西试验一下我VIM的编译脚本而已~

要是不能运行或者有Bug帮忙提一下,谢谢~~~
windmill.rar (7.7 KB)


想要源代码的提一下,我再上传,等我的VIM+GCC弄好了也会上传那个的。不准备往里面加VC6了,不实用。
搜索更多相关主题的帖子: 小东西 
2008-10-18 02:21
个人爱好
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2008-9-27
收藏
得分:0 
我想要原代码,先谢谢你了!
2008-10-18 08:06
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
程序代码:
#define _WIN32_WINNT 0x0501

#include <Windows.h>
#include <assert.h>
#include <math.h>

#define RAD 100
#define PI 3.14159265359

char *strClassName = "My Class";
HDC hDCMemory;
HBRUSH color_brush[4];

void CreateResources()
{
    int i;
    HDC hDCDisplay;
    COLORREF colors[] =
    {
        RGB(255, 0, 0), RGB(255, 255, 0),
        RGB(0, 255, 0), RGB(0, 0, 255)
    };

    for (i = 0; i < 4; i++)
        color_brush[i] = CreateSolidBrush(colors[i]);

    hDCDisplay = GetDC(NULL);
    hDCMemory = CreateCompatibleDC(hDCDisplay);
    SelectObject(hDCMemory,
                 (HGDIOBJ)CreateCompatibleBitmap(hDCDisplay, RAD * 2, RAD * 2));
    ReleaseDC(NULL, hDCDisplay);
}

void ClearResources()
{
    int i;
    for (i = 0; i < 4; i++)
        DeleteObject((HGDIOBJ)color_brush[i]);

    DeleteObject(GetCurrentObject(hDCMemory, OBJ_BITMAP));
    DeleteDC(hDCMemory);
}

void SetClientSize(HWND hWnd, int width, int height)
{
    RECT wndRect, cntRect;
    GetWindowRect(hWnd, &wndRect);
    GetClientRect(hWnd, &cntRect);
    InflateRect(&wndRect, (width - cntRect.right) / 2,
                (height - cntRect.bottom) / 2);
    SetWindowPos(hWnd, NULL, 0, 0, wndRect.right - wndRect.left,
                 wndRect.bottom - wndRect.top, SWP_NOZORDER | SWP_NOMOVE);
}

void DrawWindmill(HDC hdc, double angle)
{
    int i;
    RECT rect = {0, 0, RAD * 2, RAD * 2};
    HGDIOBJ old_pen = SelectObject(hdc, GetStockObject(NULL_PEN));
    HGDIOBJ old_brush = GetCurrentObject(hdc, OBJ_BRUSH);

    FillRect(hdc, &rect, GetStockObject(WHITE_BRUSH));

    for (i = 0; i < 4; i++, angle += PI / 2)
    {
        SelectObject(hdc, color_brush[i]);
        Chord(hdc, RAD * (cos(angle) + 1) / 2,
              RAD * (sin(angle) + 1) / 2,
              RAD * (cos(angle) + 3) / 2,
              RAD * (sin(angle) + 3) / 2,
              RAD * (cos(angle) + 1),
              RAD * (sin(angle) + 1), RAD, RAD);
    }

    SelectObject(hdc, old_brush);
    SelectObject(hdc, old_pen);
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg,
                         WPARAM wParam, LPARAM lParam)
{
    static float angle = 0;
    HDC hdc;
    PAINTSTRUCT ps;
    switch (uMsg)
    {
    case WM_ERASEBKGND:
        return 0;
    case WM_PAINT:
        hdc = BeginPaint(hWnd, &ps);
        DrawWindmill(hDCMemory, angle);
        BitBlt(hdc, 0, 0, RAD * 2, RAD * 2, hDCMemory, 0, 0, SRCCOPY);
        EndPaint(hWnd, &ps);
        break;
    case WM_LBUTTONDOWN:
        uMsg = WM_NCLBUTTONDOWN;
        break;
    case WM_TIMER:
        angle += PI / 180;
        if (angle >= PI * 2) angle = 0;
        InvalidateRect(hWnd, NULL, TRUE);
        break;
    case WM_SIZE:
        SetClientSize(hWnd, RAD * 2, RAD * 2);
        break;
    case WM_CREATE:
        RegisterHotKey(hWnd, 0x1234, MOD_WIN, VK_F12);
        CreateResources();
        SetTimer(hWnd, 1, 10, NULL);
        break;
    case WM_HOTKEY:
    case WM_DESTROY:
        UnregisterHotKey(hWnd, 0x1234);
        ClearResources();
        PostQuitMessage(0);
        break;
    }
    return DefWindowProc(hWnd, uMsg, wParam, lParam);
}

int CALLBACK WinMain(HINSTANCE hInst, HINSTANCE hPreInst,
                     LPSTR strCmdLine, int nCmdShow)
{
    MSG msg;
    HWND hWnd;
    WNDCLASS wc = {CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS,
                   WndProc, 0, 0, hInst,
                   LoadIcon(NULL, IDI_APPLICATION), LoadCursor(NULL, IDC_ARROW),
                   (HBRUSH)GetStockObject(WHITE_BRUSH), NULL, strClassName
                  };
    RegisterClass(&wc);
    hWnd = CreateWindowEx(WS_EX_LAYERED | WS_EX_TOPMOST
                          | WS_EX_TRANSPARENT | WS_EX_TOOLWINDOW,
                          strClassName, "My Window",
                          WS_POPUP,
                          CW_USEDEFAULT, CW_USEDEFAULT, 0, 0,
                          NULL, NULL, hInst, NULL);
    SetLayeredWindowAttributes(hWnd, RGB(255, 255, 255),
                               128, LWA_COLORKEY | LWA_ALPHA);
    ShowWindow(hWnd, nCmdShow);
    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;
}

/* cc_flags = -mwindows */ // 这一行是为了VIM自动添加编译选项



代码不长,不过用来测试自动补全,自动完成,TAB提示和函数原型提示,还有自动编译器选项添加还是完全够了的……VIM真是好东西…………

懂VIM的,问个问题。怎么能在匹配一个模式的时候,同时去掉这个匹配呢?
比如,要求匹配/*...*/,但是不能匹配'..../*...*/....'
我是这么做的:/'\%(''\|[^']\)*'\zs\|\/\*.*\*\/
但是这样的确是去掉了第一个'...'的匹配,但是匹配了'...'的后一个字符……我不知道这是不是VIM的Bug……
/\%('\%(''\|[^']\)*'\)\@=\|\/\*.*\*\/
这个也不行,在匹配/*...*/的同时,匹配了'...'的第一个引号“'”。

难道VIM无法处理这种情况了吗?希望知道的可以告知一下…………

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-10-18 08:33
asd6791868
Rank: 1
来 自:逆流
等 级:新手上路
帖 子:362
专家分:7
注 册:2008-7-27
收藏
得分:0 
DDDDDDDDDDD
不顶 不行
呵呵 好厉害!!!!

─條路 :  ┈片天  ┈個人  ─瞬間:
2008-10-18 12:32
manlang
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2008-10-18
收藏
得分:0 
我还不懂什么是VIM?
2008-10-18 12:52
永夜的极光
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2721
专家分:1
注 册:2007-10-9
收藏
得分:0 
吐血中,你看看行不行吧.....

\('.*\)\@<!\zs\/\*.\{-}\*\/\ze\|'.*\zs\/\*.\{-}\*\/\ze\('\@!.\)*$
匹配以下的/* */
/* */
../* */..
../* */
/* */..
''../* */
'../* */
'../* */..
../* */..''
../* */..'

不匹配以下的/* */
'.../* */..'
'../* */..'
''../* */...'

从BFS(Breadth First Study)到DFS(Depth First Study)
2008-10-18 14:11
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1687
专家分:4253
注 册:2007-12-27
收藏
得分:0 
建议老静开个RE板块
2008-10-18 15:23
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
哎……还是要枚举''和/**/的相对位置……………………

好吧,暂时先这样吧……谢谢了~~

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-10-18 15:56
ltf
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-10-17
收藏
得分:0 
哇!超强的!我看不懂
2008-10-18 15:57
个人爱好
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2008-9-27
收藏
得分:0 
哇,楼主,你太强了,有很多东西我都从来没看过,更是看不懂哦!我还正在学这些语言呢。你是干什么的?是不是程序员啊?我也想考那个!
2008-10-18 18:03
快速回复:写了一个小东西,大家看看~~
数据加载中...
 
   



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

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