Форум программистов, компьютерный форум, киберфорум
Rust
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
3 / 3 / 0
Регистрация: 07.12.2013
Сообщений: 14
1

[Rust] Как привязывать WinAPI-функции к коду на Rust?

11.06.2015, 18:32. Просмотров 1600. Ответов 1
Метки нет (Все метки)

Может кто-нить дать код, КАК привязывать вин апишные функции к растовскому коду (на примере MesageBox).
https://msdn.microsoft.com/en-... s.85).aspx
Не могу въехать, что именно делать в самом коде. Главу FFI читал. Чет не получается все равно. Особенно нихрена понять не могу что там в сигнатуре функции. Про венгерскую нотацию читал, но все равно толком въехать не могу...
В СИ знания только поверхностные.
Если кто-нибудт подробно распишет, буду очень признателен...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.06.2015, 18:32
Ответы с готовыми решениями:

[Rust] Обсуждение возможностей и предстоящей роли языка Rust
Psilon, чем он тебя так привлек? И почему именно "убийца плюсов"? Если напишешь развернутый ответ,...

[Rust] Расскажите о своём опыте программирования на Rust
Доброе утро! Расскажите, пожалуйста, о своём опыте программирования на Rust. Можно в сравнении с...

Как перестать бороться с компилятором Rust
уже довольно долго пытаюсь изучать язык Rust но большую часть времени я борюсь с компилятором. и...

Апгрейд ПК для таких игр как Pubg, Rust и остальные
Хочу улучшить пк что бы смог играть в такие игры Pubg,Rust и подобное вот составляющие. Системная...

1
zzzZZZ...
524 / 355 / 94
Регистрация: 11.09.2013
Сообщений: 2,040
15.06.2015, 23:37 2
вот, но по самому коду разбираться будем вместе
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
mod ffi {
    // #[allow(improper_ctypes)]
    extern "stdcall" {
        pub fn MultiByteToWideChar(
            CodePage: u32,
            dwFlags: u32,
            lpMultiByteStr: *const u8,
            cbMultiByte: i32,
            lpWideCharStr: *mut u16,
            cchWideChar: i32
        ) -> i32;
        
        pub fn MessageBoxW(
            hWnd: *const (),
            lpText: *const u16,
            lpCaption: *const u16,
            uType: u32
        ) -> i32;
    }
    
    pub const CP_UTF8: u32 = 65001;
}
 
fn message_box(text: &str, caption: &str) {
    unsafe {
        ffi::MessageBoxW(
            std::ptr::null(),
            to_utf16(text).as_ptr(),
            to_utf16(caption).as_ptr(),
            0);
    }
}
 
fn to_utf16(s: &str) -> Vec<u16> {
    unsafe {
        let req = ffi::MultiByteToWideChar(
            ffi::CP_UTF8,
            0,
            s.as_ptr(),
            s.len() as i32,
            std::ptr::null_mut(),
            0);
            
        let req = req as usize + 1; // terminating null
        let mut buf = Vec::with_capacity(req);
        buf.set_len(req);
        
        ffi::MultiByteToWideChar(
            ffi::CP_UTF8,
            0,
            s.as_ptr(),
            s.len() as i32,
            buf.as_mut_ptr(),
            req as i32);
            
        buf
    }
}
fn main() {
    message_box("Hello!", "Title");
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.06.2015, 23:37

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

[Rust] Time
Подскажите как узнать время в Rust. //Rust extern crate time; fn main() { let now =...

Rust+assembler
Как связать язык rust и ассемблер не используя ассемблерные вставки(неудобно использовать их в...

Примитивный чат на Rust
решил попробовать написать примитивный чат на Rust. получился приблизительно следующий код: use...

Rust ошибка E0623
при компиляции появляется ошибка E0623 в документации этот номер пропущен. в чём может быть...

Frontend Для RUST
Нужна помощь! Есть класс Participant, в этом классе есть функция new. impl Participant { ///...

Неполная нагрузка в RUST
Здравствуйте. Проблема такова: в игре Rust видеокарта gigabyte gtx 1060 6gb не нагружается даже...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.