注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

deisp的博客

 
 
 

日志

 
 

MiniGUI 增值版应用开发 - 图片按钮问题请教:两种创建按钮的方法为什么一个OK,一个却不行呢  

2008-09-02 10:48:11|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |


cake    



威望: 0


现金: 2747 雷傲元
存款: 没开户
贷款: 没贷款

在线: 21 时 21 分 20 秒

注册日期: 2004/10/22
   



威望: 0


现金: 2747 雷傲元
存款: 没开户
贷款: 没贷款

在线: 21 时 21 分 20 秒

注册日期: 2004/10/22
        
static BITMAP ca;

(1) CreateWindow (CTRL_BUTTON, "",
WS_VISIBLE | BS_BITMAP | WS_CHILD,
IDC_CA,  36, 28, 88, 30, hWnd, &ca);
这样写就可以给按钮贴上图片.

(2) static CTRLDATA CtrlMyData[] =
{
 {
       "button",
       WS_CHILD | WS_VISIBLE | BS_BITMAP,
       36, 28, 88, 30,
       IDC_CA,
       &ca,    //warning:initialization from incompatible pointer type.  
       0
   },
第二种方法写就不行,按钮上是空的.
请问用第二种方法应该怎么改啊?
我也看了以前的贴子,可是还是不行.
哪位知道的麻烦告诉一下啊.谢了先!!



版权所有,不得擅自转载


kongming  头衔: 论坛坛主



威望: 0


现金: 18785 雷傲元
存款: 没开户
贷款: 没贷款

在线: 145 时 52 分 05 秒

注册日期: 未知
 头衔: 论坛坛主



威望: 0


现金: 18785 雷傲元
存款: 没开户
贷款: 没贷款

在线: 145 时 52 分 05 秒

注册日期: 未知
cake    



威望: 0


现金: 2747 雷傲元
存款: 没开户
贷款: 没贷款

在线: 21 时 21 分 20 秒

注册日期: 2004/10/22
   



威望: 0


现金: 2747 雷傲元
存款: 没开户
贷款: 没贷款

在线: 21 时 21 分 20 秒

注册日期: 2004/10/22
amokaqi    



威望: 0


现金: 225 雷傲元
存款: 196400514 雷傲元
贷款: 没贷款

在线: 345 时 38 分 37 秒

注册日期: 2002/07/02
   



威望: 0


现金: 225 雷傲元
存款: 196400514 雷傲元
贷款: 没贷款

在线: 345 时 38 分 37 秒

注册日期: 2002/07/02
        
typedef struct _CTRLDATA
{
   char*       class_name;             /** class name of the control */
   DWORD       dwstyle;                /** control style */
   int         x, y, w, h;             /** control position in dialog */
   int         id;                     /** control identifier */
   const char* caption;                /** control caption */
   DWORD       dwAddData;              /** additional data */
   DWORD       dwExstyle;              /** control extended style */
} CTRLDATA;
typedef CTRLDATA* PCTRLDATA;


版权所有,不得擅自转载


cake    



威望: 0


现金: 2747 雷傲元
存款: 没开户
贷款: 没贷款

在线: 21 时 21 分 20 秒

注册日期: 2004/10/22
   



威望: 0


现金: 2747 雷傲元
存款: 没开户
贷款: 没贷款

在线: 21 时 21 分 20 秒

注册日期: 2004/10/22
        
楼上大哥能不能说清楚点啊。这个结构我也看过了。
改成:(char*)&ca;
倒是没有错误提示了,可是按钮还是空的啊。
还有啊,对话框的背景图片我也是用的 ca .
背景可以显示。说明ca应该没有问题吧。

感谢两位老大的帮助!

我把程序的主要结构贴一下吧,看是不是其它地方错了。
static BITMAP b_data;

static DLGTEMPLATE DlgMyData =

{

   WS_BORDER | WS_CAPTION,

   WS_EX_NONE,

   0, 0, 300, 280,

   "主菜单",

   0, 0,

   6, NULL,

   0

};

static CTRLDATA CtrlMyData[] =

{

 {

       "button",

       WS_CHILD | WS_VISIBLE | BS_BITMAP,

       36, 28, 88, 30,

       ID_DATA,

       &b_data,

       0

   },

};

static char* prompts [] = {

   "日期时间",

   "工具",

};

static void m_data (HWND hDlg)

{

   char date [1024] = "your data is here";

   MessageBox (hDlg,date,"data",MB_OK | WS_HSCROLL | WS_VSCROLL);

}

static void my_notif_proc (HWND hwnd, int id, int nc, DWORD add_data)

{

   if (nc == BN_SETFOCUS) {

       SetWindowText (GetDlgItem (GetParent (hwnd), ID_PROMPT), prompts [id - ID_DATA]);

   }

   if (nc == BN_CLICKED) {

             if (id == ID_DATA)

                    m_data(GetParent (hwnd));

      }

}

static int DialogBoxProc2 (HWND hDlg, int message, WPARAM wParam, LPARAM lParam)

{

   switch (message) {

   case MSG_INITDIALOG:

     {

           int i;

           for (i = ID_DATA; i <= ID_TOOL; i++)

               SetNotificationCallback (GetDlgItem (hDlg, i), my_notif_proc);

       }

      return 1;

   case MSG_ERASEBKGND:

        {

           HDC hdc = (HDC)wParam;

           const RECT* clip = (const RECT*) lParam;

           BOOL fGetDC = FALSE;

           RECT rcTemp;

           

           if (hdc == 0) {

               hdc = GetClientDC (hDlg);

               fGetDC = TRUE;

           }

           if (clip) {

               rcTemp = *clip;

               ScreenToClient (hDlg,&rcTemp.left,&rcTemp.top);

               ScreenToClient (hDlg,&rcTemp.right,&rcTemp.bottom);

               IncludeClipRect (hdc,&rcTemp);

            }

            FillBoxWithBitmap (hdc,rcTemp.left,rcTemp.top,0,0,&b_data);

            if (fGetDC)

                ReleaseDC(hdc);

            return 0;

         }        

   case MSG_COMMAND:

       switch (wParam) {

       case IDOK:
       case IDCANCEL:

           EndDialog (hDlg, wParam);

           break;

       }

       break;

       

   }

   

   return DefaultDialogProc (hDlg, message, wParam, lParam);

}

int MiniGUIMain (int argc, const char* argv[])

{

#ifdef _LITE_VERSION

   SetDesktopRect(0, 0, 1024, 768);

#endif

   if (LoadBitmap (HDC_SCREEN,&b_data," DATA.jpg")) return 1;

   

   DlgMyData.controls = CtrlMyData;

   

   DialogBoxIndirectParam (&DlgMyData, HWND_DESKTOP, DialogBoxProc2, 0L);

   

   UnloadBitmap (&b_data);

   return 0;

}

#ifndef _LITE_VERSION

#include <minigui/dti.c>

#endif



版权所有,不得擅自转载


kongming  头衔: 论坛坛主



威望: 0


现金: 18785 雷傲元
存款: 没开户
贷款: 没贷款

在线: 145 时 52 分 05 秒

注册日期: 未知
 头衔: 论坛坛主



威望: 0


现金: 18785 雷傲元
存款: 没开户
贷款: 没贷款

在线: 145 时 52 分 05 秒

注册日期: 未知




引文来源  MiniGUI 增值版应用开发 - 图片按钮问题请教:两种创建按钮的方法为什么一个OK,一个却不行呢
  评论这张
 
阅读(580)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017