use*_*002 5 c++ winapi combobox
我确定这个问题对所有专家来说都很简单,但我是 C++ 新手,并试图在我的程序中将组合框添加到“选项”对话框,我已经完成了以下操作,但仍然看不到组合中的任何项目盒子你能告诉我我在这里缺少什么吗?
在 Resourse.h 中: #define IDD_TRIGGER_MODE 201
在 Project.rc 中: COMBOBOX IDD_TRIGGER_MODE, 64,22,68,14,WS_TABSTOP | WS_VSCROLL | CBS_DROPDOWN
.cpp 文件中的任何内容我都有以下代码:
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;
switch (message)
{
case WM_COMMAND:
///Other codes///
case IDM_OPTIONS:
g_hToolbar = CreateDialog(hInst, MAKEINTRESOURCE(IDD_OPTION_BOX), hWnd, ToolDlgProc);
if(g_hToolbar != NULL)
{
ShowWindow(g_hToolbar, SW_SHOW);
}
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
///Other codes///
}
Run Code Online (Sandbox Code Playgroud)
ToolDlgProc 函数:
INT_PTR CALLBACK ToolDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
UNREFERENCED_PARAMETER(lParam);
HWND fgModes;
switch (message)
{
case WM_INITDIALOG:
fgModes = ::GetDlgItem(hDlg, IDD_TRIGGER_MODE);
fgModes = GetDlgItem(hDlg, IDD_TRIGGER_MODE);
if(fgModes!=NULL){
if(SendMessage(fgModes,CB_ADDSTRING,0, reinterpret_cast<LPARAM (_T("FreeRun")))==NULL){
return (INT_PTR)FALSE ;
}
return (INT_PTR)TRUE;
}
case WM_COMMAND:
if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
{
EndDialog(hDlg, LOWORD(wParam));
return (INT_PTR)TRUE;
}
break;
}
return (INT_PTR)FALSE;
}
Run Code Online (Sandbox Code Playgroud)
我对解决这个问题的任何想法都适用,谢谢
非常感谢你的帮助。但是我注意到我的代码没有问题,只是 .rc 文件中 ComboBox 的大小非常小(因为我缺乏 C++ API 的经验),所以我将其更改为 42 现在我可以看到我的项目。这是编辑后的代码:
COMBOBOX IDD_TRIGGER_MODE, 64,22,69,42,WS_CHILD|WS_VISIBLE|CBS_DROPDOWNLIST
| 归档时间: |
|
| 查看次数: |
10465 次 |
| 最近记录: |