【发布时间】:2014-07-23 22:01:22
【问题描述】:
谁能帮帮我?我有 C 编程技能,我正在尝试使用 gtk 对 gui 进行编程。我希望,通过从小部件(例如按钮)触发动作(回调函数),我可以更改属于任何其他小部件的任何条件或特征。即,允许从回调函数中完全可见,就好像所有 gui 小部件(例如单个主应用程序窗口)中的所有变量都是全局的。我怎样才能找到最接近的方法来实现这一点?到目前为止,当我尝试制作比简单的 Hello World 教程更复杂的东西时,我尝试发现使用 gtk 编程的基本概念的步骤让我感到沮丧。我还尝试使用:
/* out of main */
struct data_widgets
{
struct data_widgets * myp;
gchar **loc ; // LOCAL name
gchar **rem ; // REMOTE name
gchar **pmte ; // Plain message to encrypt filename
gchar **lem ; // Local encrypted message filename
gchar **emr ; // Encrypted message received filename
gchar **pmr ; // Plain message received filename
gchar **lopk ; // Local owner public key filename
gchar **crpk ; // Current remote public key filename
};
int main(int argc, char *argv[])
{
gchar loc_str[100] = "*"; /* LOCAL name for filechoose filter */
gchar rem_str[100] = "*"; /* REMOTE name idem */
gchar pmte_str[100]= "plainmsgtoencrypt"; /* Plain message to encrypt filename */
gchar lem_str[100] = "localencmsg"; /* Local encrypted message filename */
gchar emr_str[100] = "encmsgreceiv"; /* Encrypted message received filename */
gchar pmr_str[100] = "plainreceiv"; /* Plain message received filename */
gchar lopk_str[100]= "locownpubkey"; /* Local owner public key filename */
gchar crpk_str[100]= "remotpubkey"; /* Current remote public key filename */
struct data_widgets mydata;
mydata.loc = &loc_str;
mydata.rem = &rem_str;
mydata.pmte = &pmte_str;
mydata.lem = &lem_str;
mydata.emr = &emr_str;
mydata.pmr = &pmr_str;
mydata.lopk = &lopk_str;
mydata.crpk = &crpk_str;
mydata.myp = &mydata;
/* in main */
....
/* in my callback */
struct data_widgets *pp = (struct data_widgets *) data;
/*passing gpointer data as &mydata.myp, and doing (*pp)->(any pointer) this try fail*/
【问题讨论】:
-
我想重新表述我的帮助请求,不是在请求文献的意义上,而是执行我在段落中间提到的编程尝试,阐述修改参数小部件的广泛可见性回调函数。谢谢。
-
我不知道它有多清晰,但现在它更切题了。我将撤回我的近距离投票。感谢您的编辑。 :-)