我在API中写了一个响应按钮的函数,本来想让点击按钮时,执行COMMAND下的语句,但是程序只执行SetWindowText,不执行TextOut;
case WM_COMMAND:             
         SetWindowText(hwnd1,"sihgisgur");//改变按钮上显示的名字
         TextOut(hDc,10,200,"sfidusif",8);//输出字符串
break;后来又改为:
case WM_COMMAND:        
       if(InvalidateRect(hwnd,NULL,1))
   SetWindowText(hwnd1,"sihgisgur");
break;
case WM_PAINT:
       TextOut(hDc,10,200,"sfidusif",8);
break;
想给WM_PAINT发消息;
但是它也是只执行SetWindowText不执行TextOut;不解!!!

解决方案 »

  1.   

    hDC的指向对吗,跟踪一下,如果代码是复制的,可能有些地方看上去像空格,其实是不可见字符
      

  2.   

    不会用spy++啊
    那位兄弟解说一下详细用法啊?
      

  3.   

    这个hDC是在哪儿取得的?是用GetDC还是BeginPaint,还是兼容的内存dc?
      

  4.   

    MW_PAINT 的响应代码应从 BeginPaint() 开始 EndPaint() 结束
    还有 hWnd hWnd1 hDC 分别指向什么再检查一下
      

  5.   

    是这样的:
    hwnd=CreateWindow(lpszClassName,
    lpszTitle,
    WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    NULL,
    NULL,
    hInstance,
                      NULL);hwnd1=CreateWindow(lpszClassName1,
    "确定",
    WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON,
    m,n,
        m+50,n-20,
    hwnd,
            (HMENU)IDB_DEFPUSHBUTTON,
    hInst,
    NULL);hDc=BeginPaint(hwnd,&PtStr);
    PAINTSTRUCT PtStr;
      

  6.   

    switch(message)
    {
    case WM_CREATE:
    hDc=GetDC(hwnd);

             }
    在WndProc中
      

  7.   

    我改为,
         case WM_PAINT:
    hDc=BeginPaint(hwnd,&PtStr);
        TextOut(hDc,310,300,"11111111",8);
    EndPaint(hwnd,&PtStr);
    后,开始就运行,TextOut(hDc,310,300,"11111111",8);
    但我想的是一按按钮才运行的啊?
      

  8.   

    不能在按钮上用textout()函数,textout()函数要用在具有设备环境表的地方,比如客户区,剪裁。只能用setwindowstext()函数来改变
      

  9.   

    TO lvgg2000(吕国广):
    我试过啊,在
    COMMAND中写
    flag=1;
    在case WM_PAINT:中写if(flag==1){}
    不行的..我想也没有那么简单的TOmastercom(程式猎人) :
    我是把textout()写在那case WM_PAINT:中啊,只是想COMMAND中发给它消息让起接受到
      

  10.   

    WM_COMMAND消息的里面wParam,lParam参数你要注意。
      

  11.   

    你的flag定义在哪里了是不是应该定义为static的