dinghoulian 发表于 2019-8-27 20:48:16

hPen = GetStockObject(WHITE_PEN);这为什么错了

#include <windows.h>
#include <strsafe.h>


// Step 4: the Window Procedure
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM
        lParam)
{

        HDC hdc;
        size_t iTarget;
        TEXTMETRIC tm;
        static int cxChar, cyChar;
        static int cxClient, cyClient;//定议二个便量来存放屏幕的分辨率 水平与垂直方向二个值
        PAINTSTRUCT ps;
        TCHAR szBuffer;//定义一个缓冲区
        RECT rect;// 定义一个结构体,drawtext用到个参数,
        HPEN hPen, hOldPan;
        switch (msg)
        {
        case WM_PAINT://窗口重绘
                hdc = BeginPaint(hwnd, &ps);//注意这儿是取地址
                GetClientRect(hwnd, &rect);
                hPen = GetStockObject(WHITE_PEN);
                Ellipse(hdc, 100, 100, 200, 200);//椭圆圆形就注意坐标就可以了
                EndPaint(hwnd, &ps);
                return 0;
        case WM_CLOSE:
                DestroyWindow(hwnd);//要销毀的窗口送出WM_DESTORY消息,
                break;
        case WM_DESTROY:
                PostQuitMessage(0);
                break;
        default:
                return DefWindowProc(hwnd, msg, wParam, lParam);
        }
        return 0;

}
//------------------------------------------------------------------
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
        //第一步:注册窗口
        WNDCLASSEX wc;
        wc.cbSize = sizeof(WNDCLASSEX);//结构体的大小
        wc.style = CS_VREDRAW|CS_HREDRAW;//类的式样(CS_*),不要跟窗口式样(WS_*)混淆了
        wc.lpfnWndProc = WndProc;//指向这个回调函数
        wc.cbClsExtra = 0;//配置给这个类的额外內存.一般为0
        wc.cbWndExtra = 0;//配置给这个类的每个窗口的额外內存.一般为0
        wc.hInstance = hInstance;//应用程序实例的句柄.(从WinMain()第一个参数传递来.)
        wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);//当用戶按下Alt+Tab组合时候显示的大图标(一般为32*32)
        wc.hCursor = LoadCursor(NULL, IDC_ARROW); //在我们的窗口上显示的光标
        wc.hbrBackground = (HBRUSH)(COLOR_WINDOW);//设置我们窗口背景顏色的背景刷子.
        wc.lpszMenuName = NULL;//这个类的窗口所用的菜单资源的名字
        wc.lpszClassName = TEXT("g_szClassName");//类的名字-----
        wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);//在任务栏和窗口的左上角显示的小图标(一般为16*16)
        RegisterClassEx(&wc);

        // 第二步,建立窗口
        HWND hwnd;
        hwnd = CreateWindowEx(//是扩展的窗口式样
                WS_EX_CLIENTEDGE,//是扩展的窗口式样
                TEXT("g_szClassName"),//类的名字-----刚刚注册的类
                TEXT("我的第一个窗口"),//我们窗口的名字或是标题,用来显示在我们窗口的外观或是标题栏上
                WS_OVERLAPPEDWINDOW | WS_VSCROLL | WS_HSCROLL,//是一个窗口式样参数,第二个与第三个是水平垂直滚动条
                0,//CW_USEDEFAULT 来让系统自己选择在屏幕的哪个地方来放置窗口.
                0,//CW_USEDEFAULT,
                500,
                300,
                NULL,
                NULL,
                hInstance,
                NULL);

        ShowWindow(hwnd, nCmdShow);
        UpdateWindow(hwnd);

        MSG Msg; //定议消息结构
        while (GetMessage(&Msg, NULL, 0, 0) > 0)
        {
                TranslateMessage(&Msg);
                DispatchMessage(&Msg);
        }
        return Msg.wParam;
}

superbe 发表于 2019-8-28 22:43:31

hPen = GetStockObject(WHITE_PEN);   这行改成:

hPen = (HPEN)GetStockObject(WHITE_PEN);
SelectObject(hdc,hPen);
页: [1]
查看完整版本: hPen = GetStockObject(WHITE_PEN);这为什么错了