1,LPTEXTMETRIC 就是TEXTMETRIC *。这是在windows的头文件里定义好了的。函数要求一个地址,肯定得传递给他一个地址了。
2,在case分支里不能这样定义变量:int a=10;以前有帖子说过原因了。
   你的lptm里是不是有一个表示本结构尺寸的变量没有初始化?

解决方案 »

  1.   

    1.LPTEXTMETRIC就是 *TEXTMETRIC ,
    这在TEXTMETRIC的结构定义(wingdi.h文件)中有,
    typedef struct tagTEXTMETRICA
    {
       
        。。
    } TEXTMETRICA, *PTEXTMETRICA, NEAR *NPTEXTMETRICA, FAR *LPTEXTMETRICA;2。把cxChar,定义为long
      

  2.   

     不是没初始化,也不是在case中定义的int,在winproc中的int cxChar为何不等于static
    int cxChar,我还是不明白,like 
    LPTEXTMETRIC lptm;
    switch(msg)
    case WM_CREATE:
         GetTextMetrics(hdc,lptm);
         cxChar=lptm->tmAveCharWidth;
    .
    .
    .
    .可以编译,但执行时则提示"lptm used without defined"
    lptm(0xcccccccccc);
    why?
      

  3.   

    LPTEXTMETRIC lptm;
    lptm只是一个指针它没有指向任何被分配的内存区域,
    你可以为它分配一块TEXTMETRIC,也可以直接定义 TEXTMETRIC tm;
      

  4.   

    所以,你的lptm才为(0xcccccccccc),正好证明这个指针没有被赋初值,
    相当于“空”的意义。
      

  5.   

    case中可以写一个{}
    case xxx:
    {
        //这里就可以写了
        int a = 10;
    }
    case yyy://...