回 帖 发 新 帖 刷新版面

主题:一个画图程序出现的问题,请大家帮忙看一下

最近在做一个小画图程序,程序要用到两个不同消息的SendMessage,如果我按照注释中的方法,当然注释1和注释2的iButtonState 和 oButtonState要替代IF中的SendMessage
语句,可是那样空件就画不出线来,这是为什么?
LRESULT CALLBACK MainWndProc(HWND hWnd, UINT Msg,
                             WPARAM wParam, LPARAM lParam)
{

    HDC hDC;
    static BOOL IsDrawing = FALSE;
    static int StartX, StartY;
    static int EndX, EndY;
//    UINT iButtonState=0;
    //UINT oButtonState=0;

    
    switch(Msg)
    {
    case WM_CREATE:
        Exo.CreateStandardToolbar(hWnd, Exo.hInst);
        SendMessage(Exo.hWndToolbar, TB_SETSTATE, IDM_DRAW_ARROW, TBSTATE_CHECKED | TBSTATE_ENABLED);    
        
        return 0;

    case WM_ACTIVATE:
        Exo.Wnd.SetText("RainDrop - Untitled");
        return 0;

    case WM_LBUTTONDOWN:

        1//iButtonState = SendMessage(Exo.hWndToolbar, TB_GETSTATE, IDM_DRAW_LINE, 0);

        2//oButtonState = SendMessage(Exo.hWndToolbar, TB_GETSTATE, IDM_DRAW_FREEHAND, 0);


        if( SendMessage(Exo.hWndToolbar, TB_GETSTATE, IDM_DRAW_LINE, 0) & TBSTATE_CHECKED )
        {
            hDC = GetDC(hWnd);
            StartX = LOWORD(lParam);
            StartY = HIWORD(lParam);
        
            EndX = LOWORD(lParam);
            EndY = HIWORD(lParam);
        
            SetROP2(hDC, R2_XORPEN);

            MoveToEx(hDC, StartX, StartY, NULL);
            LineTo(hDC, EndX, EndY);
            IsDrawing = TRUE;
            ReleaseDC(hWnd, hDC);
        }
        else if(SendMessage(Exo.hWndToolbar, TB_GETSTATE, IDM_DRAW_FREEHAND, 0) & TBSTATE_CHECKED )
        {
            StartX = LOWORD(lParam);
            StartY = HIWORD(lParam);
            EndX = StartX;
            EndY = StartY;
            IsDrawing = TRUE;
        }

        return 0;

回复列表 (共2个回复)

沙发

程序不全,比如:Exo.CreateStandardToolbar(hWnd, Exo.hInst);前就看不到Exo是什么东东?其声明是什么?

板凳

程序很长,还包括一些资源,所以就没全写出来

我来回复

您尚未登录,请登录后再回复。点此登录或注册