|
自定义了Button控件,其回调函数为 _cbButton,以下代码进行调用
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_0);
WM_SetCallback(hItem, _cbButton);
在 _cbButton中需要显示字符串数组,而不同的窗口调用 _cbButton时里面显示的字符串数组又不一样
比如窗口1里面要显示char *_aText[] = {" A", "B", "C"};
而窗口2里面需要显示char *_aText[] = {" D", "E", "F"};
这里试过的方法如下:
1、定义char *_aText[]为全局变量,在窗口1的回调函数中赋值{" A", "B", "C"},再调用WM_SetCallback(hItem, _cbButton);
之后在窗口2的回调函数中赋值{" D", "E", "F"},再调用WM_SetCallback(hItem, _cbButton);
其结果是,窗口1和窗口2显示的都是{" D", "E", "F"},达不到预期
2、查询WM_CALLBACK,知道typedef void WM_CALLBACK( WM_MESSAGE * pMsg);
因此想在pMsg里进行传参,但是 const void * p;指针只针对void,不能传char *类型的指针,编译错误。
struct WM_MESSAGE {
int MsgId; /* type of message */
WM_HWIN hWin; /* Destination window */
WM_HWIN hWinSrc; /* Source window */
union {
const void * p; /* Some messages need more info ... Pointer is declared "const" because some systems (M16C) have 4 byte const, byte 2 byte default ptrs */
int v;
GUI_COLOR Color;
} Data;
};
请问各位大神,有木有办法可以在使用WM_SetCallback的时候能够往里面传参数呢?谢谢~[s:126] |
|