C和Windows API:使用选项卡控件和检测选项卡更改
||
我正在使用C和Windows API编写一个小程序。我做了一个选项卡控件,并在其中有两个选项卡。
我的问题是:
我的代码可以吗?我添加了一些静态控件,但是当我更改选项卡时它们不会隐藏。我试图使制表符控制他们的父母,但没有帮助。现在,主窗口是它们的父窗口(也是标签控件的父窗口)
如果我的方法很好,那么在切换选项卡时如何隐藏控件?
我在某处读到一个好的方法是将一个对话框窗口设置为所有其他控件的父窗口,并在需要时将其隐藏?如果我需要使用它,可以请您告诉我如何使用或将我定向到教程吗?
码:
// Tab Control Declaration
hTab = CreateWindow(WC_TABCONTROL, NULL, WS_CHILD | WS_VISIBLE,
10, 10, 765, 545, hwndq, (HMENU) 1, h_hinst, NULL);
// Tab 1 : See Student Info
tie.mask = TCIF_TEXT;
tie.pszText = TEXT(\"Student Info\");
count = SendMessage(hTab, TCM_GETITEMCOUNT, 0, 0);
SendMessage(hTab, TCM_INSERTITEM, count, (LPARAM) (LPTCITEM) &tie);
// Tab 2 : Make A Question File
tie.mask = TCIF_TEXT;
tie.pszText = TEXT(\"Question Maker\");
count = SendMessage(hTab, TCM_GETITEMCOUNT, 0, 0);
SendMessage(hTab, TCM_INSERTITEM, count, (LPARAM) (LPTCITEM) &tie);
// STATIC CONTROLS
// These will not change at runtime
CreateWindow(TEXT(\"STATIC\"), TEXT(\"Enter Student Id:\"),
WS_CHILD | WS_VISIBLE | WS_GROUP | SS_LEFT,
110, 65, 200, 20,
hwndq, (HMENU) 0, NULL, NULL);
CreateWindow(TEXT(\"STATIC\"), TEXT(\"Student Name:\"),
WS_CHILD | WS_VISIBLE | SS_LEFT,
110, 135, 200, 20,
hwndq, (HMENU) 0, NULL, NULL);
CreateWindow(TEXT(\"STATIC\"), TEXT(\"Tests Taken:\"),
WS_CHILD | WS_VISIBLE | SS_LEFT,
110, 175, 200, 20,
hwndq, (HMENU) 0, NULL, NULL);
CreateWindow(TEXT(\"STATIC\"), TEXT(\"Question Answered:\"),
WS_CHILD | WS_VISIBLE | SS_LEFT,
110, 215, 200, 20,
hwndq, (HMENU) 0, NULL, NULL);
CreateWindow(TEXT(\"STATIC\"), TEXT(\"Correct Answers:\"),
WS_CHILD | WS_VISIBLE | SS_LEFT,
110, 255, 200, 20,
hwndq, (HMENU) 0, NULL, NULL);
CreateWindow(TEXT(\"STATIC\"), TEXT(\"Incorrect Answers:\"),
WS_CHILD | WS_VISIBLE | SS_LEFT,
110, 295, 200, 20,
hwndq, (HMENU) 0, NULL, NULL);
CreateWindow(TEXT(\"STATIC\"), TEXT(\"Score In Last Test:\"),
WS_CHILD | WS_VISIBLE | SS_LEFT,
110, 335, 200, 20,
hwndq, (HMENU) 0, NULL, NULL);
CreateWindow(TEXT(\"STATIC\"), TEXT(\"Overall Score:\"),
WS_CHILD | WS_VISIBLE | SS_LEFT,
110, 375, 200, 20,
hwndq, (HMENU) 0, NULL, NULL);
// DYNAMIC CONTROLS
// They change at runtime to display/accept data
st[0].name = \"Demo\";
st[0].tests_taken = \"0\";
st[0].q_ans = \"0\";
st[0].q_cor = \"0\";
st[0].q_inc = \"0\";
st[0].r_score = \"0\";
st[0].t_score = \"0\";
CreateWindow(TEXT(\"STATIC\"), st[0].name,
WS_CHILD | WS_VISIBLE | WS_GROUP | SS_LEFT,
475, 135, 200, 20,
hwndq, (HMENU) 0, NULL, NULL);
CreateWindow(TEXT(\"STATIC\"), st[0].tests_taken,
WS_CHILD | WS_VISIBLE | SS_LEFT,
475, 175, 200, 20,
hwndq, (HMENU) 0, NULL, NULL);
CreateWindow(TEXT(\"STATIC\"), st[0].q_ans,
WS_CHILD | WS_VISIBLE | SS_LEFT,
475, 215, 200, 20,
hwndq, (HMENU) 0, NULL, NULL);
CreateWindow(TEXT(\"STATIC\"), st[0].q_cor,
WS_CHILD | WS_VISIBLE | SS_LEFT,
475, 255, 200, 20,
hwndq, (HMENU) 0, NULL, NULL);
CreateWindow(TEXT(\"STATIC\"), st[0].q_inc,
WS_CHILD | WS_VISIBLE | SS_LEFT,
475, 295, 200, 20,
hwndq, (HMENU) 0, NULL, NULL);
CreateWindow(TEXT(\"STATIC\"), st[0].r_score,
WS_CHILD | WS_VISIBLE | SS_LEFT,
475, 335, 200, 20,
hwndq, (HMENU) 0, NULL, NULL);
CreateWindow(TEXT(\"STATIC\"), st[0].t_score,
WS_CHILD | WS_VISIBLE | SS_LEFT,
475, 375, 200, 20,
hwndq, (HMENU) 0, NULL, NULL);
break;
没有找到相关结果
已邀请:
0 个回复