Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Создать вектор дескрипторов дочерних окон


Автор: heforma 19.4.2012, 21:45
Здравствуйте!
Я хочу получить вектор дескрипторов дочерних окон, но VS 2010 не разрешает...
вот описание ошибок:

1>------ Build started: Project: Win32, Configuration: Debug Win32 ------
1>  main.cpp
1>libcpmtd.lib(stdthrow.obj) : error LNK2019: unresolved external symbol __CrtDbgReportW referenced in function "void __cdecl std::_Debug_message(wchar_t const *,wchar_t const *,unsigned int)" (?_Debug_message@std@@YAXPB_W0I@Z)
1>E:\!Projects\Win32\Debug\Win32.exe : fatal error LNK1120: 1 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

вот код:

Код

#include <windows.h>
#include <tchar.h>
#include <vector>
using namespace std;
LRESULT CALLBACK WindowProc(HWND, UINT, WPARAM, LPARAM);
TCHAR szClassWindow[] = TEXT("Смещение меню пуск");
INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpszCmdLine, int nCmdShow)
{
    HWND hWnd;
    MSG lpMsg;
    WNDCLASSEX wcl;
    wcl.cbSize = sizeof(wcl);
    wcl.style = CS_HREDRAW | CS_VREDRAW;
    wcl.lpfnWndProc = WindowProc;
    wcl.cbClsExtra = 0;
    wcl.cbWndExtra  = 0;
    wcl.hInstance = hInst;
    wcl.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wcl.hCursor = LoadCursor(NULL, IDC_ARROW);
    wcl.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
    wcl.lpszMenuName = NULL;
    wcl.lpszClassName = szClassWindow;
    wcl.hIconSm = NULL;

    if (!RegisterClassEx(&wcl))
        return 0;

    hWnd = CreateWindowEx(
        0,
        szClassWindow,
        TEXT("Смещение меню пуск"),
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        NULL,
        NULL,
        hInst,
        NULL);

    ShowWindow(hWnd, nCmdShow);
    UpdateWindow(hWnd);

    while(GetMessage(&lpMsg, NULL, 0, 0))
    {
        TranslateMessage(&lpMsg);
        DispatchMessage(&lpMsg);
    }
    return lpMsg.wParam;
}
static vector<HWND> hBuf;
BOOL CALLBACK EnumChildProc(HWND hWnd, LPARAM lParam)
{
    hBuf.push_back(hWnd);
    wchar_t buf1[128] = {0};
    MessageBox((HWND)lParam,TEXT(""),TEXT(""),MB_OK);
    MoveWindow(hWnd,0,0,100,100,true);
    return TRUE; // продолжаем перечисление дочерних окон
}
LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMessage, WPARAM wParam, LPARAM lParam){
    HWND h;
    static int i = 0;
    static RECT rect;
    switch(uMessage){
    case WM_KEYDOWN:
        switch(wParam){
        case VK_RETURN:
            SetWindowText(hWnd,TEXT("ENTER"));
            //if(hBuf.empty()){
            h = FindWindow(TEXT("CalcFrame"), TEXT("Калькулятор"));
            EnumChildWindows(h, EnumChildProc, (LPARAM) hWnd);
            //}
            //MoveWindow(hBuf[0],0,0,100,100,true);
            break;
        case VK_ESCAPE:
            SetWindowText(hWnd,TEXT("ESCAPE"));
            break;
        }
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, uMessage, wParam, lParam);
    }
    return 0;
}


Помогите пожалуйста... 

Автор: heforma 19.4.2012, 22:10
Я поменял настройки компиляции... теперь все хорошо... сори...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)