2957|2

63

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

为什么我有一简单程序,需要点一下开始键再关一下开始键才能显示出来呢. [复制链接]

//最简单最简洁的一个程序了,请直接看WM_PAINT消息里的代码
#include
#include
const TCHAR szAppName[]=TEXT("HelloCE");
HINSTANCE hInst;

LRESULT CALLBACK MainWndProc(HWND hWnd,UINT wMsg,WPARAM wParam,LPARAM lParam)
{
HDC hdc;
HPEN oldPen,newPen;
RECT rt;
LPPAINTSTRUCT ps;
switch(wMsg)
{
case WM_CREATE:
GetClientRect(hWnd,&rt);
break;
case WM_PAINT://这里就是显示一个圆和一行字,但是我这个程序需要点一下开始菜单再关一下才打的开,可以测试一下.本来应
//该是不用这么多hdc,我这里得这样写才行,什么原因啊,请大侠指定一下.
hdc=GetDC(hWnd);//得写2个hdc等于,晕 不这样写点开始菜单也没用无语。
hdc=BeginPaint(hWnd,ps);
newPen=CreatePen(PS_SOLID,1,RGB(255,0,0));
oldPen=(HPEN)SelectObject(hdc,newPen);
Ellipse(hdc,10,10,30,30);
DrawText(hdc,L"ABCDE",strlen("ABCDE"),&rt,DT_SINGLELINE|DT_CENTER|DT_VCENTER);
SelectObject(hdc,oldPen);
EndPaint(hWnd,ps);
ReleaseDC(hWnd,hdc);
break;
case WM_DESTROY:
DeleteObject(oldPen);
DeleteObject(newPen);
break;
}
    return DefWindowProc(hWnd,wMsg,wParam,lParam) ;
}

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevIntance,LPWSTR lpCmdLine,int nCmdShow)
{
    MSG msg;
    int rc=0;
    HWND hwndMain;
   
    WNDCLASS wc;
    wc.style=0;
    wc.lpfnWndProc=MainWndProc;
    wc.cbClsExtra=0;
    wc.cbWndExtra=0;
    wc.hInstance=hInstance;
    wc.hIcon=NULL;
    wc.hCursor=NULL;
    wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
    wc.lpszMenuName=NULL;
    wc.lpszClassName=szAppName;
    if (!RegisterClass (&wc))
    {
        MessageBox (NULL, TEXT ("This program requires Windows NT!"),szAppName, MB_ICONERROR) ;
        return 0 ;
    }
    hwndMain=CreateWindow(szAppName,TEXT("Hello"),WS_VISIBLE,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
    ShowWindow(hwndMain,nCmdShow);
    UpdateWindow(hwndMain);

    while(GetMessage(&msg,NULL,0,0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;
}

最新回复

LRESULT CALLBACK MainWndProc(HWND hWnd,UINT wMsg,WPARAM wParam,LPARAM lParam) {   HDC hdc;   HPEN oldPen,newPen;   RECT rt;   PAINTSTRUCT ps;   switch(wMsg)   {   case WM_CREATE:     GetClientRect(hWnd,&rt);     newPen=CreatePen(PS_SOLID,1,RGB(255,0,0));     return 0;   case WM_PAINT:     hdc=BeginPaint(hWnd, &ps);     oldPen=(HPEN)SelectObject(hdc,newPen);     Ellipse(hdc,10,10,30,30);     DrawText(hdc, L"ABCDE",strlen("ABCDE"),&rt,DT_SINGLELINE|DT_CENTER|DT_VCENTER);     SelectObject(hdc,oldPen);     EndPaint(hWnd, &ps);     return 0;   case WM_DESTROY:     DeleteObject(newPen);     return 0;   }   return DefWindowProc(hWnd,wMsg,wParam,lParam) ; } 复制代码 不用每次都创建pen, 另外将LPPAINTSTRUCT ps  ---->>>> PAINTSTRUCT ps  详情 回复 发表于 2009-12-10 11:11
点赞 关注

回复
举报

76

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
点一下开始再关一下开始键,会执行刷新操作。
Invalidate(true) 试试。
 
 

回复

56

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

  1. LRESULT CALLBACK MainWndProc(HWND hWnd,UINT wMsg,WPARAM wParam,LPARAM lParam)
  2. {
  3.   HDC hdc;
  4.   HPEN oldPen,newPen;
  5.   RECT rt;
  6.   PAINTSTRUCT ps;
  7.   switch(wMsg)
  8.   {
  9.   case WM_CREATE:
  10.     GetClientRect(hWnd,&rt);
  11.     newPen=CreatePen(PS_SOLID,1,RGB(255,0,0));
  12.     return 0;
  13.   case WM_PAINT:
  14.     hdc=BeginPaint(hWnd, &ps);
  15.     oldPen=(HPEN)SelectObject(hdc,newPen);
  16.     Ellipse(hdc,10,10,30,30);
  17.     DrawText(hdc, L"ABCDE",strlen("ABCDE"),&rt,DT_SINGLELINE|DT_CENTER|DT_VCENTER);
  18.     SelectObject(hdc,oldPen);
  19.     EndPaint(hWnd, &ps);
  20.     return 0;
  21.   case WM_DESTROY:
  22.     DeleteObject(newPen);
  23.     return 0;
  24.   }
  25.   return DefWindowProc(hWnd,wMsg,wParam,lParam) ;
  26. }

复制代码


不用每次都创建pen, 另外将LPPAINTSTRUCT ps  ---->>>> PAINTSTRUCT ps
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表