| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2897 人关注过本帖
标题:写了个win32基础的窗口 有些问题请教大牛们
只看楼主 加入收藏
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
结帖率:99.34%
收藏
已结贴  问题点数:20 回复次数:90 
写了个win32基础的窗口 有些问题请教大牛们
我把主要的文件压缩上了 下了后在空工程里添加下文件编译应该可以运行 如果不能我再补文件
CartoonOne.zip (12.42 KB)

执行文件是这个
CartoonOne11.zip (40.38 KB)

问题是怎么让编辑窗口里的TEXT内容不随SetTimer的改变而改变?
搜索更多相关主题的帖子: 基础 编辑 文件压缩 执行文件 
2012-05-03 19:02
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
我在
void yrjd_OnTimer(HWND hWnd, UINT nIDEvent)
{
    choice = (choice + 1) % 4;
    InvalidateRect(hWnd, NULL, TRUE);
   
}里加上InvalidateRect(hWndEdit1, NULL, FALSE);不起作用啊。

梅尚程荀
马谭杨奚







                                                       
2012-05-03 19:03
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
重绘解决了 但是闪烁怎么消除 直接上cpp 代码了
CartoonOne.zip (40.37 KB)

-----
程序代码:
///////////////////////////////////////
// Program Name: Cartoon.cpp
// Programmer: YRJD
// Description: Several Cartoon transform
//////////////////////////////////////////

#define STRICT
#define WIN32_LEAN_AND_MEAN

#include <Windows.h>
#include <Windowsx.h>
#pragma warning(disable: 4068) 
#pragma warning (disable:4100) // Please think about these two sentences
#pragma hdrstop
#include "CartoonOne.h"

// Global variables
static char szAppName[] = "CartoonSeries";  // Why use 'static'?
static HINSTANCE hInstance;
static HANDLE hResource; 


//*********************
// Initialization
//*********************

//---------------------------
// WinMain is the entry point
//---------------------------

#pragma argsused
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInstance,
                   LPSTR lpszCmdParam, int nCmdShow    )
{
    MSG msg;

    if (!hPrevInstance)  // In fact this sentence may be omitted
        if (! Register(hInst))  // Registered Window Class
        {
            return FALSE;
        }
   
    if (!Create(hInst, nCmdShow))   // Create a window instance
    {
        return FALSE;
    }

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

    return msg.wParam;
}


////////////////////////////////////
// Register the window
////////////////////////////////////

#pragma argsused
BOOL Register(HINSTANCE hInst)
{
    WNDCLASS wndclass;

    wndclass.style = CS_HREDRAW | CS_VREDRAW;
    wndclass.lpfnWndProc = WndProc;
    wndclass.hInstance = hInst;
    wndclass.cbClsExtra = 0;
    wndclass.cbWndExtra = 0;
    wndclass.hIcon = LoadIcon(hInst, "Icon");
    wndclass.hCursor = LoadCursor(hInst, "Cursor");
    wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    wndclass.lpszMenuName = NULL;
    wndclass.lpszClassName = szAppName;  // Notice this 'szAppName'

    return (RegisterClass(&wndclass));   // The function here is very important
}


////////////////////////////////////
// Create the Window and show it.
////////////////////////////////////

#pragma argsused
BOOL Create(HINSTANCE hInst, int nCmdShow)
{
    hInstance = hInst;   // Connect with the global instance

    HWND hWnd = CreateWindowEx(0, szAppName, "First Cartoon Demo",
                        WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0,
                        CW_USEDEFAULT, 0, NULL, NULL, hInst, NULL);
    if (hWnd == NULL)
    {
        return FALSE;
    }



    ShowWindow(hWnd, nCmdShow);   //...
    UpdateWindow(hWnd);           //...

    return TRUE;
}

//*********************
// Implementation
//*********************

//--------------------------------
// The Window proc help control
// the program when it is running
//--------------------------------

LRESULT CALLBACK WndProc(HWND hWnd, UINT message,
                         WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
      HANDLE_MSG(hWnd, WM_CREATE, yrjd_OnCreate);
      HANDLE_MSG(hWnd, WM_DESTROY, yrjd_OnDestroy);
      HANDLE_MSG(hWnd, WM_PAINT, yrjd_OnPaint);
      HANDLE_MSG(hWnd, WM_TIMER, yrjd_OnTimer);
   
      default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
}

// Create Window

#define ID_TEXT 1
#define ID_DRAW 2
#pragma argsused
BOOL yrjd_OnCreate(HWND hWnd, CREATESTRUCT FAR *lpCreateStruct)
          // Please make the 'CREATESTRUCT FAR' clear, what is it means
{
    
     hResource = LoadResource(hInstance, FindResource(hInstance,
                               "love", "CUSTOM"));
    /* hWndEdit1 = CreateWindow("Edit", NULL, WS_CHILD |
                          WS_VISIBLE | WS_BORDER | ES_LEFT | ES_MULTILINE
                          , 0, 0, 500, 350,
                          hWnd, HMENU(ID_TEXT), hInstance, NULL);*/

     hWndEdit2 = CreateWindow("Static", "Look right! There is the Cartoon!", WS_CHILD |
                          WS_VISIBLE | WS_BORDER, 40, 400, 100, 60,
                          hWnd, HMENU(-1), hInstance, NULL);

         SetTimer(hWnd, 1, 100, NULL);
    
     return TRUE;
}

// Destroy Window

#pragma argsused
void yrjd_OnDestroy(HWND hWnd)
{
    DeleteBitmap(hResource);
    PostQuitMessage(0);
}

// Paint the Bitmap and the text

#pragma argsused
void yrjd_OnPaint(HWND hWnd)
{
    PAINTSTRUCT ps;
    RECT rt;
    char far *love;
   
    // HBRUSH hBrush;
    POINT pt[8] = {240, 410, 340, 410, 340, 370, 400, 430, 340, 490,
    340, 450, 240, 450, 240, 410};

    HDC PaintDC = BeginPaint(hWnd, &ps);
    //HDC PaintBuffer = CreateCompatibleDC(PaintDC);

    SetBkMode(PaintDC, 0);
    love = (char far *)LockResource(hResource);
    GetClientRect(hWnd, &rt);
        rt.left +=30;
        rt.top += 30;
    DrawText(PaintDC, love, -1, &rt, DT_EXTERNALLEADING | DT_LEFT);
    GlobalUnlock(hResource);

    SelectObject(PaintDC,GetStockObject(BLACK_BRUSH));
    //MoveToEx(PaintDC1, pt[0].x, pt[0].y, NULL);     // Polygon has the same function
    //Polyline(PaintDC1, pt, 8);
    SetPolyFillMode(PaintDC, ALTERNATE);  
    Polygon(PaintDC, pt, 8);

    if (choice == 1)
    Ellipse(PaintDC, 550, 220, 650, 320);
    else if (choice == 2)
    Ellipse(PaintDC, 550, 230, 650, 380);
    else if (choice == 4)
    Rectangle(PaintDC, 550, 220, 650, 320);
    else if (choice == 5)
    Rectangle(PaintDC, 550, 230, 650, 380);
    else if (choice == 3)
    {
        POINT ptTri[4] = {600, 220, 650, 320, 550, 320, 600, 220};
        Polyline(PaintDC, ptTri, 4);
    }
    else
        TextOut(PaintDC, 600, 310, "hahahaha!", 9);
    //BitBlt(PaintDC, 0, 0, 1000, 600, PaintBuffer, 0, 0, SRCCOPY);
    EndPaint(hWnd, &ps);

}

void yrjd_OnTimer(HWND hWnd, UINT nIDEvent)
{
    choice = (choice + 1) % 6;
    InvalidateRect(hWnd, NULL, TRUE);   
}

怎么实现双缓冲啊 大牛能在我这个实例上指导下吗

[ 本帖最后由 有容就大 于 2012-5-3 21:32 编辑 ]

梅尚程荀
马谭杨奚







                                                       
2012-05-03 21:23
小赵q1
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:492
专家分:777
注 册:2011-8-26
收藏
得分:5 
到这里参考一下吧,我替你找了一下:
http://topic.
2012-05-03 21:33
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 4楼 小赵q1
他的例子是加载位图的 我加载的是一个txt文档 不知道能不能通用 貌似CreateCompatibleBitmap没用武之地吧。

梅尚程荀
马谭杨奚







                                                       
2012-05-03 21:43
小赵q1
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:492
专家分:777
注 册:2011-8-26
收藏
得分:0 
回复 5楼 有容就大
那个论坛上很多的例子,可以到上面参考下。
2012-05-03 22:08
zanzan1986
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:100
专家分:140
注 册:2011-2-22
收藏
得分:0 
    switch (message)
    {
      HANDLE_MSG(hWnd, WM_CREATE, yrjd_OnCreate);
      HANDLE_MSG(hWnd, WM_DESTROY, yrjd_OnDestroy);
      HANDLE_MSG(hWnd, WM_PAINT, yrjd_OnPaint);
      HANDLE_MSG(hWnd, WM_TIMER, yrjd_OnTimer);
   
      default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
这段代码都没有case 语句不知到你用的是什么绝招!!!!!!!!!!!!!!!
2012-05-04 07:55
zanzan1986
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:100
专家分:140
注 册:2011-2-22
收藏
得分:5 
程序结速了,也不杀掉时间片函数,失败!!把love文本写在的父窗口客户中,那创建个编辑框干啥用??失败!!!
竟然在创建编辑框的时候用“static"静态文本类来创建真是失败中的失败!!!
2012-05-04 08:07
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 8楼 zanzan1986
哈哈 谢谢了 我去改
edit编辑框我注释掉了 直接在父窗口里载入TXT文档
不能用static 创建静态编辑框吗 ?

[ 本帖最后由 有容就大 于 2012-5-4 08:15 编辑 ]

梅尚程荀
马谭杨奚







                                                       
2012-05-04 08:13
zanzan1986
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:100
专家分:140
注 册:2011-2-22
收藏
得分:0 
回复 9楼 有容就大
最好用"edit",你这是用VC写的吗???
2012-05-04 08:24
快速回复:写了个win32基础的窗口 有些问题请教大牛们
数据加载中...
 
   



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

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