主题:一个画图程序出现的问题,请大家帮忙看一下
最近在做一个小画图程序,程序要用到两个不同消息的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;
语句,可是那样空件就画不出线来,这是为什么?
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;