小编Bio*_*cle的帖子

如何获取字符串的宽度(以像素为单位)(/逻辑单位)?

我在这里按照教程,将一个水平滚动条添加到列表控件.除了TextWidth()函数之外的所有东西都有用(VC++ 2012说它未定义)所以我发现了这个问题.但我不知道如何初始化hdc,所以我尝试了这个.但GetTextExtentPoint32保持返回零.

知道如何解决这个问题吗?

我的代码看起来像这样(编辑后):

SIZE Size;
HDC hdc=GetDC(hWnd);
iResult=GetTextExtentPoint32(hdc, szMessage, MESSAGE_SIZE, &Size);
Run Code Online (Sandbox Code Playgroud)

(szMessage包含用户输入)

c c++ windows string winapi

8
推荐指数
2
解决办法
4835
查看次数

SSL和Diffie-Hellman

所以我正在读这篇文章,并对Remus的回答感到惊讶.因为我认为这恰恰相反.

所以,至于我的问题.为什么使用diffie-hellman密钥交换的程序要使用共享密钥来加密/解密消息(通常)比SSL更不安全?

编辑:我知道SSL使用数字证书,但因为我的程序只与自身(客户端 - 服务器)进行通信,无论如何,对吧?

sockets encryption

6
推荐指数
1
解决办法
801
查看次数

C++从对话框中获取数据

我创建了一个简单的win32应用程序,它打开一个带有编辑控件的对话框.搜索几个小时后,我找不到从该编辑控件获取用户输入的方法并将其存储在字符串中.我认为这里的代码做了我想要的(没有测试过),但我不理解它.所以解释或其他解决方案会很好.(我正在使用VC++ 2012)

其他解决方案我发现IS C++:S

好的,我做了一个单独的消息循环,并在那里插入代码.现在看起来像这样:

INT_PTR CALLBACK IP(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    UNREFERENCED_PARAMETER(lParam);
    switch (message)
    {
    case WM_INITDIALOG:
        return (INT_PTR)TRUE;

    case WM_COMMAND:
        if (LOWORD(wParam) == IDCANCEL)
        {
            EndDialog(hDlg, LOWORD(wParam));
            return (INT_PTR)TRUE;
        }
        else if(LOWORD(wParam) == IDOK)
        {
            TCHAR szBuf[40];
            GetDlgItemText(hDlg, IDC_EDIT1, szBuf, 39);
              //Breakpoint here!
              //szBuf="127.0.0.1" as intended :)
            EndDialog(hDlg, LOWORD(wParam));
            return (INT_PTR)TRUE;
        }
        break;
    }
    return (INT_PTR)FALSE;
}
Run Code Online (Sandbox Code Playgroud)

winapi dialog

1
推荐指数
1
解决办法
1456
查看次数

默认按钮只能工作一次

我有一个简单的对话框,其中包含一个列表框,编辑框和两个按钮,发送和清除,发送是默认设置.按下时,将从编辑框中读取字符串并将其添加到列表框中.清楚说明一切.当我第一次按下回车时一切正常,但是当我第二次按下回车时它没有响应/注册.如果单击该按钮,一切都按预期工作.

在将焦点更改回编辑框后,我尝试使用DM_SETDEFID,这没有做任何事情.

剥掉了不必要的代码,所以我希望没有什么遗漏.

INT_PTR CALLBACK CHAT(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
    case WM_INITDIALOG:
        return (INT_PTR)TRUE;

    case WM_COMMAND:
        if (LOWORD(wParam) == IDC_BUTTON1)
        {
                string strDisplay="You: "+strMessage;
                TCHAR szDisplay[MESSAGE_SIZE];
                strcpy_s(szDisplay, strDisplay.c_str());

                SendDlgItemMessage(hDlg, IDC_LIST1, LB_ADDSTRING, NULL, (LPARAM)&szDisplay);
                SetDlgItemText(hDlg, IDC_EDIT1, "");
            }
            SetFocus(GetDlgItem(hDlg, IDC_EDIT1));
        }
        else if(LOWORD(wParam) == IDC_BUTTON2)
        {
            SetDlgItemText(hDlg, IDC_EDIT1, "");
        }
        break;
    case WM_CLOSE:
        {
            EndDialog(hDlg, LOWORD(wParam));
            return (INT_PTR)TRUE;
        }
    }
    return (INT_PTR)FALSE;
}
Run Code Online (Sandbox Code Playgroud)

在资源文件中:

IDD_CHAT_DIALOG DIALOGEX 0, 0, 309, 176
STYLE DS_SETFONT | DS_MODALFRAME …
Run Code Online (Sandbox Code Playgroud)

c++ winapi

0
推荐指数
1
解决办法
259
查看次数

标签 统计

winapi ×3

c++ ×2

c ×1

dialog ×1

encryption ×1

sockets ×1

string ×1

windows ×1